2

ダンプ ローカル APIC タイマー レジスタを読み取る Linux カーネル モジュールを作成しています。
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 になっています。これは正しいですか?

それとも、何かを見逃したか、何か間違ったことをしましたか?

4

1 に答える 1