I am writing a Linux kernel module to read dump local APIC timer registers. I am using Ubuntu 16.04 desktop on X86_64 platform. X2APIC is disabled, and nohz=off in grub.cfg.
Here comes the code.
#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");
And what I got is below,
[ 5619.047497] APIC_TDCR = 0x0 [ 5619.047498] APIC_TMICT = 0x0 [ 5619.047499] APIC_TMCCT = 0x0
I am not sure if it is correct or NOT.
Thanks,
|