diff --git a/include/rtdef.h b/include/rtdef.h index 7a983efb652c6c8df5333c71d6ae76e9591d261c..f7b87cc53efb3ae15df5a266019125c11bba0e01 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -83,6 +83,7 @@ typedef rt_base_t rt_off_t; /**< Type for offset */ #include #define SECTION(x) __attribute__((section(x))) #define UNUSED __attribute__((unused)) + #define USED __attribute__((used)) #define ALIGN(n) __attribute__((aligned(n))) #define rt_inline static __inline /* module compiling */ @@ -128,6 +129,7 @@ typedef rt_base_t rt_off_t; /**< Type for offset */ #define SECTION(x) __attribute__((section(x))) #define UNUSED __attribute__((unused)) + #define USED __attribute__((used)) #define ALIGN(n) __attribute__((aligned(n))) #define rt_inline static __inline #define RTT_API @@ -147,6 +149,23 @@ typedef rt_base_t rt_off_t; /**< Type for offset */ #define RTT_API #endif +/* initialization export */ +#ifdef RT_USING_COMPONENTS_INIT +typedef int (*init_fn_t)(void); +#define INIT_EXPORT(fn, level) \ + const init_fn_t __rt_init_##fn SECTION(".rti_fn."level) = fn +#else +#define INIT_EXPORT(fn, level) +#endif + +/* board init routines will be called in board_init() function */ +#define INIT_BOARD_EXPORT(fn) INIT_EXPORT(fn, "1") +/* device/component/fs/app init routines will be called in init_thread */ +#define INIT_DEVICE_EXPORT(fn) INIT_EXPORT(fn, "2") +#define INIT_COMPONENT_EXPORT(fn) INIT_EXPORT(fn, "3") +#define INIT_FS_EXPORT(fn) INIT_EXPORT(fn, "4") +#define INIT_APP_EXPORT(fn) INIT_EXPORT(fn, "5") + /* event length */ #define RT_EVENT_LENGTH 32