- Replace plain integer 0 with NULL for pointer assignments, returns,
and comparisons across 24 source files (kernel, drivers, HAL, arch, net)
- Add missing <stddef.h> includes for NULL in keyboard.c and uart.c
- Make file-local symbols static in idt.c (idt, idtp, interrupt_handlers,
idt_set_gate, pic_remap, print_reg) and scheduler.c (ready_queue_tail)
- Add missing extern/prototype declarations to headers:
idt.h (isr_handler), syscall.h (syscall_handler),
process.h (ready_queue_head, sched_lock, sched_set_init_pid,
sched_assign_pid1, sched_ap_init), net.h (net_dhcp_start),
percpu.h (_percpu_gs_lut, percpu_get_ptr), smp.h (ap_sched_go,
ap_entry), arch_syscall.h (x86_sysenter_set_kernel_stack,
sysenter_init_ap), hal/usermode.h (x86_usermode_test_start),
hal/cpu.h (g_smap_enabled), ata_pio.h (ata_register_devfs),
boot_info.h (kernel_main)
- Add forward declarations for compiler ABI symbols in utils.c
- Include own headers in source files so sparse sees declarations
- Add lwIP/net include paths to SPARSE_FLAGS in Makefile
Verified: make check (0 warnings), make test-host (116/116 pass),
make test (102/103 pass, 1 pre-existing timeout)