void timer_Handler(union sigval v) { LOG_INFO<<"timer_Handler enter..."; }
int init_timer(timer_t *timerid, struct sigevent *evp, struct itimerspec *it) { if ( !evp || !it ) return -1; memset(evp, 0, sizeof(struct sigevent)); evp->sigev_value.sival_int = 111; evp->sigev_notify = SIGEV_THREAD; evp->sigev_notify_function = timer_Handler; if (timer_create(CLOCK_REALTIME, evp, timerid) == -1) { perror("fail to timer_create"); return -1;; } printf("timer_create timerid = %d\n", (int)*timerid); it->it_interval.tv_sec = 0; it->it_interval.tv_nsec = 14*1000000; it->it_value.tv_sec = 0; it->it_value.tv_nsec = 14*1000000; return 0; } int start_timer(timer_t *timerid, struct itimerspec *it) { if (it == NULL){ return -1; } if (timer_settime(*timerid, 0, it, NULL) == -1) { perror("fail to timer_settime"); return -1; } return 0; }
timer_t timerid = 0; struct sigevent evp; struct itimerspec it;
int ret = init_timer(&timerid, &evp, &it); if (ret < 0){ printf("init_timer failed\n"); } ret = start_timer(&timerid, &it); if (ret < 0){ printf("start_timer failed\n"); }else { printf("start timer ok\n"); }
|