linux kernel 獲取時間函式api

2021-10-25 17:27:27 字數 1865 閱讀 5173

核心態常用獲取納秒的函式。u64是unsigned long long型別的資料型別,列印用%llu。

基本的基於時間的介面:

ktime_t ktime_get(void)// 用於可靠的時間戳和精確測量短時間間隔。在系統啟動時啟動,但在掛起期間停止

ktime_tktime_get_boottime(void)//類似於ktime_get,但是但在掛起時不會停止例如,這可用於需要通過掛起操作與其他計算機同步的金鑰過期時間。

ktime_tktime_get_real(void)//返回相對於2023年的時間,類似於使用者態的gettimeofday.這適用於需要在重新啟動期間保持的所有時間戳,如inode時間,但在內部使用時應避免使用,因為它可能由於從使用者空間執行的閏秒更新、ntp adjustment settimeofday()操作而向後跳轉

ktime_tktime_get_raw(void)//類似於ktime_get,但執行速度與硬體時鐘源相同,而不需要(ntp)調整時鐘漂移。這在核心中也很少需要。

u64ktime_get_ns(void)

u64ktime_get_boottime_ns(void)

u64ktime_get_real_ns(void)

u64ktime_get_clocktai_ns(void)

u64ktime_get_raw_ns(void)

time64_tktime_get_seconds(void)

time64_tktime_get_boottime_seconds(void)

time64_tktime_get_real_seconds(void)

time64_tktime_get_clocktai_seconds(void)

time64_tktime_get_raw_seconds(void)

unsigned long old_tns, old_ts,now_ns, now_ts;

old_ns= ktime_get();    

程式段}

now_ns= ktime_get();

時間差 diff = now_ns -old_ns;

另外還有乙個巨集做除法

比如需要列印時間戳時

old_ns= ktime_get();    

old_ts = do_div(old_ns, 1000000000);//巨集做除法運算  old_ns 保留剩餘的ns ,ts秒數

printk("time [%05lu:%06lu]----------- \n",old_ts, (old_ns/1000));//  (old_ns/1000) 是微秒   -----------》可以列印時間戳

注意:多核使用情況,如果你發現時間t1超前與t2,說明是多核影響的。

#include

#include

#include

/*新增到合適位置*/

struct timex  txc;

struct rtc_time tm;

do_gettimeofday(&(txc.time));

rtc_time_to_tm(txc.time.tv_sec,&tm);

printk(「utc time :%d-%d-%d %d:%d:%d /n」,tm.tm_year+1900,tm.tm_mon, tm.tm_mday,tm.tm_hour,tm.tm_min,tm.tm_sec);

有不合適之處請指正

Linux kernel 關於keyboard部分

linux kernel 關於keyboard部分 keyboard.c 用於處理和鍵盤相關的input handler。其中包括後續的鍵碼轉換和輸出 atkbd.c 常用的鍵盤布局,用於獲得掃瞄碼,並將其傳送到input handler 鍊錶中 struct input handler kbd h...

Linux kernel併發處理

理解好併發處理,有幾個小概念是相關的。1.由於圖靈機本身是依賴side effect來工作,故同步互斥機制便有了必要性。角度來看,如果依賴了共享的變數,便意味著可能需要同步保護。如果是lamada演算的函式式程式設計,是不需要同步保護滴。2.死鎖dead lock的必要4條件。1.資源的獨占性 不可...

單步執行linux kernel

如果能給linux kernel打log,如果能單步執行,如果能像普通應用程式那樣,step by step的檢視程式跑 了.該多好?這是乙個夢想,但從未實現過 因為那是kernel,不是應用程式。kernel一閃而過,我有什麼能力讓它駐足停留,為自己看個夠?雖然,也知道kernel是人寫的 廢話 ...