系统定时器HZjiffies
Posted Li-Yongjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统定时器HZjiffies相关的知识,希望对你有一定的参考价值。
系统定时器
系统定时器是一种可编程硬件芯片,它能以固定频率产生中断,该频率可以通过编程预定,称作节拍率(tick rate),该中断就是定时器中断。
节拍率是通过静态预处理定义的,也就是 HZ,在系统启动时按照 HZ 值对硬件进行设置。
i386 体系结构中系统定时器频率为 1000Hz,但其它体系结构的节拍率大多数都等于 100。
宏定义
以树莓派为例
/linux/include/uapi/asm-generic/param.h
#ifndef HZ
#define HZ 100
#endif
linux/include/linux/jiffies.h
extern u64 __cacheline_aligned_in_smp jiffies_64;
extern unsigned long volatile __cacheline_aligned_in_smp __jiffy_arch_data jiffies;
打印 HZ、jiffies
编个小程序打印一下 HZ 和 jiffies 的值
hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
printk("HZ = %d\\n", HZ);
printk("hello_init, jiffies = %ld\\n", jiffies);
return 0;
static void hello_exit(void)
printk("hello_exit, jiffies = %ld\\n", jiffies);
module_init(hello_init);
module_exit(hello_exit);
Makefile
obj-m = hello.o
KDIR=/home/liyongjun/project/board/buildroot-2021.05/RPi3/build/linux-custom
CROSS_COMPILE=/home/liyongjun/project/board/buildroot-2021.05/RPi3/host/bin/arm-buildroot-linux-uclibcgnueabihf-
all:
make -C $(KDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
clean:
make -C $(KDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) clean
运行
上传到树莓派中运行
# insmod hello.ko && sleep 1s && rmmod hello
[60740.476063] HZ = 100
[60740.479956] hello_init, jiffies = 6044048
[60741.495989] hello_exit, jiffies = 6044150
验证了 HZ 等于 100;jiffies 一秒种增加 100
。
以上是关于系统定时器HZjiffies的主要内容,如果未能解决你的问题,请参考以下文章