gpt4 book ai didi

linux - 无法读取 APIC 定时器寄存器

转载 作者:太空狗 更新时间:2023-10-29 12:09:04 25 4
gpt4 key购买 nike

我正在编写一个 Linux 内核模块来读取转储本地 APIC 定时器寄存器。
我在 X86_64 平台上使用 Ubuntu 16.04 桌面。
X2APIC 被禁用,grub.cfg 中的 nohz=off。

我正在使用以下代码读取 APIC 定时器寄存器。

#include <linux/slab.h>
#include <linux/time.h>
#include <asm/string.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/hrtimer.h>
#include <linux/ktime.h>
#include <asm/apic.h>

void read_apic_timer(void)
{
printk("APIC_TDCR = 0x%x\n", apic_read(APIC_TDCR));
printk("APIC_TMICT = 0x%x\n", apic_read(APIC_TMICT));
printk("APIC_TMCCT = 0x%x\n", apic_read(APIC_TMCCT));
}

static int __init timer_init(void)
{
read_apic_timer();
return 0;
}

static void __exit timer_exit(void)
{
printk("module uninstalling\n");
}

module_init(timer_init);
module_exit(timer_exit);
MODULE_LICENSE("GPL");

我得到了这些,

[ 5619.047497] APIC_TDCR = 0x0
[ 5619.047498] APIC_TMICT = 0x0
[ 5619.047499] APIC_TMCCT = 0x0

令我惊讶的是,初始计数器和当前计数器都为0,是否正确?

还是我遗漏了什么或做错了什么?

最佳答案

我想我得到了答案。这是因为 CPU 支持 LAPIC 计时器的 TSC 截止时间功能/模式。在此模式下,未使用 APIC_TDCR/TMICT/TMCCT。就是这样。

关于linux - 无法读取 APIC 定时器寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54878752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com