X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=nucleus%2Flibrary%2Ftimely%2Ftimer_driver.cpp;h=8b6a5fbd6589d6aca233306fe316e62d220983d3;hb=da79480d6d2efe23173e659a4b7a27e29809387b;hp=9be8aba0214f532a0458a36d0b370f226c6d5276;hpb=457b128b77b5b4a0b7dd3094de543de2ce1477ad;p=feisty_meow.git diff --git a/nucleus/library/timely/timer_driver.cpp b/nucleus/library/timely/timer_driver.cpp index 9be8aba0..8b6a5fbd 100644 --- a/nucleus/library/timely/timer_driver.cpp +++ b/nucleus/library/timely/timer_driver.cpp @@ -32,11 +32,11 @@ using namespace processes; using namespace structures; using namespace timely; -//#define DEBUG_TIMER_DRIVER +#define DEBUG_TIMER_DRIVER // uncomment for noisy code. #undef LOG -#define LOG(tpr) printf( (time_stamp::notarize() + "timer_driver::" + func + tpr).s() ) +#define LOG(tpr) printf("%s", (time_stamp::notarize() + "timer_driver::" + func + tpr).s() ) namespace timely { @@ -62,7 +62,7 @@ SAFE_STATIC(timer_driver, timer_driver::global_timer_driver, ) ////////////// -#ifdef __UNIX__ +#if defined(__UNIX__) || defined(__GNU_WINDOWS__) const int OUR_SIGNAL = SIGUSR2; class signalling_thread : public ethread @@ -78,7 +78,7 @@ private: }; #endif -#ifdef __UNIX__ +#if defined(__UNIX__) || defined(__GNU_WINDOWS__) void timer_driver_private_handler(int signal_seen) #elif defined(__WIN32__) void __stdcall timer_driver_private_handler(window_handle hwnd, basis::un_int msg, @@ -92,7 +92,7 @@ void __stdcall timer_driver_private_handler(window_handle hwnd, basis::un_int ms #define static_class_name() "timer_driver" FUNCDEF("timer_driver_private_handler"); #endif -#ifdef __UNIX__ +#if defined(__UNIX__) || defined(__GNU_WINDOWS__) int seen = signal_seen; if (seen != OUR_SIGNAL) { #elif defined(__WIN32__) @@ -102,7 +102,7 @@ void __stdcall timer_driver_private_handler(window_handle hwnd, basis::un_int ms if (true) { // unknown OS. #endif #ifdef DEBUG_TIMER_DRIVER - LOG(a_sprintf("unknown signal/message %x caught.", (void *)seen)); + LOG(a_sprintf("unknown signal/message %d caught.", seen)); #endif return; } @@ -147,11 +147,10 @@ public: timer_driver::timer_driver() : _timers(new driven_objects_list), _lock(new mutex), -#ifdef __UNIX__ +#if defined(__UNIX__) || defined(__GNU_WINDOWS__) _prompter(new signalling_thread(INITIAL_TIMER_GRANULARITY)), -#endif -#ifdef __WIN32__ - _real_timer_id(NIL), +#else + _real_timer_id(NULL_POINTER), #endif _in_timer(false) { @@ -160,7 +159,7 @@ timer_driver::timer_driver() #ifdef __UNIX__ // register for the our personal signal. signal(OUR_SIGNAL, &timer_driver_private_handler); - _prompter->start(NIL); + _prompter->start(NULL_POINTER); #endif } @@ -174,13 +173,13 @@ timer_driver::~timer_driver() struct sigaction action; action.sa_handler = SIG_DFL; - action.sa_sigaction = NIL; + action.sa_sigaction = NULL_POINTER; sigemptyset(&action.sa_mask); action.sa_flags = 0; #ifndef __APPLE__ - action.sa_restorer = NIL; + action.sa_restorer = NULL_POINTER; #endif - int ret = sigaction(OUR_SIGNAL, &action, NIL); + int ret = sigaction(OUR_SIGNAL, &action, NULL_POINTER); if (ret) { ///uhhh } @@ -215,9 +214,9 @@ timer_driver::~timer_driver() #endif } -#ifdef __WIN32__ -basis::un_int *timer_driver::real_timer_id() { return _real_timer_id; } -#endif +//#ifdef _MSC_VER +//basis::un_int *timer_driver::real_timer_id() { return _real_timer_id; } +//#endif bool timer_driver::zap_timer(timeable *to_remove) { @@ -405,13 +404,13 @@ void timer_driver::hookup_OS_timer(int duration) #ifdef DEBUG_TIMER_DRIVER LOG(a_sprintf("hooking next OS timer in %d ms.", duration)); #endif -#ifdef __UNIX__ +//#if defined(__UNIX__) || defined(__GNU_WINDOWS__) // just make our thread hit after the duration specified. _prompter->reschedule(duration); -#elif defined(__WIN32__) +/*#elif defined(_MSC_VER) int max_tries_left = 100; while (max_tries_left-- >= 0) { - _real_timer_id = (basis::un_int *)SetTimer(NIL, 0, duration, + _real_timer_id = (basis::un_int *)SetTimer(NULL_POINTER, 0, duration, timer_driver_private_handler); if (!_real_timer_id) { // failure to set the timer. @@ -422,6 +421,7 @@ void timer_driver::hookup_OS_timer(int duration) break; // success hooking timer. } #endif +*/ } void timer_driver::unhook_OS_timer() @@ -429,12 +429,12 @@ void timer_driver::unhook_OS_timer() #ifdef DEBUG_TIMER_DRIVER FUNCDEF("unhook_OS_timer"); #endif -#ifdef __UNIX__ +//#if defined(__UNIX__) || defined(__GNU_WINDOWS__) // postpone the thread for quite a while so we can take care of business. _prompter->reschedule(LONG_TIME); -#elif defined(__WIN32__) - if (_real_timer_id) KillTimer(NIL, (UINT_PTR)_real_timer_id); -#endif +//#elif defined(_MSC_VER) +// if (_real_timer_id) KillTimer(NULL_POINTER, (UINT_PTR)_real_timer_id); +//#endif #ifdef DEBUG_TIMER_DRIVER LOG("unhooked OS timer."); #endif