【发布时间】:2012-03-26 16:48:29
【问题描述】:
我在 linux 内核代码 http://gitorious.org/pandroid/kernel-omap/blobs/5ed7607d45b300a37dd13ad1c79adea56f6687ce/arch/arm/mach-omap2/board-omap4panda.c 中发现了这个
MACHINE_START(OMAP4_PANDA, "OMAP4430 Panda Board")
.phys_io = 0x48000000,
.io_pg_offst = ((0xfa000000) >> 18) & 0xfffc,
.boot_params = 0x80000100,
.map_io = omap_panda_map_io,
.init_irq = omap_panda_init_irq,
.init_machine = omap_panda_init,
.timer = &omap_timer,
MACHINE_END
我不明白这是什么..?这是宏还是结构还是什么..???
定义说
/*
* Set of macros to define architecture features. This is built into
* a table by the linker.
*/
#define MACHINE_START(_type,_name) \
static const struct machine_desc __mach_desc_##_type \
__used \
__attribute__((__section__(".arch.info.init"))) = { \
.nr = MACH_TYPE_##_type, \
.name = _name,
#define MACHINE_END \
};
#endif
但我不明白它是如何工作的?
【问题讨论】:
-
搜索“#define MACHINE_START”需要多长时间?
-
@Damien_The_Unbeliever “大约 19,100 个结果(0.30 秒)”;-))
-
您应该学习如何获取源代码的预处理形式。将编译命令中的
gcc替换为gcc -C -E,即可在stdout上得到预处理后的表单。
标签: c linux linux-kernel