summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* feat: add SBI interface with ecall and timer functions for RISC-V architectureRichard Qin2026-05-021-0/+39
|
* feat: add timer interrupt enable/disable functions for RISC-V architectureRichard Qin2026-05-021-0/+15
|
* fix: change constexpr to const for size_t offset calculation in list_entryRichard Qin2026-05-021-1/+1
|
* feat: add bit manipulation utilities for kernel operationsRichard Qin2026-05-021-0/+120
|
* feat: add centralized compiler macros and integrate into rbtree headersRichard Qin2026-05-023-24/+28
|
* feat: implement kernel logging and formatted output subsystemsRichard Qin2026-05-027-51/+796
|
* feat: add tiny printf implementation for embedded systemsRichard Qin2026-05-022-0/+1043
|
* feat: add driver registration table to linker script macrosRichard Qin2026-04-291-0/+8
|
* feat: add linker script and common macros for RISC-V architectureRichard Qin2026-04-223-1/+163
|
* feat: update errno.h with comprehensive error codesRichard Qin2026-04-221-3/+114
|
* feat: enhance kernel initialization with FDT parsing and self-test integrationRichard Qin2026-04-211-22/+41
|
* feat: add boot self-tests for various kernel componentsRichard Qin2026-04-2110-0/+1314
| | | | | | | | | | | | - Implemented a self-test runner in `selftest.cc` to invoke all test suites. - Added tests for atomic operations in `test_atomic.cc`, covering construction, store/load, exchange, arithmetic, and compare-and-swap. - Created tests for the Flattened Device Tree (FDT) in `test_fdt.cc`, verifying node access and compatibility queries. - Developed a comprehensive Physical Memory Manager (PMM) test suite in `test_pmm.cc`, including allocation, deallocation, reference counting, and boundary conditions. - Implemented Red-Black Tree tests in `test_rbtree.cc`, validating insertion, deletion, and iteration. - Added Slab Allocator tests in `test_slab.cc`, covering various allocation sizes, edge cases, and operator overloads. - Created Spinlock tests in `test_spinlock.cc`, ensuring proper locking behavior and interrupt state preservation. - Developed Virtual Memory Area (VMA) tests in `test_vma.cc`, validating region mapping, unmapping, and fault handling. - Added tests for Virtual Memory Management (VMM) in `test_vmm.cc`, verifying address translation and page alignment.
* feat: add Virtual Memory Manager and Virtual Memory Area managementRichard Qin2026-04-213-0/+388
|
* feat: add SLUB allocator implementation with KmemCache managementRichard Qin2026-04-212-0/+404
|
* feat: implement Physical Memory Manager (PMM) with Buddy System and Per-CPU ↵Richard Qin2026-04-212-0/+558
| | | | Cache
* feat: add minimal C++ ABI stubs for freestanding kernelRichard Qin2026-04-212-14/+39
|
* feat: refactor Spinlock implementation to use atomic operations for lock ↵Richard Qin2026-04-212-6/+7
| | | | management
* feat: add initial implementation of PLIC and UART driversRichard Qin2026-04-212-0/+68
|
* feat: add features header and frame descriptor implementationRichard Qin2026-04-213-1/+101
|
* feat: add basic implementation and enhanced operations of red-black tree ↵Richard Qin2026-04-214-0/+1115
| | | | from Linux kernel source
* feat: Add a type-safe doubly linked list implementationRichard Qin2026-04-211-0/+292
|
* feat: add string manipulation functions derived from musl libcRichard Qin2026-04-2156-0/+2624
| | | | | | | | | | | | | | This commit introduces a variety of string manipulation functions, including: - `memmem`: Searches for a substring in a memory area. - `memmove`: Safely copies memory areas, handling overlaps. - `mempcpy`: Copies memory and returns a pointer to the end of the destination. - `memrchr`: Finds the last occurrence of a character in a memory area. - `memset`: Fills a memory area with a specified value. - `rindex`: Returns the last occurrence of a character in a string. - `stpcpy` and `stpncpy`: Copies strings and returns a pointer to the end. - `strcat`, `strchr`, `strcspn`, `strlcat`, `strlcpy`, `strlen`, `strncat`, `strncmp`, `strncpy`, `strnlen`, `strpbrk`, `strrchr`, `strstr`, `strtok`, and `strtok_r`: Various string manipulation functions for concatenation, searching, and tokenization. Assembly implementations for `memcpy`, `memmove`, and `memset` are also included for optimized performance on x86_64 architectures.
* refactor: clean up errno and types headers for consistency and clarityRichard Qin2026-04-212-15/+5
|
* feat: implement DeviceNode and FdtManager classes for device tree managementRichard Qin2026-04-212-0/+721
|
* feat: add DeviceNode, FdtManager, and FdtProperty classes for device tree ↵Richard Qin2026-04-213-0/+169
| | | | management
* feat: add address conversion and console initialization helpersRichard Qin2026-04-212-0/+86
|
* feat: implement atomic wrapper for __atomic builtinsRichard Qin2026-04-211-0/+66
|
* feat: add global compile-time configuration header for LumeOSRichard Qin2026-04-211-0/+34
|
* feat: implement SV39 page table interface and operations for RISC-V architectureRichard Qin2026-04-212-0/+222
|
* docs: add test and continuous integration specification documents, define ↵Richard Qin2026-04-211-0/+83
| | | | automated testing standards and CI processes
* docs: enhance spinlock documentation with detailed API descriptions for ↵Richard Qin2026-04-211-8/+17
| | | | interrupt management
* docs: add specifications for C++ Kernel Runtime, Flattened Device Tree, ↵Richard Qin2026-04-215-0/+846
| | | | | | | | | | Physical Memory Manager, SLUB Allocator, and Virtual Memory Manager - Introduced `cpp_runtime.md` detailing the C++ ABI stubs required for LumeOS kernel, including panic mechanisms and error paths. - Added `fdt.md` to outline the device tree management for hardware discovery and configuration, including data structures and public APIs. - Created `pmm.md` to specify the physical memory management system based on the buddy system, including frame allocation and concurrency handling. - Developed `slab.md` to describe the SLUB allocator for efficient memory allocation, detailing its structure and public APIs. - Established `vmm.md` to define the virtual memory manager's objectives, dependencies, and core data structures for managing virtual address space.
* feat: add RISC-V architecture configuration header with memory layout constantsRichard Qin2026-04-212-6/+41
|
* feat: Update Makefile and module.mk files to include additional source files ↵Richard Qin2026-04-217-6/+93
| | | | and improve build process
* feat: Add documentation for atomic operations and memory order, standardize ↵Richard Qin2026-04-212-1/+82
| | | | lock-free programming requirements
* feat: add .clang-format and .clang-tidy configuration files for code ↵Richard Qin2026-04-213-2/+84
| | | | formatting and linting
* feat: add initial RISC-V architecture support and core kernel functionalityRichard Qin2026-04-1724-8/+1618
| | | | | | | | | | | | | | | | | - Implement MMU hardware primitives for RISC-V SV39 in mmu.h - Create trap vector control primitives in trap.h - Define trap frame structure for RISC-V in trapframe.h - Add assembly routines for context switching in swtch.S - Implement trap vector entry/exit in trap_vector.S - Introduce basic error number definitions in errno.h - Provide placement new/delete operators in new.h - Define kernel panic handler in panic.h and implement in panic.cc - Establish basic type definitions in types.h - Create the kernel main entry point in main.cc with global initialization - Add synchronization primitives using spinlocks in spinlock.h and spinlock.cc - Define per-CPU state tracking for interrupts in cpu_state.h - Create a linker script for the kernel in linker.ld - Update module makefiles for kernel and library components
* docs: add global initialization, linker and entry specifications, and ↵Richard Qin2026-04-174-0/+834
| | | | | | | | spinlock documentation - Introduced global initialization sequence documentation outlining the objectives, dependencies, core data structures, public APIs, concurrency contracts, error paths, and state machine for LumeOS. - Created linker and entry documentation defining early memory layout and assembly startup sequence compatible with multiple bootloaders, including API specifications and error handling. - Added spinlock documentation detailing the implementation of spinlocks, concurrency synchronization, memory ordering guarantees, and error handling mechanisms.
* feat: add project conventionsRichard Qin2026-04-171-0/+367
|
* docs: update README to reflect architectural changes and project goalsRichard Qin2026-04-171-46/+11
|
* feat: implement FDT-based memory discovery and add comprehensive debug ↵Richard Qin2026-04-1425-380/+1256
| | | | logging to exec syscalls
* Merge pull request #7 from Richard-Qin-001/dev/shellRichard Qin2026-01-05101-3270/+845
|\ | | | | Important: License changed from MIT to GPL.
| * Important: License changed from MIT to GPL.Richard Qin2026-01-05101-3270/+845
|/ | | | Rewrote the README based on the actual project.
* Merge pull request #6 from Richard-Qin-001/dev/shellRichard Qin2026-01-0471-83670/+421
|\ | | | | A basically complete operating system has been implemented
| * dev(shell): implement basic shell toolsRichard Qin2026-01-0471-83670/+421
|/ | | | fixed(file-system): fixed read and write bugs
* Merge pull request #5 from Richard-Qin-001/dev/file-systemRichard Qin2026-01-0469-15880/+77423
|\ | | | | feat(file-system): implement read and write FAT32 File System and basic shell
| * feat(file-system): implement read and write FAT32 File System and basic shellRichard Qin2026-01-0469-15880/+77423
|/
* Merge pull request #4 from Richard-Qin-001/dev/shellRichard Qin2026-01-03125-1067/+36090
|\ | | | | | | | | Rebuilt the system's underlying structure; it is now stable enough to merge. The system now supports a read-only file system and has a simple shell implemented.
| * Fix: critical malloc size calculation bugRichard Qin2026-01-0322-8596/+8703
| | | | | | | | | | | | | | | | | | | | Summary: - Fixed an integer arithmetic error in malloc() where 'nunits' was initialized to 0, causing incorrect heap sizing. - This bug caused malloc to return pointers pointing to unmapped memory pages, leading to Store Page Fault (scause 15) at process boundaries. - Switched memory allocator logic to use byte-based size calculation instead of K&R style units to prevent off-by-one errors. Improvements: - Shell now starts successfully without segfaults.
| * dev(sell): add simple libc and implement shellRichard Qin2026-01-0266-1279/+28717
| | | | | | | | please see the log for detail.