/****************************************************************************** Copyright @2024 - 2044 Shenzhen dcenzix Technology Ltd. ****************************************************************************** @file cola_init.h @brief 各个需要自动初始化的函数放到指定的段中,形成一张初始化函数表 @author xiexiongwu @version V1.0 @date 2024年5月25日 ******************************************************************************/ #ifndef __COLA_INIT_H__ #define __COLA_INIT_H__ /*----------------------------------------------* * 宏定义 * *----------------------------------------------*/ /* 修改后的宏定义(适配GCC) */ #define __used __attribute__((used)) // 简化属性语法 typedef void (*initcall_t)(void); /* 重新定义段命名规则 */ #define __define_initcall(fn, level) \ static const initcall_t __initcall_##fn##level __used \ __attribute__((__section__(".initcall" #level ".init"))) = fn; #define sysclk_initcall(fn) __define_initcall(fn, 0) #define register_initcall(fn) __define_initcall(fn, 1) #define bsp_initcall(fn) __define_initcall(fn, 2) #define device_initcall(fn) __define_initcall(fn, 3) #define app_initcall(fn) __define_initcall(fn, 4) /*----------------------------------------------* * 函数原型说明 * *----------------------------------------------*/ #ifdef __cplusplus #if __cplusplus extern "C"{ #endif #endif /* __cplusplus */ extern void do_init_call(void); #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif /* __COLA_INIT_H__ */