Linux核心中的時間函式

2021-09-25 21:33:42 字數 1726 閱讀 1073

ktime_t ktime_get(void);
獲取基於clock_monotonic的當前時間,返回ktime_t格式的資料型別。

單調遞增的,一般認為它不會受到ntp的影響,使用者修改牆上時間,不會對這個產生影響。核心一般可以用這個來統計延時時間。

ktime_t ktime_get_boottime(void);
獲取基於clock_boottime的當前時間,返回ktime_t格式的資料型別。

ktime_t ktime_get_real(void);
獲取基於clock_realtime的當前時間,也就是我們常說的牆上時間xtime,返回ktime_t格式的資料型別。

ktime_t ktime_get_raw(void);
獲取基於clock_monotonic_raw的當前時間,返回ktime_t格式的資料型別。

void ktime_get_ts64(struct timespec64 *ts);       //clock_monotonic

void ktime_get_real_ts64(struct timespec64 *); //clock_realtime

void ktime_get_boottime_ts64(struct timespec64 *);//clock_boottime

void ktime_get_raw_ts64(struct timespec64 *); //clock_monotonic_raw

以下介面是核心逐步過時的時間介面,但是一些第三方的驅動可能依然在使用,因此核心也會做相容,建議在可選時盡量使用上面的ktime系列介面來獲取時間。

static inline void get_monotonic_boottime(struct timespec *ts)

static inline void get_monotonic_boottime64(struct timespec64 *ts)

獲取基於clock_boottime的當前時間,返回struct timespec格式的資料型別。建議使用ktime_get_boottime()介面來進行替代。

struct timespec64 current_kernel_time64(void);

static inline struct timespec current_kernel_time(void)

獲取基於clock_realtime(xtime)的時間,返回struct timespec型別的資料型別。更新版本的核心開始使用ktime_get_coarse_real_ts64()/ktime_get_coarse_ts64()來替代。

void do_gettimeofday(struct timeval *tv);
獲取基於xtime的時間,返回struct timeval型別的資料型別。新版核心開始使用ktime_get_real_ts64來替代。

參考:kernel-4.14 source code

Linux核心中的cmpxchg函式

前幾天,為了這個函式花了好多時間,由於參考的資料有誤,一直都沒有看明白,直到google之後,總算搞明白了,因此寫出來大家分享一下。在linux核心中,提供了比較並交換的函式cmpxchg,在include asm i386 cmpxchg.h中,函式的原型是 全選cmpxchg void ptr,...

linux核心中的typecheck函式

最近在檢視linux 時看到了乙個typecheck函式,剛開始不是很明白,具體 如下 define typecheck type,x 這是乙個巨集,它是檢查type和x的資料型別是否一樣,比如我們這樣使用 int a typecheck double,a 巨集展開後是乙個表示式 typeof關鍵字...

linux核心中的延遲函式

linux核心提供3個函式分別進行納秒,微妙和毫秒延時 void ndelay unsigned long nsecs void udelay unsigned long usecs void mdelay unsigned long msecs 這3個函式的延時原理是忙等待,也就是說在延時的過程中...