X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Falarm.cc;h=6193fbb3cd094065a089c9a21cc84a1c67ae0127;hb=1c2f1d893384cf632697ce46e21d2f0c1edfc389;hp=93c8ccf74e14b307fb198041e9ababaca60e0420;hpb=6b83fd5838692b71a50710b9bc13680f9c586167;p=awesomized%2Flibmemcached diff --git a/libtest/alarm.cc b/libtest/alarm.cc index 93c8ccf7..6193fbb3 100644 --- a/libtest/alarm.cc +++ b/libtest/alarm.cc @@ -34,7 +34,8 @@ * */ -#include "mem_config.h" +#include "libtest/yatlcon.h" + #include #include @@ -51,42 +52,49 @@ static const struct itimerval cancel_timer= { default_it_interval, default_it_in void set_alarm() { - if (gdb_is_caller() == false) + if (setitimer(ITIMER_VIRTUAL, &defualt_timer, NULL) == -1) { - if (setitimer(ITIMER_VIRTUAL, &defualt_timer, NULL) == -1) - { - Error << "setitimer() failed"; - } + Error << "setitimer() failed"; } } void set_alarm(long tv_sec, long tv_usec) { - if (gdb_is_caller() == false) + // For the moment use any value to YATL_ALARM to cancel alarming. + if (getenv("YATL_ALARM")) { -#if defined(TARGET_OS_OSX) && TARGET_OS_OSX - struct timeval it_value= { time_t(tv_sec), suseconds_t(tv_usec) }; + errno= 0; + tv_sec= strtol(getenv("YATL_ALARM"), (char **) NULL, 10); + + if (errno != 0) + { + FATAL("Bad value for YATL_ALARM"); + } + else if (tv_sec == 0) + { + cancel_alarm(); + } + } + +#ifdef __APPLE__ + struct timeval it_value= { time_t(tv_sec), suseconds_t(tv_usec) }; #else - struct timeval it_value= { tv_sec, tv_usec }; + struct timeval it_value= { tv_sec, tv_usec }; #endif - struct itimerval timer= { default_it_interval, it_value }; + struct itimerval timer= { default_it_interval, it_value }; - if (setitimer(ITIMER_VIRTUAL, &timer, NULL) == -1) - { - Error << "setitimer() failed"; - } + if (setitimer(ITIMER_VIRTUAL, &timer, NULL) == -1) + { + Error << "setitimer() failed"; } } void cancel_alarm() { - if (gdb_is_caller() == false) + if (setitimer(ITIMER_VIRTUAL, &cancel_timer, NULL) == -1) { - if (setitimer(ITIMER_VIRTUAL, &cancel_timer, NULL) == -1) - { - Error << "setitimer() failed"; - } + Error << "setitimer() failed"; } }