首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

jiffies机制及实则验与使用

2012-09-29 
jiffies机制及其实验与使用全局变量jiffies用来记录自系统启动以来产生的节拍的总数。启动时,内核将该变量

jiffies机制及其实验与使用

全局变量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{

       // 已经超时

      }

热点排行