2013-10-20 66 views
2

對於任務,我必須使用視頻驅動程序和系統定時器處理程序來將Linux系統的當前運行時間顯示在屏幕的角落。Linux中內核時間在哪裏存儲?

但是,在我的程序運行時,我沒有發現任何指向我從內核獲取系統時間的方向。我猜測它是在內核內存中的某個地址,我可以做一些類似的事情:

hour = get_word(MEM_LOCATION_OF_HOUR); 
sec = get_word(MEM_LOCATION_OF_SEC); 
ect... 

但我找不到這是否可能。我的猜測是,我們不允許像clock()那樣使用庫調用,但如果這是唯一可能的方式,那麼也許我們是。

謝謝

+0

您正在編寫內核模塊還是用戶空間應用程序? –

+0

兩者。我正在umode中運行,然後切換到內核來執行處理tho的定時器,因此內存空間在中斷期間是內核空間。 –

+1

本書的「Linux設備驅動程序」可在線獲得。您將通過閱讀第7章獲得很多見解。http://lwn.net/images/pdf/LDD3/ch07.pdf –

回答

0

不能使用庫調用? - 這只是瘋狂。總之:

getnstimeofday(struct timespec *ts);是衆多方法中的一種從here

+0

是啊,這個類是操作系統,我們基本上從引導加載程序到完成的基本內核構建了一個完整的內核,所以我們應該自己實現很多低級系統。我檢查一下這個 –

0

在內核中,ktime可以使用。

一個簡單的例子(用於計算時差)供您參考。

#include <linux/ktime.h> 

int fun() 
{ 
ktime_t entry_stamp, now; 
s64 delta; 

/* Get the current time .*/ 
entry_stamp = ktime_get(); 

/* Do your Stuff... */ 

now = ktime_get(); 
delta = ktime_to_ns(ktime_sub(now, entry_stamp)); 
printk(KERN_INFO "Time Taken:%lld ns to execute\n",(long long)delta); 
return 0; 
}