首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取APIC定时器寄存器失败

读取APIC定时器寄存器失败
EN

Stack Overflow用户
提问于 2019-02-26 05:07:02
回答 1查看 334关注 0票数 2

我正在编写一个Linux内核模块来读取转储本地APIC定时器寄存器。

我在X86_64平台上使用Ubuntu16.04桌面。

X2APIC被禁用,nohz=off在grub.cfg中被禁用。

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

代码语言:javascript
复制
#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");

我拿到了这些,

代码语言:javascript
复制
[ 5619.047497] APIC_TDCR = 0x0
[ 5619.047498] APIC_TMICT = 0x0
[ 5619.047499] APIC_TMCCT = 0x0

令我惊讶的是,初始计数器和当前计数器都是0,对吗?

还是我错过了什么或者做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 07:30:19

我想我知道答案了。这是因为CPU支持TSC截止日期特性/ LAPIC计时器模式。在这种模式下,不使用APIC_TDCR/TMICT/TMCCT。就是这样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54878752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档