生活随笔
收集整理的這篇文章主要介紹了
machine_desc结构体【转】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)自:http://blog.csdn.net/myarrow/article/details/8609564
1. 簡介
內(nèi)核提供了一個(gè)重要的結(jié)構(gòu)體struct machine_desc ,這個(gè)結(jié)構(gòu)體在內(nèi)核移植中起到相當(dāng)重要的作用,內(nèi)核通過machine_desc結(jié)構(gòu)體來控制系統(tǒng)體系架構(gòu)相關(guān)部分的初始化。
?????? machine_desc結(jié)構(gòu)體通過MACHINE_START宏來初始化,在代碼中, 通過在start_kernel->setup_arch中調(diào)用setup_machine_fdt來獲取。
?
2. machine_desc結(jié)構(gòu)體
???????? machine_desc結(jié)構(gòu)體定義如下:
?
[cpp]?view plaincopy
struct?machine_desc?{??????unsigned?int????????nr;?????????const?char??????*name;??????????unsigned?long???????boot_params;????????const?char??????**dt_compat;??????????unsigned?int????????nr_irqs;??????????unsigned?int????????video_start;????????unsigned?int????????video_end;????????unsigned?int????????reserve_lp0?:1;?????unsigned?int????????reserve_lp1?:1;?????unsigned?int????????reserve_lp2?:1;?????unsigned?int????????soft_reboot?:1;?????void????????????(*fixup)(struct?machine_desc?*,???????????????????????struct?tag?*,?char?**,???????????????????????struct?meminfo?*);??????void????????????(*reserve)(void);????void????????????(*map_io)(void);????void????????????(*init_early)(void);??????void????????????(*init_irq)(void);??????struct?sys_timer????*timer;?????????void????????????(*init_machine)(void);??#ifdef?CONFIG_MULTI_IRQ_HANDLER??????void????????????(*handle_irq)(struct?pt_regs?*);??#endif??};?? ?
?3. machine_desc初始化
machine_desc初始化例子如下:
[cpp]?view plaincopy
MACHINE_START(MA,?"myboard")??????.boot_params????=?PLAT_PHYS_OFFSET?+?0x800,??????.fixup??????=?ma_fixup,??????.reserve?????????????=?&ma_reserve,??????.map_io?????=?ma_map_io,??????.init_irq???=?ma_init_irq,??????.timer??????=?&ma_timer,??????.init_machine???=?machine_ma_board_init,??MACHINE_END?? MACHINE_START和MACHINE_END宏定義如下:
[cpp]?view plaincopy
#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?????????????\??};??
轉(zhuǎn)載于:https://www.cnblogs.com/sky-heaven/p/4837252.html
總結(jié)
以上是生活随笔為你收集整理的machine_desc结构体【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。