33 lines
1.0 KiB
C
33 lines
1.0 KiB
C
#ifndef SOCKS_INIT_H_
|
|
#define SOCKS_INIT_H_
|
|
|
|
#include <socks/compiler.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 __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)
|
|
|
|
extern int do_initcalls(void);
|
|
|
|
#endif
|