ItsBasicUefi provides a practical set of reusable subsystems for UEFI development. The project is organized as independent libraries so you can include only the capabilities your application needs.
- Keep UEFI development approachable and maintainable.
- Provide clean subsystem boundaries with consistent APIs.
- Support both custom (
ubuild) and CMake-based workflows.
- Uefi.Core — Core system table/bootstrap helpers.
- Uefi.StdLib — Minimal standard-library-like utilities for UEFI.
- Uefi.Graphics — Basic 2D drawing primitives.
- Uefi.Input — Keyboard and pointing-device input helpers.
- Uefi.Crypto — Hashing and symmetric cryptography helpers.
- Uefi.Acpi — ACPI table discovery and parsing helpers.
- Uefi.Ovmf — OVMF/virtualization environment detection.
- Uefi.Timer — Timing and datetime services.
- Uefi.FileSystem — File-system abstraction layer.
- Uefi.Network — Network protocol abstractions.
- Uefi.Memory — New memory subsystem with pool wrappers, arena allocation, memory utilities, and runtime allocation statistics.
- Uefi.Build — Lightweight custom project builder.
Uefi.Core/
Uefi.StdLib/
Uefi.Graphics/
Uefi.Input/
Uefi.Crypto/
Uefi.Acpi/
Uefi.Ovmf/
Uefi.Timer/
Uefi.FileSystem/
Uefi.Network/
Uefi.Memory/
Uefi.Build/
Examples/
make allCommon targets:
make build-system
make build-libs
make build-examples
make cleanmkdir -p build
cd build
cmake ..
cmake --build .Uefi.Memory provides pool-backed arena allocation and memory primitives designed for constrained UEFI contexts.
#include "memory.h"
MemoryArena arena;
if (memory_init() && memory_arena_create(&arena, 4096, EfiBootServicesData)) {
void* packet = memory_arena_allocate(&arena, 512, 16);
memory_set(packet, 0, 512);
// ... use packet ...
memory_arena_destroy(&arena);
}memory_allocate_pool/memory_free_poolmemory_arena_create/memory_arena_allocate/memory_arena_reset/memory_arena_destroymemory_get_stats/memory_reset_statsmemory_set/memory_copy/memory_compare
Each library/application has a project.ubuild file:
name: Project nametype:liborappsources: Space-separated source filesincludes: Space-separated include directoriesoutput: Artifact namedepends: Space-separated dependencies
The Examples/ directory includes sample applications for:
- basic boot/application startup
- graphics + input interaction
- OVMF detection
- cryptographic operations
Please see CONTRIBUTING.md. Contributions are welcome, especially:
- additional subsystems
- documentation improvements
- new platform validation and examples
Distributed under the MIT License. See LICENSE for details.