diff --git a/help/Source Map.md b/help/Source Map.md index 4f0db50..25984d6 100644 --- a/help/Source Map.md +++ b/help/Source Map.md @@ -44,7 +44,26 @@ This file contains a list and description of the files and folders in the source - `uefi_loader.s` Second stage of the UEFI boot loader. - `cross/` Contains the cross compiler toolchain. - `bin2/` When using the pre-built toolchain, wrappers of the executables in `bin/` are stored here. These are needed to replace the system root path that was hard coded into the toolchain when it was configured. -- `desktop/` TODO +- `desktop/` The desktop and user interface. + - `prefix.h` The prefix for the C/C++ API header. Contains various macros and things. + - `crt1.c` Implementation of `_start` for executables running under the POSIX subsystem. Calls into the C standard library which will call `main`. + - `crtglue.c` Redirection of POSIX system calls into `posix.cpp`. + - `api.cpp` The main file of the desktop, including initialisation, work queues, user tasks, instances, undo stack management, command management, mount point management, and message processing. + - `desktop.cpp` The desktop environment, including container windows, the task bar, the wallpaper, device management, and global initilisation. + - `gui.cpp` The user interface. Contains core functionality and various elements. More complicated elements are split off into their own files. + - `inspector.cpp` The debug inspector for the user interface. + - `list_view.cpp` The list view UI element. + - `posix.cpp` The userland implementation of the POSIX subsystem. + - `profiling.cpp` Hooks for profiling with the [gf extension pack](https://github.com/nakst/gf). + - `renderer.cpp` Rendering of 2D vector graphics. + - `settings.cpp` The settings application. + - `syscall.cpp` Wrappers of system calls. + - `text.cpp` Text rendering, shaping and planning. + - `textbox.cpp` The textbox UI element. + - `theme.cpp` Theming and rendering for the user interface. More complicated rendering is handled by `renderer.cpp`. Uses the theme file made by `util/designer2.cpp` and stored in `res/Theme.dat`. + - `icons.header` A list of constants for each of the icons in the standard icon pack. Automatically generated by `util/render_svg.c`. + - `os.header` The API header itself. Language specific headers are generated by `util/header_generator.c`. + - `styles.header` A list of styles available in the theme. Automatically generated by `util/designer2.cpp`. - `drivers/` Drivers linked into the kernel. - `acpi.cpp` Simple ACPI layer. Parses the MADT for loading other processors. - `acpi_thermal.cpp` ACPI thermal layer. Requires ACPICA. @@ -69,7 +88,26 @@ This file contains a list and description of the files and folders in the source - `usb_hid.cpp` USB HID class devices, including keyboards, mice and game controllers. - `xhci.cpp` xHCI USB controller driver. - `help/` You are here! Contains documentation about the project. -- `kernel/` TODO +- `kernel/` The kernel. + - `kernel.h` Internal definitions for the kernel, including tweakable constants for the memory and cache managers, a list of functions that need to be implemented by the architecture specific layer, and includes for all the components of the kernel. + - `module.h` The header file to be included by drivers that will be linked into the kernel or loaded as separate modules. + - `cache.cpp` The cache manager, used by the file system manager. Provides `CCSpace` which can be read and written to with `CCSpaceAccess`. + - `drivers.cpp` Management of drivers and device objects. + - `elf.cpp` Loading ELF executables. + - `files.cpp` The file system manager. Provides caching of directory structures and enumeration of file systems. + - `graphics.cpp` Graphics routines. + - `main.cpp` Initialisation and shut down. + - `memory.cpp` The memory manager. Manages physical memory and virtual memory spaces. + - `networking.cpp` The networking stack. Work in progress. + - `objects.cpp` Includes object management and other IPC mechanisms: Opening/closing references to objects, handle tables, message queues, pipes and constant buffers. + - `posix.cpp` The kernel side implementation of the POSIX subsystem. + - `scheduler.cpp` The scheduler and management of threads and processes. + - `symbols.cpp` Management of kernel symbols for linking with driver modules. This is kept as a separate translation unit so that it can receive a list of the functions available in the main kernel translation unit before all being linked together. + - `synchronisation.cpp` Contains implementations of the synchronisation primitives and objects that the scheduler supports. + - `syscall.cpp` The system call interface, between the desktop and kernel. Note that the system call interface is an internal implementation detail and is *not* an API. + - `terminal.cpp` Terminal/serial output and debugging utilities. + - `windows.cpp` The window manager. + - `config.ini` A list of components and drivers available to the kernel. Drivers can specify a parent driver or module which will load them if a device they manage is enumerated. - `ports/` Ported application, including dependencies. - `res/` Resources, such as fonts and images. - `Fonts/` Fonts. Licenses are contained in this folder.