#define module_init(func) module_init_level(func,5)
#define module_exit(func) module_exit_level(func,5)
#define service_init(func) module_init_level(func,1)
#define service_start(func) module_init_level(func,8)
#define service_stop(func) module_exit_level(func,8)
#define service_exit(func) module_exit_level(func,1)
#define module_init_level(func,level) module_wrapper(func,MODULE_NAME,init,level,__LINE__)
#define module_exit_level(func,level) module_wrapper(func,MODULE_NAME,exit,level,__LINE__)
#define module_wrapper(func,name,type,level,line) module_entry(func,name,type,level,line)
#define module_entry(func,name,type,level,line) void (* type##_##name##_##level##_##line##_)(void) \
__attribute__((__section__("module_" #level "_" #type ),used)) = func