165
165
struct st_my_thread_var *current_my_thread_var= my_thread_var;
167
if((now= time(0)) == (time_t)-1)
169
fprintf(stderr, "%s: Warning: time() call failed\n", my_progname);
168
173
#ifndef USE_ONE_SIGNAL_HAND
169
174
pthread_sigmask(SIG_BLOCK,&full_signal_set,&old_mask);
329
334
for (i=0 ; i < alarm_queue.elements ;)
331
alarm_data=(ALARM*) queue_element(&alarm_queue,i);
332
alarm_data->alarmed=1; /* Info to thread */
333
if (pthread_equal(alarm_data->thread,alarm_thread) ||
334
pthread_kill(alarm_data->thread, thr_client_alarm))
336
queue_remove(&alarm_queue,i); /* No thread. Remove alarm */
339
i++; /* Signal next thread */
336
alarm_data=(ALARM*) queue_element(&alarm_queue,i);
337
alarm_data->alarmed=1; /* Info to thread */
338
if (pthread_equal(alarm_data->thread,alarm_thread) ||
339
pthread_kill(alarm_data->thread, thr_client_alarm))
341
queue_remove(&alarm_queue,i); /* No thread. Remove alarm */
344
i++; /* Signal next thread */
341
346
#ifndef USE_ALARM_THREAD
342
347
if (alarm_queue.elements)
343
alarm(1); /* Signal soon again */
348
alarm(1); /* Signal soon again */
348
uint32_t now=(uint32_t) my_time(0);
349
uint32_t next=now+10-(now%10);
353
uint32_t now= time(0);
354
uint32_t next= now+10-(now%10);
350
355
while ((alarm_data=(ALARM*) queue_top(&alarm_queue))->expire_time <= now)
352
alarm_data->alarmed=1; /* Info to thread */
353
if (pthread_equal(alarm_data->thread,alarm_thread) ||
354
pthread_kill(alarm_data->thread, thr_client_alarm))
356
queue_remove(&alarm_queue,0); /* No thread. Remove alarm */
357
if (!alarm_queue.elements)
362
alarm_data->expire_time=next;
363
queue_replaced(&alarm_queue);
357
alarm_data->alarmed=1; /* Info to thread */
358
if (pthread_equal(alarm_data->thread,alarm_thread) ||
359
pthread_kill(alarm_data->thread, thr_client_alarm))
361
queue_remove(&alarm_queue,0); /* No thread. Remove alarm */
362
if (!alarm_queue.elements)
367
alarm_data->expire_time=next;
368
queue_replaced(&alarm_queue);
366
371
#ifndef USE_ALARM_THREAD
367
372
if (alarm_queue.elements)
369
alarm((uint) (alarm_data->expire_time-now));
374
alarm((uint) (alarm_data->expire_time-now));
370
375
next_alarm_expire_time= alarm_data->expire_time;
473
478
info->max_used_alarms= max_used_alarms;
474
479
if ((info->active_alarms= alarm_queue.elements))
476
uint32_t now=(uint32_t) my_time(0);
481
uint32_t now= (uint32_t)time(0);
478
483
ALARM *alarm_data= (ALARM*) queue_top(&alarm_queue);
479
484
time_diff= (long) (alarm_data->expire_time - now);
516
526
if (alarm_queue.elements)
518
uint32_t sleep_time,now= my_time(0);
528
uint32_t sleep_time, now;
530
if ((now= time(0)) == (time_t)-1)
532
pthread_mutex_unlock(&LOCK_alarm);
519
536
if (alarm_aborted)
522
sleep_time= ((ALARM*) queue_top(&alarm_queue))->expire_time;
539
sleep_time= ((ALARM*) queue_top(&alarm_queue))->expire_time;
523
540
if (sleep_time > now)
525
abstime.tv_sec=sleep_time;
542
abstime.tv_sec=sleep_time;
527
544
next_alarm_expire_time= sleep_time;
528
if ((error=pthread_cond_timedwait(&COND_alarm,&LOCK_alarm,&abstime)) &&
529
error != ETIME && error != ETIMEDOUT)
545
if ((error=pthread_cond_timedwait(&COND_alarm,&LOCK_alarm,&abstime)) &&
546
error != ETIME && error != ETIMEDOUT)
535
552
else if (alarm_aborted == -1)