summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CLAUDE.md284
1 files changed, 0 insertions, 284 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
deleted file mode 100644
index 1db43bc2..00000000
--- a/CLAUDE.md
+++ /dev/null
@@ -1,284 +0,0 @@
-# CLAUDE.md
-
-This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
-
-## Build System
-
-NeKernel uses a combination of **NeBuild** (JSON-based build tool) and **Make** for building different components.
-
-### Initial Setup
-
-```sh
-# Setup x64 project (builds libSystem, DDK, and boot components)
-./scripts/setup_x64_project.sh
-
-# Setup ARM64 project
-./scripts/setup_arm64_project.sh
-```
-
-### Building & Running
-
-```sh
-# Build boot modules (SysChk, BootNet)
-./scripts/modules_ahci_x64.sh
-
-# Build and run with AHCI support in QEMU (debug mode)
-./scripts/debug_ahci_x64.sh
-
-# Build and run with ATA PIO support
-./scripts/debug_ata_x64.sh
-
-# Release builds
-./scripts/release_ahci_x64.sh
-```
-
-### Component-Specific Builds
-
-```sh
-# Build kernel only (from src/kernel/)
-make -f amd64-desktop.make all
-
-# Build bootloader (from src/boot/)
-make -f amd64-desktop.make efi
-make -f amd64-desktop.make epm-img
-
-# Build libSystem (from src/libSystem/)
-nebuild libSystem.json
-
-# Build DDK (from src/ddk/)
-nebuild ddk.json
-```
-
-### Testing
-
-Tests use the KernelTest.fwrk framework:
-
-```sh
-# Test files are in test/<component>_test/
-# Example: test/kout_test/kout.test.cc
-
-# Test structure:
-KT_DECL_TEST(TestName, []() -> bool { /* test logic */ });
-KT_TEST_MAIN() { KT_RUN_TEST(TestName); return KT_TEST_SUCCESS; }
-```
-
-### Code Formatting
-
-**Always run before committing:**
-
-```sh
-./format.sh
-```
-
-Uses `.clang-format` config (Google style, 100 column limit, 2-space indent).
-
-## Architecture Overview
-
-NeKernel is a modern microkernel-style OS with clean separation between kernel, drivers (DDK), and userland (libSystem).
-
-### Boot Flow
-
-```
-Firmware (UEFI/EFI) → Bootloader (BootKit) → Handover Protocol → Kernel Init
-```
-
-**Handover Protocol** (`FirmwareKit/Handover.h`):
-- Passes `BootInfoHeader` with kernel/libSystem addresses, 4GB memory bitmap, GOP framebuffer, firmware tables
-- Magic: `0xBADCC`, Version: `0x0117`
-
-### Core Architecture
-
-**Three-Layer Design:**
-
-```
-Userland (libSystem.dll)
- ↓ System Calls (hash-based routing)
-Kernel (DDK/DriverKit)
- ↓ HAL abstraction
-Hardware
-```
-
-### Kernel Organization ("Kit" Modules)
-
-Located in `src/kernel/`:
-
-- **NeKit**: Foundation (ErrorOr<T>, Ref, Array, Stream, JSON/TOML, Vettable concept)
-- **KernelKit**: Schedulers (ProcessScheduler, UserProcessScheduler, KernelTaskScheduler), process trees (Red-Black tree), PCI/DMA
-- **HALKit**: Hardware abstraction (AMD64, ARM64, PowerPC, RISC-V)
-- **FSKit**: Filesystems (NeFS, Ext2+IFS, OpenHeFS)
-- **StorageKit**: Device drivers (AHCI, ATA, SCSI, NVME)
-- **DeviceMgr**: Template-based device interface `IDevice<T>` with `IOBuf<T>` for DMA
-- **DriveMgr**: Drive abstraction with `DriveTrait` structs
-- **FileMgr**: VFS abstraction `IFilesystemMgr`, `FileStream<Encoding>` template
-- **FirmwareKit**: EFI/UEFI, GPT/EPM partition schemes
-- **NetworkKit**: IPC protocol (128-bit addressing: ProcessID:Team, CRC32 validation)
-- **SignalKit**: Signal generation (SIGKILL, SIGPAUSE, SIGSEGV, etc.)
-- **CodeMgr**: Executable formats (PE, PEF, PE32, XCOFF, ZXD)
-- **HeapMgr, SwapKit, DmaKit**: Memory management
-- **UserMgr**: User/privilege management (Ring 1, 2, 3)
-- **TraceSrv**: Tracing and debugging
-
-### System Calls (libSystem API)
-
-Located in `src/libSystem/SystemKit/System.h`. Uses reference types (`Ref` with hash+pointer).
-
-Key APIs:
-- **File I/O**: `IoOpenFile`, `IoReadFile`, `IoWriteFile`, `IoSeekFile`, `IoCtrlFile`
-- **Process**: `RtlSpawnProcess`, `RtlExitProcess`, `RtlSpawnIB` (threads)
-- **Memory**: `MmCreateHeap`, `MmDestroyHeap`, `MmCopyMemory`
-- **Threading**: `ThrCreateThread`, `ThrYieldThread`, `ThrJoinThread`
-- **Filesystem**: `FsCopy`, `FsMove`, `FsCreateDir`, `IfsMount`, `DrvMountDrive`
-- **Dynamic Loading**: `LdrOpenDylibHandle`, `LdrGetDylibSymbolFromHandle`
-- **Power**: `PwrReadCode`, `PwrSendCode` (shutdown/reboot)
-- **Scheduler**: `SchedSetAffinity`, `SchedFireSignal`, `SchedGetCurrentProcessID`
-- **Events**: `EvtAddListener`, `EvtDispatchEvent`
-
-### DDK (Device Driver Kit)
-
-Located in `src/libDDK/DriverKit/`:
-
-**C API**:
-- `ke_call_dispatch()` - kernel dispatch
-- `ke_set_syscall(slot, function_pointer)` - register syscalls
-- `kalloc/kfree` - kernel heap
-- `DDK_DEVICE` struct with function pointers (read/write/open/close/seek)
-- `DDK_OBJECT_MANIFEST` for exposing kernel objects via `ke_get_obj`/`ke_set_obj`
-
-**C++ Wrapper**: `IDriverBase` concept with `IsValidDriver` template concept
-
-### Error Handling
-
-Uses `ErrorOr<T>` template pattern (`src/kernel/NeKit/ErrorOr.h`):
-
-```cpp
-ErrorOr<T> result = someFunction();
-if (result) {
- auto value = result.Value();
-} else {
- auto error = result.Error(); // kErrorFileNotFound, kErrorHeapOutOfMemory, etc.
-}
-```
-
-37+ error codes defined in `KernelKit/KPC.h`.
-
-## Key Architectural Patterns
-
-### Vettable Concept (New API)
-
-Replaces old `IsAcceptable` concept for marking schedulable vs non-schedulable entities:
-
-```cpp
-// Mark a type as schedulable
-#define NE_VETTABLE static constexpr BOOL kVettable = YES
-
-// Mark as non-schedulable (kernel-only)
-#define NE_NON_VETTABLE static constexpr BOOL kVettable = NO
-
-// Concept usage
-template <class Type>
-concept IsVettable = requires(Type) { (Type::kVettable); };
-```
-
-**UserProcess** is `NE_VETTABLE`, **KernelTask** is `NE_NON_VETTABLE`.
-
-### Process Scheduling
-
-Multi-threaded scheduler with Team model (`KernelKit/UserProcessScheduler.h`):
-- **Process Teams**: Low, Mid, High, RealTime priority
-- **Affinities**: VeryLow, Low, Standard, High, VeryHigh, RealTime (nanosecond-level time slicing)
-- **Process Status**: Starting, Running, Killed, Frozen, Finished
-- **Subsystems**: Security, User, Service, Driver, Kernel
-- **Resource Trees**: Red-Black tree for heap/file/special resources per process
-- **Limits**: 128GB memory limit, 8KB stack size per process
-
-### NeFS Filesystem
-
-Custom filesystem inspired by HFS+ (`FSKit/NeFS.h`):
-- **Fork Model**: Separate data and resource forks
-- **Catalog-Based**: Similar to Mac HFS catalog structure
-- **Buddy Allocation**: With sibling tracking
-- **Catalog Kinds**: File, Directory, Alias, Executable, Device, etc.
-- **Framework Convention**: `.fwrk/`, `.app/` directory suffixes
-
-### IPC (Inter-Process Communication)
-
-128-bit addressing model (`NetworkKit/IPC.h`):
-- **Address**: ProcessID (64-bit) + Team (64-bit)
-- **Message**: No payload limit, CRC32 validation
-- **Endianness**: Configurable (LE/BE/mixed)
-
-## Important Files for Understanding Architecture
-
-1. `src/kernel/FirmwareKit/Handover.h` - Boot protocol and firmware handover
-2. `src/kernel/KernelKit/UserProcessScheduler.h` - Process scheduling model
-3. `src/kernel/KernelKit/DriveMgr.h` - Device abstraction layer
-4. `src/kernel/FSKit/NeFS.h` - Custom filesystem implementation
-5. `src/libSystem/SystemKit/System.h` - Userland system call API
-6. `src/kernel/NeKit/Vettable.h` - Type concept system for schedulability
-7. `src/kernel/NetworkKit/IPC.h` - Inter-process communication
-8. `src/kernel/NeKit/ErrorOr.h` - Error handling pattern
-
-## Development Notes
-
-- **Language**: C++20 with concepts, templates, and no exceptions/RTTI
-- **Compiler**: MinGW GCC (x86_64-w64-mingw32-g++), Clang for some targets
-- **Assembler**: NASM
-- **Build Tools**: NeBuild (custom JSON-based) + Make
-- **Supported ISAs**: AMD64, ARM64, PowerPC, RISC-V
-- **Partition Schemes**: EPM (custom), GPT, MBR
-- **Subsystem**: Windows subsystem 17 for libSystem.dll
-
-## Common Patterns to Follow
-
-### Template-Based Abstractions
-
-```cpp
-// Device abstraction
-IDevice<T> → IDevice<IMountpoint*>
-
-// File streams with encoding
-FileStream<Encoding, FSClass>
-
-// DMA buffers
-IOBuf<T>
-```
-
-### Reference Types
-
-System calls use reference-based handles (hash + pointer) instead of raw integers for type safety.
-
-### Concept-Based Constraints
-
-- `IsVettable` - Marks schedulable types
-- `IsValidDriver` - Validates driver implementations
-
-## Tools & Utilities
-
-Located in `tools/` and `public/tools/`:
-
-- **mkfs.hefs.cc** - Create HeFS filesystems
-- **chk.hefs.cc** - Check/repair HeFS filesystems
-- **kimg.py** - Create disk images
-- **mkfwrk.py** - Package frameworks (.fwrk)
-- **mkapp.py** - Package applications (.app)
-
-## Debugging
-
-```sh
-# Run with GDB
-./gdb.sh
-
-# Run with LLDB
-./scripts/lldb.sh
-```
-
-## CI/CD
-
-```sh
-# Kernel CI build (x64)
-./scripts/kernel_ci_x64.sh
-```
-
-GitHub Actions run on commits:
-- `boot-ahci-dev.yml` - Boot tests with AHCI
-- `kernel-ahci-dev.yml` - Kernel tests with AHCI