diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-07-10 23:20:03 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-07-10 23:20:03 +0800 |
| commit | 48ef95c24e9ac3d11200b61af617a01b10b507d1 (patch) | |
| tree | 57f0e26ab98e795b19839b6eece98ca58a4b702d /kernel | |
| parent | b9ff206e6bd3f4d67851263a6f2acb5f575cf3b0 (diff) | |
| download | lume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.gz lume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.xz | |
build: introduce declarative non-recursive build graph
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/Build.mk | 11 | ||||
| -rw-r--r-- | kernel/main.cc | 6 | ||||
| -rw-r--r-- | kernel/module.mk | 26 |
3 files changed, 17 insertions, 26 deletions
diff --git a/kernel/Build.mk b/kernel/Build.mk new file mode 100644 index 0000000..8f8ffa0 --- /dev/null +++ b/kernel/Build.mk @@ -0,0 +1,11 @@ +targets += kernel/core +target.kernel/core.kind := source-set +target.kernel/core.sources := \ + kernel/main.cc kernel/sync/spinlock.cc kernel/sync/mutex.cc \ + kernel/trap.cc kernel/irq.cc kernel/sched_core.cc \ + kernel/sched_class_o1.cc kernel/timer.cc kernel/pid.cc kernel/pgrp.cc \ + kernel/task.cc kernel/syscall.cc kernel/sys_process.cc kernel/sys_mm.cc \ + kernel/sys_info.cc kernel/sys_fs.cc kernel/uaccess.cc kernel/waitqueue.cc \ + kernel/signal.cc kernel/sys_signal.cc kernel/sys_misc.cc kernel/exec.cc \ + kernel/poll.cc kernel/ptrace.cc kernel/smp.cc + diff --git a/kernel/main.cc b/kernel/main.cc index db5843c..c84f3ad 100644 --- a/kernel/main.cc +++ b/kernel/main.cc @@ -82,7 +82,9 @@ void tty_init(); // 15.5. TTY subsystem (console TTY + UART RX IRQ) void populate_rootfs(); // 15.6. Unpack embedded initramfs CPIO into ramfs // Boot self-test runner +#ifdef CONFIG_SELFTEST void selftest_run_all(); +#endif // AP per-CPU init void vmm_init_ap(); // Switch to BSP-built kernel page table @@ -100,6 +102,7 @@ static void init_thread_func(void *) { printk(KERN_INFO "[init] PID 1 started\n"); /* Run post-SMP tests — APs are online by now */ +#ifdef CONFIG_SELFTEST extern void selftest_smp(); kprintf("\n========================================\n"); kprintf(" Post-SMP Test Suite\n"); @@ -108,6 +111,7 @@ static void init_thread_func(void *) { kprintf("========================================\n"); kprintf(" Post-SMP tests PASSED\n"); kprintf("========================================\n\n"); +#endif /* * Set up init's own VFS context (like Linux kernel_init). @@ -326,7 +330,9 @@ extern "C" [[noreturn]] void kernel_main(uint64 cpu_id, uint64 fdt_paddr) { // 17. Boot self-tests — verify subsystem correctness. // Tests that create kthreads must wait() for them (freeing PIDs). +#ifdef CONFIG_SELFTEST selftest_run_all(); +#endif // 18. Spawn PID 1 (init) — the first persistent task. // Like Linux's rest_init() → user_mode_thread(kernel_init). diff --git a/kernel/module.mk b/kernel/module.mk deleted file mode 100644 index 754a14c..0000000 --- a/kernel/module.mk +++ /dev/null @@ -1,26 +0,0 @@ -# kernel/module.mk -SRCS_CC += kernel/main.cc -SRCS_CC += kernel/sync/spinlock.cc -SRCS_CC += kernel/sync/mutex.cc -SRCS_CC += kernel/trap.cc -SRCS_CC += kernel/irq.cc -SRCS_CC += kernel/sched_core.cc -SRCS_CC += kernel/sched_class_o1.cc -SRCS_CC += kernel/timer.cc -SRCS_CC += kernel/pid.cc -SRCS_CC += kernel/pgrp.cc -SRCS_CC += kernel/task.cc -SRCS_CC += kernel/syscall.cc -SRCS_CC += kernel/sys_process.cc -SRCS_CC += kernel/sys_mm.cc -SRCS_CC += kernel/sys_info.cc -SRCS_CC += kernel/sys_fs.cc -SRCS_CC += kernel/uaccess.cc -SRCS_CC += kernel/waitqueue.cc -SRCS_CC += kernel/signal.cc -SRCS_CC += kernel/sys_signal.cc -SRCS_CC += kernel/sys_misc.cc -SRCS_CC += kernel/exec.cc -SRCS_CC += kernel/poll.cc -SRCS_CC += kernel/ptrace.cc -SRCS_CC += kernel/smp.cc |
