-
Notifications
You must be signed in to change notification settings - Fork 62
KernelInitSubsystem
Dmitry Zavalishin edited this page Feb 24, 2016
·
2 revisions
To make kernel init/stop process more or less clear, Init/Stop subsystem is made.
Any subsystem can register up to three init functions.
#include <kernel/init.h>
static void early_init(void);
static void main_init(void);
static void late_init(void);
INIT_ME( early_init, main_init, late_init ); // Any one can be zero
- After this stage you must ensure that all public interfaces of your subsystem are callable**.
Very limited subset of kernel services is working.
What is **NOT** working:
* IRQ allocator * Paging * Timers and timed calls * Threads and locking. Though you **can** use spinlocks. * DPC (deferred procedure calls - threadlets/light threads) * Drivers * Network, of course.
- After this stage your subsystem must be mostly working**.
What is still **NOT** working:
- Video
- Phase 2-3-4 drivers
- Unix subsystem
- USB
- Disk IO
- Phantom native subsystem (persistent memory and virtual machine)
- After this stage your subsystem must be completely working**.
static void early_stop(void);
static void prepare_stop(void);
static void final_stop(void);
STOP_ME( early_stop, prepare_stop, final_stop );
VM threads stopped. SMP turned off.
Stop calling others at this stage.
Stop servicing calls.
:: Home :: RoadMap :: History :: ChangeLog :: ScreenShots :: Phantom Developer's Guide