Go to file
Vladimir Serbinenko dfac99781c memory: Don't map extra page unnecessarily
When offset2 != 0 it doesn't necessarily mean that we need an extra page.
Fix calculation to map extra page only when necesarry.

This is needed as next page may be unavailable like when available RAM
follows XSDT and hence not available for mapping.
2023-08-16 20:44:09 +02:00
apps general: bugfixes 2022-03-25 11:17:57 +00:00
arch api: cleanup error codes 2022-02-10 12:18:26 +00:00
boot/x86 files: storing file content type 2022-03-21 14:25:58 +00:00
desktop Fix handle replication logic 2023-08-06 03:21:16 +02:00
drivers esfs: prevent allocating blocks past end of file system 2022-03-21 14:53:08 +00:00
help misc: merge updates 2022-07-11 10:45:33 +01:00
kernel memory: Don't map extra page unnecessarily 2023-08-16 20:44:09 +02:00
ports general: use contentType field for file types 2022-03-24 16:58:35 +00:00
res building: moved line-count into start.script 2022-03-19 18:14:59 +00:00
shared Fix GPT sanity check for 1-sector partitions 2023-08-11 17:25:54 +00:00
util Format EFI system partition 2023-08-06 08:02:22 +02:00
.gitignore hide email 2021-08-13 21:22:26 +01:00
LICENSE.md bundle license files for mesa and gcc separately 2022-01-12 19:56:16 +00:00
README.md misc 2022-12-16 11:18:37 +00:00
start.sh misc: merge updates 2022-07-11 10:45:33 +01:00

README.md

Essence — An Operating System

Discord Automated build status

Screenshot showing the file manager, text editor, and bitmap image editor.

Video demonstration as of October 2021, running on real hardware: (YouTube)

Video demonstration as of October 2021.

For discussion, join our Discord server: https://discord.gg/skeP9ZGDK8.

Alternatively, visit the forums (not very active): https://essence.handmade.network/forums.

Supporters

To support development, you can donate to my Patreon: https://www.patreon.com/nakst.

Essence was a recipient of the prestigious 2021 Icculus Microgrant. You can view more details here: https://icculus.org/microgrant/.

Testing

You can download and test the latest nightly build from https://github.com/nakst/build-essence/releases. Download and extract Essence.tar.xz. If you are using VirtualBox, import Essence.ova. If you are using Qemu, run

qemu-kvm -drive file=drive,format=raw -m 2048 -smp 2 || qemu-system-x86_64 -enable-kvm -drive file=drive,format=raw -m 2048 -smp 2

These builds are configured to run on emulators only, to make testing easier. Builds for real hardware are coming soon :)

Building

See help/Building.md for a description of how to build and test the system.

Features

Kernel

  • Filesystem independent cache manager.
  • Memory manager with shared memory, memory-mapped files and multithreaded paging zeroing and working set balancing.
  • Networking stack for TCP/IP.
  • Scheduler with multiple priority levels and priority inversion.
  • On-demand module loading.
  • Virtual filesystem.
  • Window manager.
  • Audio mixer. (being rewritten)
  • Optional POSIX subsystem, capable of running GCC and some Busybox tools.

Applications

  • File Manager
  • Text Editor
  • IRC Client
  • System Monitor

Ports

  • Bochs
  • GCC and Binutils
  • FFmpeg
  • Mesa (for software-rendered OpenGL)
  • Musl

Drivers

  • Power management: ACPI with ACPICA.
  • Secondary storage: IDE, AHCI and NVMe.
  • Graphics: BGA and SVGA.
  • Read-write filesystems: EssenceFS.
  • Read-only filesystems: Ext2, FAT, NTFS, ISO9660.
  • Audio: HD Audio.
  • NICs: 8254x.
  • USB: XHCI, bulk storage devices, human interface devices.

Desktop

  • Custom user interface library.
  • Software vector renderer with complex animation support.
  • Tabbed windows.
  • Multi-lingual text rendering and layout with FreeType and Harfbuzz.