请教x86时钟初始化

发布于 2022-10-15 05:42:04 字数 971 浏览 19 评论 0

kernel: 2.6.31

看到2.6.3x这块跟老版本变化挺大的:

  1. void __init time_init(void)
  2. {
  3.         x86_quirk_pre_time_init();
  4.         tsc_init();
  5.         late_time_init = choose_time_init();
  6. }

复制代码虽然思路跟以前一样,根据hept的特点把初始化分两步走

  1. void __init x86_quirk_pre_time_init(void)
  2. {
  3.         if (x86_quirks->arch_pre_time_init)
  4.                 x86_quirks->arch_pre_time_init();
  5. }

复制代码但是我没有找到指针变量x86_quirks的值是在哪儿初始化的,也就是这些指针究竟指的什么函数?

ps:
找到一些诸如
x86_quirks = &visws_x86_quirks;
指向特定平台的,不太像。
找到一个
struct x86_quirks *x86_quirks __initdata = &default_x86_quirks;
但是没有找到default_x86_quirks的初始化在哪儿。

哪位大哥指点一二……

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

屋顶上的小猫咪 2022-10-22 05:42:04

定义了但没初始化,是不是编译的时候把所有成员自动给置0了,俺也搞不懂,胡说一句。俺只知道elf的bss在加载时会被全部清零

冰葑 2022-10-22 05:42:04

static struct x86_quirks default_x86_quirks __initdata; 定义在这,没有初始化,全为0

也就是通用x86平台不需要quirk,而其他特别的平台像你给出的visws等有自己的这个结构体得实现,也就有各自的quirk

后续版本已经对这里的代码组织做了大量清理。

一直在等你来 2022-10-22 05:42:04

我在32的内核没有看到lz给出的这个结构体

默嘫て 2022-10-22 05:42:04

谢谢3楼,我后来也是这样猜想的,因为实在没有见到其功能实现的地方。但是这个名字让人困惑,看名字,以为它是专门为x86准备的……

捎一片雪花 2022-10-22 05:42:04

学习下。。。名字原来是唬人的。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文