jiffies机制及其实验与使用 jiffies与HZ换算
来源:互联网 发布:交通大学网络教育 编辑:程序博客网 时间:2024/05/12 13:53
全局变量jiffies用来记录自系统启动以来产生的节拍的总数。启动时,内核将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值。一秒内时钟中断的次数等于Hz,所以jiffies一秒内增加的值也就是Hz。
系统运行时间以秒为单位,等于jiffies/Hz。
注意,jiffies类型为无符号长整型(unsigned long),其他任何类型存放它都不正确。
将以秒为单位的时间转化为jiffies:
seconds * Hz
将jiffies转化为以秒为单位的时间:
jiffies / Hz
实验使用1:记下2个函数之间的间隔。
> unsigned long lcd_on_tick;
> unsigned long lcd_off_tick;
> unsigned long lcd_keep_tick;
> void lcd_on(void)
> {
> lcd_on_tick=jiffies;//记下当前时间
> printk("lcd_on_tick = %ld",lcd_on_tick);}
> void lcd_off(void)
> {
> lcd_off_tick=jiffies;
> printk("lcd_off_tick = %ld ",lcd_off_tick);//记下当前时间
>
> lcd_keep_tick=lcd_off_tick-lcd_on_tick;
> printk("lcd_off_tick - lcd_on_tick = %ld
> ms",lcd_keep_tick*1000/HZ);//计算出2者间隔多少ms 通过log显示还是非常准的
> }
>
> <4>[ 144.288757] lcd_on_tick = -15571
> <6>[ 144.289093] lcdc_truly_gpio_init: lcdc_gpio_initialized = 1
> <6>[ 144.289825] lcdc_gordon_panel_on
> <3>[ 144.510650] [TP]cap_touch_screen_set_reset: Set RESET: 0
> <3>[ 144.511840] [TP]cap_touch_screen_set_reset: Set RESET: 1
> <6>[ 144.562561] gt818 1-005d: Guitar Version: 0x00.0x83
> <7>[ 144.570892] BATT: msm_battery_late_resume
> <4>[ 144.571441] [MSM_BATT] msm_batt_set_compensation:
> batt_compensation=0
> <6>[ 145.384063] request_suspend_state: sleep (0->3) at 145385327712
> (2012-09-21 11:26:02.976361082 UTC)
> <7>[ 145.384277] BATT: msm_battery_early_suspend
> <4>[ 145.386718] [MSM_BATT] msm_batt_set_compensation:
> batt_compensation=1
> <6>[ 145.389465] Send suspend cmd
> <4>[ 145.498809] lcd_off_tick = -15450 lcd_off_tick - lcd_on_tick =
> 1210 ms
所以如果有需要比较2个函数执行时间间隔就有用处了,用的情况还是还多的。这里只是一点小用法。
2:设置超时
unsigned long timeout = jiffies + tick_rate * 2; // 2秒钟后超时
if(time_before(jiffies, timeout){
// 还没有超时
}
else{
// 已经超时
}
总结:
HZ为1s jiffies类型unsigned long 。 HZ=1000时 1jiffies = 1ms HZ=100时 1jiffies=10ms
高通平台默认1HZ = 100 jiffies
如何改HZ=1000?
内核态的HZ需要位1000,就是1 jiffies 为1ms,应该是修改/arch/arm/Kconfig default 1000
config HZ
int
default 200 if ARCH_EBSA110 || ARCH_S3C24XX || ARCH_S5P64X0 || \
ARCH_S5PV210 || ARCH_EXYNOS4
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
default AT91_TIMER_HZ if ARCH_AT91
default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
default 1000
- jiffies机制及其实验与使用 jiffies与HZ换算
- HZ、tick与jiffies
- HZ 与 jiffies
- jiffies HZ 秒的区别与联系
- jiffies & HZ
- jiffies溢出与时间先后比较 + linux的HZ, Tick, Jiffies
- jiffies溢出与时间先后比较 + linux的HZ, Tick, Jiffies
- linux HZ Tick Jiffies
- linux HZ Tick Jiffies
- linux jiffies tick hz
- linux HZ Tick Jiffies
- linux HZ Tick Jiffies
- linux HZ Tick Jiffies
- linux HZ Tick Jiffies
- linux HZ Tick Jiffies
- linux HZ Tick Jiffies
- HZ jiffies tick linux
- linux的HZ, Tick, xtime, Jiffies, RTC && mdelay() 与msleep()的区别
- 通过分区(Partition)提升MySQL性能
- 《Java数据结构和算法》第二版 Robert lafore 编程作业 第十四章
- struts2学习dem004_Result类型和异常处理
- JConsole的使用方法 JProfiler监控使用
- JavaBean的作用
- jiffies机制及其实验与使用 jiffies与HZ换算
- How to configure FreeNAS 8 for iSCSI and connect to ESX(i)
- 对象和对象引用
- Java内存管理(一、内存分配)
- Java内存管理(二、Java垃圾回收)
- JProfiler监控内存
- C标准库
- TypeError: 'sip.methoddescriptor' object is not callable
- JAVA内存释放机制