From 0da938c86042792af12bb65fa6febb7401d4f99d Mon Sep 17 00:00:00 2001 From: Dmitry Bogatov Date: Wed, 6 Nov 2013 11:33:51 +0400 Subject: [PATCH] [REFACTOR] Refactor timerfd initialization Change-Id: If9dc4f94edce99ddac6b812da68c60926b7c2cd7 Signed-off-by: Dmitry Bogatov --- helper/libdaprobe.c | 51 +++++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/helper/libdaprobe.c b/helper/libdaprobe.c index 7ce4094..dc6435b 100755 --- a/helper/libdaprobe.c +++ b/helper/libdaprobe.c @@ -315,11 +315,37 @@ static void *recvThread(void __unused * data) /***************************************************************************** * initialize / finalize function *****************************************************************************/ +static int init_timerfd(void) +{ + const struct timespec interval = { + .tv_sec = 0, + .tv_nsec = TIMERFD_INTERVAL + }; + const struct itimerspec ctime = { + .it_interval = interval, + .it_value = interval + }; + + int timer = timerfd_create(CLOCK_REALTIME, TFD_CLOEXEC); + + if (timer == -1) { + PRINTMSG("failed to create timerdf\n"); + return -1; + } + + if (timerfd_settime(timer, 0, &ctime, NULL) != 0) { + PRINTMSG("failed to set timerfd\n"); + close(timer); + return -1; + } + + return timer; +} void __attribute__((constructor)) _init_probe() { struct timeval ttime; - struct itimerspec ctime; + probeBlockStart(); @@ -337,27 +363,8 @@ void __attribute__((constructor)) _init_probe() + ttime.tv_usec; // create socket for communication with da_daemon - if(createSocket() == 0) - { - // create timerfd - g_timerfd = timerfd_create(CLOCK_REALTIME, TFD_CLOEXEC); - if(g_timerfd > 0) - { - ctime.it_value.tv_sec = 0; - ctime.it_value.tv_nsec = TIMERFD_INTERVAL; - ctime.it_interval.tv_sec = 0; - ctime.it_interval.tv_nsec = TIMERFD_INTERVAL; - if(0 > timerfd_settime(g_timerfd, 0, &ctime, NULL)) - { - PRINTMSG("failed to set timerfd\n"); - close(g_timerfd); - g_timerfd = 0; - } - } - else - { - PRINTMSG("failed to create timerdf\n"); - } + if (createSocket() == 0) { + g_timerfd = init_timerfd(); // create recv Thread if(pthread_create(&g_recvthread_id, NULL, recvThread, NULL) < 0) // thread creation failed -- 2.7.4