请教x86时钟初始化
kernel: 2.6.31
看到2.6.3x这块跟老版本变化挺大的:
- void __init time_init(void)
- {
- x86_quirk_pre_time_init();
- tsc_init();
- late_time_init = choose_time_init();
- }
复制代码虽然思路跟以前一样,根据hept的特点把初始化分两步走
- void __init x86_quirk_pre_time_init(void)
- {
- if (x86_quirks->arch_pre_time_init)
- x86_quirks->arch_pre_time_init();
- }
复制代码但是我没有找到指针变量x86_quirks的值是在哪儿初始化的,也就是这些指针究竟指的什么函数?
ps:
找到一些诸如
x86_quirks = &visws_x86_quirks;
指向特定平台的,不太像。
找到一个
struct x86_quirks *x86_quirks __initdata = &default_x86_quirks;
但是没有找到default_x86_quirks的初始化在哪儿。
哪位大哥指点一二……
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
定义了但没初始化,是不是编译的时候把所有成员自动给置0了,俺也搞不懂,胡说一句。俺只知道elf的bss在加载时会被全部清零
static struct x86_quirks default_x86_quirks __initdata; 定义在这,没有初始化,全为0
也就是通用x86平台不需要quirk,而其他特别的平台像你给出的visws等有自己的这个结构体得实现,也就有各自的quirk
后续版本已经对这里的代码组织做了大量清理。
我在32的内核没有看到lz给出的这个结构体
谢谢3楼,我后来也是这样猜想的,因为实在没有见到其功能实现的地方。但是这个名字让人困惑,看名字,以为它是专门为x86准备的……
学习下。。。名字原来是唬人的。。。