- C文件:
- /*****************************************************************************************************************************/
- #include "ll_autoinit.h"
- /*****************************************************************************************************************************/
- __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.0" ) ) ) struct ll_autoinit_t autoinit_head ;
- __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.9" ) ) ) struct ll_autoinit_t autoinit_tail ;
- /*****************************************************************************************************************************/
- void ll_autoinit_init ( void )
- {
- struct ll_autoinit_t * init = ( struct ll_autoinit_t * ) & autoinit_head ;
- for ( init = init + 1; init < ( struct ll_autoinit_t * ) & autoinit_tail ; init++ )
- {
- init->cb_init();
- }
- }
- /*****************************************************************************************************************************/
- H文件:
- #ifndef autoinit_h
- #define autoinit_h
- /*****************************************************************************************************************************/
- #include <stdint.h>
- /******************************************************************************************************************************
- * 功 能 : autoinit操作对象结构体
- ******************************************************************************************************************************/
- struct ll_autoinit_t
- {
- const char * name ;
- void ( * cb_init ) ( void ) ;
- } ;
- /******************************************************************************************************************************
- * 功 能 : 加载表格(BOARD)
- ******************************************************************************************************************************/
- #define LL_LOAD_AUTOINIT_BOARD(name,init) \
- __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.1" ) ) ) \
- struct ll_autoinit_t autoinit_board_##name = { #name ,init} ;
- /******************************************************************************************************************************
- * 功 能 : 加载表格(MODULE)
- ******************************************************************************************************************************/
- #define LL_LOAD_AUTOINIT_MODULE(name,init) \
- __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.2" ) ) ) \
- struct ll_autoinit_t autoinit_module_##name = { #name ,init} ;
- /******************************************************************************************************************************
- * 功 能 : 加载表格(APP)
- ******************************************************************************************************************************/
- #define LL_LOAD_AUTOINIT_APP(name,init) \
- __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.3" ) ) ) \
- struct ll_autoinit_t autoinit_app_##name = { #name ,init} ;
- /*****************************************************************************************************************************/
- void ll_autoinit_init ( void ) ;
- /*****************************************************************************************************************************/
- #endif
- </font>