TQueue::TQueue() { if (!tpool_) { tpool_ = new TQItemPool(1000); } sptree_ = new SPTREE; spinit(sptree_); sptree2_ = new SPTREE; spinit(sptree2_); least_ = 0; #if COLLECT_TQueue_STATISTICS nmove = ninsert = nrem = nleast = nbal = ncmplxrem = 0; nfastmove = ncompare = nleastsrch = nfind = nfindsrch = 0; nenq1 = nenq2 = 0; #endif }
void timehandler(int signo, siginfo_t* info, void *context) { timer_data *datap; static int timesentered = 0; timesentered++; datap = (timer_data *)(info->si_value.sival_ptr); if (timesentered >= datap->numtimes) { datap->exitflag = 1; return; } if (spinit(datap->spintime) == -1) { write(STDERR_FILENO, "Spin failed in handler\n", 23); datap->exitflag = 1; } if (datap->type == TYPE_PERIODIC) return; if (datap->type == TYPE_ABSOLUTE) datap->tvalue.it_value = add_to_time(datap->tvalue.it_value, datap->inctime); if (timer_settime(datap->timid, datap->flags, &datap->tvalue, NULL) == -1) { write(STDERR_FILENO, "Could not start timer in handler\n",33); datap->exitflag = 1; } }