MCPcopy Create free account
hub / github.com/LPC4/Full-Stack / kernel_boots_with_process_and_scheduler

Function kernel_boots_with_process_and_scheduler

crates/os-runtime/tests/boot.rs:558–619  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

556 assert!(
557 leaks.is_empty(),
558 "{name}.hll references imported symbols by bare flat name (use the import alias, \
559 e.g. `fs.read`): {leaks:?}"
560 );
561 }
562}
563
564// --- Compile / boot smoke test ---
565
566#[test]
567fn kernel_boots_with_process_and_scheduler() {
568 // Minimal kernel that initialises process + scheduler alongside normal boot.
569 let test_kernel = "
570external klog_ok: (msg: u8*)
571external klog_warn: (msg: u8*)
572external klog_error: (msg: u8*)
573external klog_int: (label: u8*, val: i64)
574external kmalloc: (size: u64) -> u8*
575external memset: (dst: u8*, value: u8, n: u64) -> u8*
576external kshutdown: (code: i64)
577external trap_init: ()
578external plic_init: ()
579external timer_set: (interval: u64)
580external pmm_init: (start: u64, end: u64)
581external pmm_alloc: () -> u8*
582external pmm_free: (page: u8*)
583external vmm_init: ()
584external vmm_map_1gib: (va: u64, pa: u64, flags: u64)
585external vmm_enable: ()
586external s_enable_interrupts: ()
587external memory_self_test: (size: u64) -> i64
588external pmm_ops_test: ()
589external process_init: ()
590external process_create: (entry_pc: u64) -> u64*
591external scheduler_init: ()
592external scheduler_add: (pcb: u64*)
593
594kmain: () {
595 klog_ok(\"kernel starting\".ptr)
596 trap_init()
597 timer_set(1000000)
598 plic_init()
599 klog_ok(\"interrupt controller online\".ptr)
600 memory_self_test(256)
601 kmalloc(64)
602 pmm_init(0x80100000, 0x87F00000)
603 vmm_init()
604 vmm_map_1gib(0x00000000, 0, 38)
605 vmm_map_1gib(0x80000000, 0x80000000, 46)
606 vmm_map_1gib(0xC0000000, 0xC0000000, 46)
607 vmm_enable()
608 process_init()
609 scheduler_init()
610 klog_ok(\"boot complete\".ptr)
611 kshutdown(0)
612}
613";
614 let (uart, exit) = run_kernel_hll(test_kernel);
615 assert_eq!(exit, Some(0), "kernel must exit with code 0; uart={uart:?}");

Callers

nothing calls this directly

Calls 1

run_kernel_hllFunction · 0.70

Tested by

no test coverage detected