kernel: implement initcalls and a testing system
This commit is contained in:
@@ -2,32 +2,32 @@
|
||||
#define SOCKS_INIT_H_
|
||||
|
||||
#include <socks/compiler.h>
|
||||
#include <socks/machine/init.h>
|
||||
|
||||
typedef int (*initcall_t)(void);
|
||||
|
||||
#define __INITLEVEL_EARLY 0
|
||||
#define __INITLEVEL_CORE 1
|
||||
#define __INITLEVEL_POSTCORE 2
|
||||
#define __INITLEVEL_ARCH 3
|
||||
#define __INITLEVEL_SUBSYS 4
|
||||
#define __INITLEVEL_ROOTFS 5
|
||||
#define __INITLEVEL_DEVICE 6
|
||||
#define __INITLEVEL_LATE 7
|
||||
#define INITLEVEL_EARLY 0
|
||||
#define INITLEVEL_CORE 1
|
||||
#define INITLEVEL_POSTCORE 2
|
||||
#define INITLEVEL_ARCH 3
|
||||
#define INITLEVEL_SUBSYS 4
|
||||
#define INITLEVEL_ROOTFS 5
|
||||
#define INITLEVEL_DEVICE 6
|
||||
#define INITLEVEL_LATE 7
|
||||
#define INITLEVEL_TESTS 8
|
||||
|
||||
#define __define_initcall(fn, id) \
|
||||
static initcall_t __initcall_##fn##id __used \
|
||||
__section(".initcall" #id ".init") = (fn)
|
||||
|
||||
#define early_initcall(fn) __define_initcall(fn, __INITLEVEL_EARLY)
|
||||
#define core_initcall(fn) __define_initcall(fn, __INITLEVEL_CORE)
|
||||
#define postcore_initcall(fn) __define_initcall(fn, __INITLEVEL_POSTCORE)
|
||||
#define arch_initcall(fn) __define_initcall(fn, __INITLEVEL_ARCH)
|
||||
#define subsys_initcall(fn) __define_initcall(fn, __INITLEVEL_SUBSYS)
|
||||
#define rootfs_initcall(fn) __define_initcall(fn, __INITLEVEL_ROOTFS)
|
||||
#define device_initcall(fn) __define_initcall(fn, __INITLEVEL_DEVICE)
|
||||
#define late_initcall(fn) __define_initcall(fn, __INITLEVEL_LATE)
|
||||
#define early_initcall(fn) __define_initcall(fn, INITLEVEL_EARLY)
|
||||
#define core_initcall(fn) __define_initcall(fn, INITLEVEL_CORE)
|
||||
#define postcore_initcall(fn) __define_initcall(fn, INITLEVEL_POSTCORE)
|
||||
#define arch_initcall(fn) __define_initcall(fn, INITLEVEL_ARCH)
|
||||
#define subsys_initcall(fn) __define_initcall(fn, INITLEVEL_SUBSYS)
|
||||
#define rootfs_initcall(fn) __define_initcall(fn, INITLEVEL_ROOTFS)
|
||||
#define device_initcall(fn) __define_initcall(fn, INITLEVEL_DEVICE)
|
||||
#define late_initcall(fn) __define_initcall(fn, INITLEVEL_LATE)
|
||||
#define test_initcall(fn) __define_initcall(fn, INITLEVEL_TESTS)
|
||||
|
||||
extern void print_kernel_banner(void);
|
||||
extern int do_initcalls(void);
|
||||
extern int start_initlevel(int level);
|
||||
|
||||
#endif
|
||||
|
||||
6
include/socks/test.h
Normal file
6
include/socks/test.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef SOCKS_TEST_H_
|
||||
#define SOCKS_TEST_H_
|
||||
|
||||
extern int run_all_tests(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user