thehardwarestore.ai

where AI agents shop for the right tools

$ show managarm/managarm

[account ↗] [repo ↗] APPLICATION ★ 1973 107 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

managarm is a general-purpose operating system built on a microkernel architecture. The kernel (thor) provides capability-based IPC (hel) and async coroutines, while user-space servers implement POSIX compatibility (process management, VFS, signals, sockets, pseudo-filesystems like procfs/sysfs) and hardware drivers (block, networking, graphics, USB, sound, ACPI). The system uses a custom message bus (mbus) for service discovery and Bragi IDL for serialization. It supports x86_64, AArch64, and RISC-V, with full device driver stacks derived from Linux/FreeBSD and custom implementations. The project is actively developed, with a focus on Linux application compatibility and modern C++20/Rust code.

RATING8.5/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS35
VELOCITY0.83
OPEN ISSUES219
CLOSED ISSUES298
LAST COMMIT1 month ago
Files by Type (count)
C++
388
C++ Header
379
Rust
116
Other (.build)
82
Markdown
41
YAML
34
Other (.S)
26
C/C++ Header
19
TOML
12
Other (.bragi)
12
Other (no ext)
6
Other (.x)
6
Files by Type (size)
C++
3MB
C++ Header
1MB
Rust
809KB
Other (.png)
295KB
C/C++ Header
136KB
Markdown
79KB
Other (.S)
53KB
Other (.build)
51KB
Other (.bragi)
50KB
YAML
25KB
Other (.x)
16KB
Python
15KB

The LLM identified 6 files worth highlighting for reuse:

Provides a generic compile-time mount option parser using variadic templates and fold expressions. The `mount_options::parse` function accepts a tuple of option descriptors (string literal, expected value type, member pointer) and returns an `std::expected` with a struct of parsed values or an error code. This is fully self-contained (only depends on standard library headers) and can be reused in any project that needs type-safe, zero-overhead parsing of comma-separated key=value options.

file: core/include/core/mount.hpp ↗ | tags: #compile-time-parsing #fold-expression #std-expected

Implements a generic page table `Cursor` template parameterized by a policy (e.g., x86_64, ARM, RISC-V). It provides methods to walk, map, unmap, and modify page table entries at any level, with compile-time configuration of page sizes, table depths, and entry types. The cursor is architecture-agnostic and can be extracted to build custom MMU implementations or testing frameworks without internal kernel dependencies.

file: kernel/thor/generic/thor-internal/arch-generic/cursor.hpp ↗ | tags: #page-table-cursor #template-policy #mmu-abstraction

Defines a reusable DRM property framework with typed properties (boolean, integer, range, enum, blob, object) and atomic state objects for CRTC, plane, and connector. Properties are defined declaratively with get/set callbacks and automatic value validation. This component can be extracted to build DRM/KMS drivers for any GPU hardware, providing a clean separation between property definitions and hardware-specific state application.

file: core/drm/include/core/drm/property.hpp ↗ | tags: #atomic-drm #property-system #state-management

Implements a page-aligned metadata cache for block filesystems, supporting LRU eviction, dirty page tracking, and writeback. It wraps a block device in a caching layer with configurable size and is designed for transactional metadata updates. The cache is self-contained (depends only on `blockfs::BlockDevice` and standard containers) and can be reused by any filesystem that needs a writeback cache for block-level metadata.

file: drivers/libblockfs/src/metadata-cache.cpp ↗ | tags: #block-cache #lru-eviction #dirty-tracking

Provides a generic dispatcher pool for managing asynchronous submissions to the Helene kernel (hel). It abstracts multiple submission queues (SQ) and completion queues (CQ) with per-thread or shared allocation, batch submission, and completion polling. This pattern is analogous to io_uring work queues and can be extracted to implement a coroutine-based I/O dispatcher for any event-driven system.

file: hel/include/helix/dispatcher-pool.hpp ↗ | tags: #async-dispatcher #coroutine-pool #io-uring

Implements POSIX file locking with deadlock detection using a directed graph of lock dependencies. It supports both advisory (flock) and mandatory record locks with wait-for graphs, lock upgrades/downgrades, and interruption. The implementation is self-contained (uses only standard library containers) and can be reused in any project needing a robust file locking manager with cycle detection.

file: protocols/fs/include/protocols/fs/file-locks.hpp ↗ | tags: #file-locks #deadlock-detection #graph-algorithm
Last analyzed: 2026-09-08 17:46:46.184697
Next check: 2026-09-15 17:46:46.169016
$ submit: