mirror of https://gitlab.com/nakst/essence
15 KiB
15 KiB
Source map
This file contains a list and description of the files and folders in the source tree.
apps/Builtin applications. Each application has an.inifile that is automatically detected by the build system.samples/Sample applications, demonstrating a small part of the API.hello.cA hello world GUI application. Read through this first if you want to learn how to write applications for Essence!converter.cppA simple currency converter. Demonstrates panels, buttons, and textboxes.game_loop.cppA simple game loop. Demonstrates how to draw directly to the window with a custom UI element, and manually process keyboard input events.list.cppA sample of the fixed items mode of the list view.
file_manager/The file manager application.commands.cppImplementation of commands like copy and paste.folder.cppContains implementations of namespaces, like file system folders and the drives page.main.cppMain message loop, and settings management.string.cppString and path utilities.type_database.cppManagement of file types.ui.cppCreates and manages the user interface. Contains the thumbnail generator.
arch/Contains target architecture specific files. Each architecture is placed in a separate folder, named after the target name. Note that some architecture specific code is also located inboot/. The folder will contain the following files:kernel.sThe assembly translation unit that will be linked with the kernel.kernel.cppThe C++ translation unit that will be linked with the kernel. Together withkernel.s, this should provide all the functions listed in the architecture specific layer part of thekernel/kernel.h.api.sThe assembly translation unit that will be linked with the desktop. This must provide a system call interface, as well as a few miscellaneous functions.config.iniSpecifies additional compilation flags for the architecture.
bin/Contains the output of the build system that will not be copied onto the drive image.Logs/Contains various logs of the build processes and emulators.net.datNetwork packets captured and sent by Qemu.audio.wavAudio captured by Qemu.qemu_serial1.txtSerial output captured by Qemu.system.logA list of commands passed tosystem()byutil/build.c, including the time each command took.
cache/Cached files downloaded from the internet, managed by theget-sourcecommand in the build system.generated_code/Automatically generated code.build.iniThe build configuration file that is passed fromutil/build.ctoutil/build_core.c. Save this if you want to automate a specific build.build_config.iniThe configuration file forutil/build.c. Stores whether the user has read the license, and information about the cross compiler toolchain.config.iniThe configuration file modified byutil/config_editor.c(open by running theconfigcommand in the build system). The full list of options in the file is stored in theoptionsarray inutil/build_common.h.dependencies.iniSaved information about source file dependencies used by theutil/build_core.cfor minimal rebuilds.driveThe output drive image, used to boot the emulators.- Additionally, there is an ELF executable file with debug symbols for each of the built applications, the desktop, the kernel and the build utilities.
boot/Contains boot code for different architectures, before the kernel is reached.x86/Boot code for x86 PC platforms.mbr.sFirst stage of the MBR boot loader. Placed in the first sector of the drive.mbr-emu.sAn alternative version ofmbr.sfor CD-ROMs rather than hard drives.esfs-stage1.sSecond stage of the MBR boot loader. Placed in the first sector of the EsFS partition. Loaded by the first stage.loader.sThird stage of the MBR boot loader. Placed in the reserved area of the EsFS partition. Loaded by the second stage.esfs-stage2.sFile system specific code for the third stage of the MBR boot loader.vbe.sContains code to select and set a video mode for the MBR boot loader; part of the third stage.uefi.cFirst stage of the UEFI boot loader.uefi_loader.sSecond stage of the UEFI boot loader.
cross/Contains the cross compiler toolchain.bin2/When using the pre-built toolchain, wrappers of the executables inbin/are stored here. These are needed to replace the system root path that was hard coded into the toolchain when it was configured.
desktop/The desktop and user interface.prefix.hThe prefix for the C/C++ API header. Contains various macros and things.crt1.cImplementation of_startfor executables running under the POSIX subsystem. Calls into the C standard library which will callmain.crtglue.cRedirection of POSIX system calls intoposix.cpp.api.cppThe main file of the desktop, including initialisation, work queues, user tasks, instances, undo stack management, command management, mount point management, and message processing.api_tests.cppTests for the API. Called by the build system commandrun-tests.desktop.cppThe desktop environment, including container windows, the task bar, the wallpaper, device management, and global initilisation.gui.cppThe user interface. Contains core functionality and various elements. More complicated elements are split off into their own files.inspector.cppThe debug inspector for the user interface.list_view.cppThe list view UI element.posix.cppThe userland implementation of the POSIX subsystem.profiling.cppHooks for profiling with the gf extension pack.renderer.cppRendering of 2D vector graphics.settings.cppThe settings application.syscall.cppWrappers of system calls.text.cppText rendering, shaping and planning.textbox.cppThe textbox UI element.theme.cppTheming and rendering for the user interface. More complicated rendering is handled byrenderer.cpp. Uses the theme file made byutil/designer2.cppand stored inres/Theme.dat.icons.headerA list of constants for each of the icons in the standard icon pack. Automatically generated byutil/render_svg.c.os.headerThe API header itself. Language specific headers are generated byutil/header_generator.c.styles.headerA list of styles available in the theme. Automatically generated byutil/designer2.cpp.
drivers/Drivers linked into the kernel.acpi.cppSimple ACPI layer. Parses the MADT for loading other processors.acpi_thermal.cppACPI thermal layer. Requires ACPICA.acpica.cppIntegration with ACPICA, which provides greater ACPI functionality.ahci.cppAHCI/SATA drives.bga.cppBochs Graphics Adapter, for setting the video mode on emulators.esfs2.cppThe Essence file system (second version).ext2.cppExt2 file system.fat.cppFAT12/16/32 file systems.hda.cppHD Audio.i8254x.cppi8254x networking card.ide.cppIDE/ATA drives.iso9660.cppISO9660 file system for CD-ROMs.ntfs.cppNTFS file system.nvme.cppNVMe drives.pci.cppPCI bus enumeration.ps2.cppPS/2 keyboard and mouse.rtc.cppx86 Real Time Clock.svga.cpp(S)VGA graphics drivers.usb.cppCommon USB management for connecting and identifying devices.usb_bulk.cppUSB bulk mass storage drives.usb_hid.cppUSB HID class devices, including keyboards, mice and game controllers.xhci.cppxHCI USB controller driver.
help/You are here! Contains documentation about the project.kernel/The kernel.kernel.hInternal 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.hThe header file to be included by drivers that will be linked into the kernel or loaded as separate modules.cache.cppThe cache manager, used by the file system manager. ProvidesCCSpacewhich can be read and written to withCCSpaceAccess.drivers.cppManagement of drivers and device objects.elf.cppLoading ELF executables.files.cppThe file system manager. Provides caching of directory structures and enumeration of file systems.graphics.cppGraphics routines.main.cppInitialisation and shut down.memory.cppThe memory manager. Manages physical memory and virtual memory spaces.networking.cppThe networking stack. Work in progress.objects.cppIncludes object management and other IPC mechanisms: Opening/closing references to objects, handle tables, message queues, pipes and constant buffers.posix.cppThe kernel side implementation of the POSIX subsystem.scheduler.cppThe scheduler and management of threads and processes.symbols.cppManagement 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.cppContains implementations of the synchronisation primitives and objects that the scheduler supports.syscall.cppThe 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.cppTerminal/serial output and debugging utilities.windows.cppThe window manager.config.iniA 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.Keyboard Layouts/Keyboard layouts. Contains a license file, andextract_keymaps.cwhich can be used to generate the keyboard layout files here from an X11 system.Sample Images/Sample images. Contains a license file. Copy these intoroot/to access them from the built system.Theme Source.datThe source for the theme file, used byutil/designer2.cpp. Open with thedesignercommand in the build system.Theme.datThe exported theme file that will be used by the UI. Callbin/designer2 exportto regenerate this from the theme source.elementary Icons.datThe elementaryOS icons pack. The icon pack is a custom format, and is generated byutil/render_svg.c.
root/Contains the output of the build system that will be copied onto the drive image. You can put any files you want to be copied onto the drive in here.shared/Shared code between different parts of the proejct, including data structures.esfs2.hDefinitions for the Essence file system, and code for managing it (compiled intoutil/build_core.c).ini.hA tiny INI file parser.arena.cppA memory allocator for arbitrary allocation and freeing of fixed size memory blocks.array.cppDynamically allocated array.avl_tree.cppAVL lookup tree, including support for searches for the "smallest above or equal" and "largest below or equal".bitset.cppEfficient large bitsets.common.cppVarious common functions, including management ofEsRectangles, rendering, string utilities, memory utilities (likeEsMemoryCopy), printing and string formatting, pseudo random number generation, standard algorithms like sorting, synchronisation primitives, byte swapping, implementation of theEsCRT-functions,EsBufferfunctions, and time and date calculations.crc.hImplementation of CRC32 and CRC64 hash functions.fat.cppCommon definitions for the FAT file system.hash_table.cppA hash table, including an implementation of the FNV1a hash function.heap.cppA memory allocator for arbitrary allocation and freeing of non-fixed size memory blocks.linked_list.cppTwo implementations of a doubly-linked list:LinkedList<T>andSimpleList<T>where the latter requires less memory but provides less features.math.cppMathematical functions, including basic utilities, interpolation routines, HSV color conversions, standard trigonometric functions, high precision floating-point calculations, and an expression parser.partitions.cppContains routines to manage MBR and GPT partition tables.png_decoder.cppA decoder of PNG image files.range_set.cppEfficiently stores a subset of the integers as a list of ranges.strings.cppAll text displayed in the user interface of the built-in applications.unicode.cppImplementations of various Unicode standards, including UTF-8 decoding and validation, and the line breaking algorithm.vga_font.cppA fixed-width bitmap font.
util/Contains utilities for developing and building the project.linker/Contains linker scripts.w32/The experimental W32 backend for the Essence desktop.x11/The experimental X11 backend for the Essence desktop.automation/Scripts for automating builds.build_common.hCommon definitions shared betweenbuild.candbuild_core.c.luigi.hA single-header cross platform GUI library.build.cThe main build system prompt, which manages dependencies, the toolchain, build configurations, and launching emulators. It is accessed by the developer by running thestart.shscript at the root of the source tree. The developer can then issue commands to build and test the operating system and other utilities.build_core.cThe heart of the build system, which actually builds the project. It is called bybuild.c, and passed a build configuration file inbin/build.iniwhich contains all possible configuration options. It can run within Essence. It is also able to build single applications, by passing the.inifile for that application.change_sysroot.cA utility that usesptraceto replace strings in system calls.toolchain_wrapper.cWraps the executables in the pre-built toolchain to call intochange_sysroot.c, to change the system root path they use.config_editor.cA graphical editor for the configuration file,bin/config.ini. Usesluigi.h.font_editor.cA basic bitmap font editor. Usesluigi.h.header_generator.cGenerates the API header for different programming languages fromdesktop/os.header. Part ofbuild_core.c.render_svg.cConverts SVGs to an internal format for vector graphics, and creates the icon pack found inres/. Despite the name this does not actually render the SVGs to bitmaps! That is eventually done inapi/renderer.cpp.designer2.cppAn editor of theme files for the UI. Usesluigi.h.uefi.shCreates a drive image using the UEFI boot loader.uefi_compile.shCompiles the UEFI boot loader.uefi_to_device.shFormats a real device to use the UEFI boot loader.api_table.iniA list of all the functions exposed by the API, and their corresponding ordinals. Managed byheader_generator.c.test.txtA file containing a few traps that might be mangled by source control or compression utilities. Verified bystart.shto ensure that the source is as we'd expect.