Diff for /libaitsched/src/hooks.c between versions 1.40 and 1.41.4.1

version 1.40, 2023/02/25 15:55:01 version 1.41.4.1, 2023/08/17 14:13:07
Line 362  sched_hook_cancel(void *task, void *arg __unused) Line 362  sched_hook_cancel(void *task, void *arg __unused)
                         EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, flg < 2 ? EV_DELETE : 0,                           EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, flg < 2 ? EV_DELETE : 0, 
                                         0, 0, (void*) TASK_VAL(t));                                          0, 0, (void*) TASK_VAL(t));
 #endif  #endif
                        /* restore signal */#endif
                        if (flg < 2) 
                                signal(TASK_VAL(t), SIG_DFL); 
#else 
                         if (flg < 2) {                          if (flg < 2) {
                                 pthread_mutex_lock(&TASK_ROOT(t)->root_sigmtx);                                  pthread_mutex_lock(&TASK_ROOT(t)->root_sigmtx);
                                 sigdelset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));                                  sigdelset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));
                                 pthread_mutex_unlock(&TASK_ROOT(t)->root_sigmtx);                                  pthread_mutex_unlock(&TASK_ROOT(t)->root_sigmtx);
                         }                          }
 #endif  
                         break;                          break;
 #ifdef AIO_SUPPORT  #ifdef AIO_SUPPORT
                 case taskAIO:                  case taskAIO:
Line 821  void * Line 817  void *
 sched_hook_signal(void *task, void *arg __unused)  sched_hook_signal(void *task, void *arg __unused)
 {  {
         sched_task_t *t = task;          sched_task_t *t = task;
   
 #if SUP_ENABLE == KQ_SUPPORT  #if SUP_ENABLE == KQ_SUPPORT
         struct kevent chg[1];          struct kevent chg[1];
         struct timespec timeout = { 0, 0 };          struct timespec timeout = { 0, 0 };
   #endif
   
         if (!t || !TASK_ROOT(t))          if (!t || !TASK_ROOT(t))
                 return (void*) -1;                  return (void*) -1;
   
        /* ignore signal */#if SUP_ENABLE == KQ_SUPPORT
        signal(TASK_VAL(t), SIG_IGN); 
 
 #ifdef __NetBSD__  #ifdef __NetBSD__
         EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_ADD | EV_CLEAR, 0, 0, (intptr_t) TASK_VAL(t));          EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_ADD | EV_CLEAR, 0, 0, (intptr_t) TASK_VAL(t));
 #else  #else
Line 844  sched_hook_signal(void *task, void *arg __unused) Line 838  sched_hook_signal(void *task, void *arg __unused)
                         LOGERR;                          LOGERR;
                 return (void*) -1;                  return (void*) -1;
         }          }
#else#endif
 
         pthread_mutex_lock(&TASK_ROOT(t)->root_sigmtx);          pthread_mutex_lock(&TASK_ROOT(t)->root_sigmtx);
         sigaddset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));          sigaddset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));
         pthread_mutex_unlock(&TASK_ROOT(t)->root_sigmtx);          pthread_mutex_unlock(&TASK_ROOT(t)->root_sigmtx);
 #endif  
   
         return NULL;          return NULL;
 }  }
Line 1391  sched_hook_fetch(void *root, void *arg __unused) Line 1385  sched_hook_fetch(void *root, void *arg __unused)
                 if (TAILQ_FIRST(&r->root_timer)) {                  if (TAILQ_FIRST(&r->root_timer)) {
                         m = r->root_wait;                          m = r->root_wait;
                         sched_timespecsub(&m, &now, &mtmp);                          sched_timespecsub(&m, &now, &mtmp);
                        r->root_wait = mtmp;                        if (mtmp.tv_sec < 0 || mtmp.tv_nsec < 0)
                                 /* don't wait for events. we have ready timer */
                                 sched_timespecclear(&r->root_wait);
                         else
                                 r->root_wait = mtmp;
                 } else {                  } else {
                         /* set wait INFTIM */                          /* set wait INFTIM */
                         sched_timespecinf(&r->root_wait);                          sched_timespecinf(&r->root_wait);
Line 1402  sched_hook_fetch(void *root, void *arg __unused) Line 1400  sched_hook_fetch(void *root, void *arg __unused)
   
                         m = TASK_TS(task);                          m = TASK_TS(task);
                         sched_timespecsub(&m, &now, &mtmp);                          sched_timespecsub(&m, &now, &mtmp);
                        r->root_wait = mtmp;                        if (mtmp.tv_sec < 0 || mtmp.tv_nsec < 0)
                                 /* don't wait for events. we have ready timer */
                                 sched_timespecclear(&r->root_wait);
                         else
                                 r->root_wait = mtmp;
                 } else {                  } else {
                         /* set wait INFTIM */                          /* set wait INFTIM */
                         sched_timespecinf(&r->root_wait);                          sched_timespecinf(&r->root_wait);

Removed from v.1.40  
changed lines
  Added in v.1.41.4.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>