9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 學習電腦 > 操作系統 > Linux教程 > Linux全局變量jiffies的用法

Linux全局變量jiffies的用法

時間: 孫勝652 分享

Linux全局變量jiffies的用法

  jiffies是Linux系統中的全局變量,與時間有關,那么jiffies變量具體有哪些作用呢?下面學習啦小編就給大家介紹下Linux全局變量jiffies的用法,感興趣的朋友不妨來了解下吧。

  系統運行時間以秒為單位,等于jiffies/Hz。

  注意,jiffies類型為無符號長整型(unsigned long),其他任何類型存放它都不正確。

  將以秒為單位的時間轉化為jiffies:

  seconds * Hz

  將jiffies轉化為以秒為單位的時間:

  jiffies / Hz

  相比之下,內核中將秒轉換為jiffies用的多些。

  jiffies的內部表示

  jiffies定義于文件中:

  /*

  * The 64-bit value is not atomic - you MUST NOT read it

  * without sampling the sequence number in xtime_lock.

  * get_jiffies_64() will do this for you as appropriate.

  */

  extern u64 __jiffy_data jiffies_64;

  extern unsigned long volatile __jiffy_data jiffies;

  ld(1)腳本用于連接主內核映像(在x86上位于arch/i386/kernel/vmlinux.lds.S中),然后用jiffies_64變量的初值覆蓋jiffies變量。因此jiffies取整個jiffies_64變量的低32位。

  訪問jiffies的代碼只會讀取jiffies_64的低32位,通過get_jiffies_64()函數就可以讀取整個64位的值。在64位體系結構上,jiffies_64和jiffies指的是同一個變量。

  #if (BITS_PER_LONG 《 64)

  u64 get_jiffies_64(void);

  #else

  static inline u64 get_jiffies_64(void)

  {

  return (u64)jiffies;

  }

  #endif

  在中

  #if (BITS_PER_LONG 《 64)

  u64 get_jiffies_64(void)

  {

  unsigned long seq;

  u64 ret;

  do {

  seq = read_seqbegin(&xtime_lock);

  ret = jiffies_64;

  } while (read_seqretry(&xtime_lock, seq));

  return ret;

  }

  jiffies的回繞wrap around

  當jiffies的值超過它的最大存放范圍后就會發生溢出。對于32位無符號長整型,最大取值為(2^32)-1,即429496795。如果節拍計數達到了最大值后還要繼續增加,它的值就會回繞到0。

  內核提供了四個宏來幫助比較節拍計數,它們能正確的處理節拍計數回繞的問題:

  /*

  * These inlines deal with timer wrapping correctly. You are

  * strongly encouraged to use them

  * 1. Because people otherwise forget

  * 2. Because if the timer wrap changes in future you won‘t have to

  * alter your driver code.

  *

  * time_after(a,b) returns true if the time a is after time b.

  *

  * Do this with “《0” and “》=0” to only test the sign of the result. A

  * good compiler would generate better code (and a really good compiler

  * wouldn’t care)。 Gcc is currently neither.

  */

  #define time_after(a,b) /

  (typecheck(unsigned long, a) && /

  typecheck(unsigned long, b) && /

  ((long)(b) - (long)(a) 《 0))

  #define time_before(a,b) time_after(b,a)

  #define time_after_eq(a,b) /

  (typecheck(unsigned long, a) && /

  typecheck(unsigned long, b) && /

  ((long)(a) - (long)(b) 》= 0))

  #define time_before_eq(a,b) time_after_eq(b,a)

  /* Same as above, but does so with platform independent 64bit types.

  * These must be used when utilizing jiffies_64 (i.e. return value of

  * get_jiffies_64() */

  #define time_after64(a,b) /

  (typecheck(__u64, a) && /

  typecheck(__u64, b) && /

  ((__s64)(b) - (__s64)(a) 《 0))

  #define time_before64(a,b) time_after64(b,a)

  #define time_after_eq64(a,b) /

  (typecheck(__u64, a) && /

  typecheck(__u64, b) && /

  ((__s64)(a) - (__s64)(b) 》= 0))

  #define time_before_eq64(a,b) time_after_eq64(b,a)

  用戶空間和HZ

317779 主站蜘蛛池模板: 男女xx00上下抽搐动态图| 国语精品一区二区三区| 男人的天堂av一二三区| 四虎在线成人免费观看| 精品无码国产日韩制服丝袜| 国产av中文字幕精品| 国产高清不卡视频| 亚洲男人的天堂久久香蕉| 亚洲一区二区三区丝袜| 亚洲欧洲一区二区三区久久| 日本欧美一区二区三区在线播放| 久久久久青草线综合超碰| 亚洲男人的天堂久久香蕉| 国产精品一亚洲av日韩| 色吊a中文字幕一二三区| 国产欲女高潮正在播放| 亚洲国产午夜福利精品| 亚洲精品国产福利一区二区| 在线看免费无码的av天堂| 被黑人巨大一区二区三区| 国内精品自线在拍| 国产亚洲精品aaaa片app| 久久综合激情网| 国产激情国产精品久久源| 国产精品国产精品国产精品| 亚洲成熟女人av在线观看| 久久中文字幕日韩无码视频| 午夜无码国产18禁| 玩弄漂亮少妇高潮白浆| 亚洲国产成人无码电影| 国产精品色哟哟成人av| 国产精品日韩专区第一页| 免费午夜无码片在线观看影院| 亚洲成精品动漫久久精久| 久久精品a亚洲国产v高清不卡| 五月天丁香婷婷亚洲欧洲国产| 久久亚洲人成网站| 老色批国产在线观看精品| 激情 自拍 另类 亚洲| 日韩在线视频网| 亚洲精品国产自在现线最新|