2019年8月1日 星期四

[Linux] Timer

簡述:

測試 Linux 的 Timer 功能.

說明:

在 Linux 中, 我們可以用 setitimer 來設定 timer, 讓他在一段時間後去執行一個動作. 程式原型如下:

#include <sys/time.h>

int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *restrict value, struct itimerval *restrict ovalue);

參數如下 :

  1. which: timer 種類
    • ITIMER_REAL 觸發 SIGALRM, 累計實際上經過的時間.
    • ITIMER_VIRTUAL 觸發 SIGVTALRM, 累計程序執行的時間.
    • ITIMER_PROF 觸發 SIGPROF, 累計程序執行的時間及系統時間.
  2. itimerval: timer 時間定義
    1. time.it_value 第一次觸發的時間
    2. time.it_interval 下一次觸發的時間間隔

注意 :

在 setitimer() 運作的時間 (timer 累計中), alarm(), sleep(), usleep() 均不能正常作用.

範例 :

struct sigaction sa;
struct itimerval timer;

memset(&sa, 0, sizeof(sa));
sa.sa_handler = &timer_handler;
sigaction(SIGALRM, &sa, NULL);
// SIGALRM, SIGVTALRM, SIGPROF

timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = WAKE_INTERVAL;
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = WAKE_INTERVAL;

setitimer(ITIMER_REAL, &timer, NULL);
// ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF

沒有留言:

張貼留言

[ NT98515] CROSSCOMPILE ECLIPSE PAHO MQTT C Client

簡述: 試著把 Eclipse Paho MQTT C client  移植到 NT98515 的平台, 並且測試驗證. 下載 source: git clone https://github.com/eclipse/paho.mqtt.c make: cmake $ cmake...