攝取目前時刻

許多user-space應用程式需要處理牆鐘問題(wall-clock time),也就是現實時間的表示方式,但是驅動程式比較沒這方面需求,在驅動程式裡面寫牆鐘時刻,通常意味著操作原則被寫在驅動程式裡面,應該要盡量避免。提供了mktime()函式,幫助你將牆鐘時刻換算成從1970/1/1 0:0:0起所經歷的秒數:

#include <linux/time.h>
unsigned long mktime(unsigned int year ,unsigned int mon,unsigned int day,unsigned int hour,unsigned int min,unsigned int sec);

雖然無須處理牆鐘時刻,但有時必須處理絕對時戳(absolute timestamp)。在這方面可以利用<linux/time.h>所釋出的do_gettimeofday()函式,它能將當時的系統時間填入我們提供的一個struct timeval。

#include <linux/time.h>
void do_gettimeofday(struct timeval *tv);

do_gettimeofday()能提供微秒的的解析度,它是直接從計時器硬體取得時間資訊,而取得他兩個時間欄位的名稱為tv_sec代表秒,以及tv_usec代表微秒,我們很常用毫秒來表示時戳,這時可以將這兩個欄位的值相加代表當時的時戳,範例如下:

#include <linux/time.h>
struct timeval tv;
do_gettimeofday(&tv);
int now = tv.tv_sec * 1000 + (tv.tv_usec / 1000) ;

results matching ""

    No results matching ""