攝取目前時刻
許多user-space應用程式需要處理牆鐘問題(wall-clock time),也就是現實時間的表示方式,但是驅動程式比較沒這方面需求,在驅動程式裡面寫牆鐘時刻,通常意味著操作原則被寫在驅動程式裡面,應該要盡量避免。
#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) ;