/*void check_scheduled_tasks( void ) { unsigned idx; unsigned count; time_t now; if (p_task_list) { now = poltime(NULL); count = p_task_list->count(); for( idx = 0; idx < count; idx++ ) { ScheduledTask *task = (*p_task_list)[idx]; if (task->ready(now)) { task->execute(now); } if (task->cancelled) { p_task_list->remove( idx ); delete task; } } } } */ void check_scheduled_tasks( polclock_t* clocksleft, bool* pactivity ) { THREAD_CHECKPOINT( tasks, 101 ); TaskScheduler::cleanse(); polclock_t now_clock = polclock(); TRACEBUF_ADDELEM( "check_scheduled_tasks now_clock", now_clock ); bool activity = false; passert( !task_queue.empty() ); THREAD_CHECKPOINT( tasks, 102 ); for ( ;; ) { THREAD_CHECKPOINT( tasks, 103 ); ScheduledTask* task = task_queue.top(); TRACEBUF_ADDELEM( "check_scheduled_tasks toptask->nextrun", task->next_run_clock() ); THREAD_CHECKPOINT( tasks, 104 ); if ( !task->ready( now_clock ) ) { *clocksleft = task->clocksleft( now_clock ); *pactivity = activity; TRACEBUF_ADDELEM( "check_scheduled_tasks clocksleft", *clocksleft ); return; } THREAD_CHECKPOINT( tasks, 105 ); if ( !task->late( now_clock ) ) { INC_PROFILEVAR( tasks_ontime ); } else { INC_PROFILEVAR( tasks_late ); INC_PROFILEVAR_BY( tasks_late_ticks, task->ticks_late( now_clock ) ); } THREAD_CHECKPOINT( tasks, 106 ); task_queue.pop(); THREAD_CHECKPOINT( tasks, 107 ); task->execute( now_clock ); THREAD_CHECKPOINT( tasks, 108 ); activity = true; if ( task->cancelled ) { THREAD_CHECKPOINT( tasks, 109 ); delete task; } else { THREAD_CHECKPOINT( tasks, 110 ); task_queue.push( task ); } THREAD_CHECKPOINT( tasks, 111 ); } }
void send_ClientTransmit_pulse() { TRACEBUF_ADDELEM( "ClientTransmitPulse", 1 ); PulseEvent( hEvClientTransmit ); }
void send_pulse() { TRACEBUF_ADDELEM( "Pulse", 1 ); PulseEvent( hEvPulse ); }