在main.c中,它调用initialize()和startup()。在init.c中的每个函数中,它会遍历包含已注册函数的表并调用它们:
void startup ( void ) {
struct startup_fn *startup_fn;
if ( started )
return;
/* Call registered startup functions */
for_each_table_entry ( startup_fn, STARTUP_FNS ) {
if ( startup_fn->startup )
startup_fn->startup();
}
started = 1;
}
根据评论,我不知道注册函数在哪里。
#define STARTUP_FNS __table ( struct startup_fn, "startup_fns" )
__表:
#define __table( type, name ) ( type, name )
__table是我可以调查的结束。评论说它“声明一个链接器表”。但是它如何获得功能呢?
table.h 里面还有更多,比如__table_entry,table_start ……这个表是哪里来的?它的条目在哪里?这是什么意思:
#define table_start( table ) __table_entries ( table, 00 )
这里是什么00
意思?
请帮忙。我真的很想明白。谢谢。