Diff for /libaitsched/src/hooks.c between versions 1.39.4.1 and 1.40.2.1

version 1.39.4.1, 2023/02/23 17:13:01 version 1.40.2.1, 2023/07/27 20:47:12
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 */  
                         if (flg < 2)  
                                 signal(TASK_VAL(t), SIG_DFL);  
 #else  
                         if (flg < 2)  
                                 sigdelset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));  
 #endif  #endif
                           if (flg < 2) {
                                   pthread_mutex_lock(&TASK_ROOT(t)->root_sigmtx);
                                   sigdelset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));
                                   pthread_mutex_unlock(&TASK_ROOT(t)->root_sigmtx);
                           }
                         break;                          break;
 #ifdef AIO_SUPPORT  #ifdef AIO_SUPPORT
                 case taskAIO:                  case taskAIO:
Line 818  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 841  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  
         sigaddset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));  
 #endif  #endif
   
           pthread_mutex_lock(&TASK_ROOT(t)->root_sigmtx);
           sigaddset(&TASK_ROOT(t)->root_sigset, TASK_VAL(t));
           pthread_mutex_unlock(&TASK_ROOT(t)->root_sigmtx);
   
         return NULL;          return NULL;
 }  }
   
Line 1343  sched_hook_fetch(void *root, void *arg __unused) Line 1342  sched_hook_fetch(void *root, void *arg __unused)
 {  {
         sched_root_task_t *r = root;          sched_root_task_t *r = root;
         sched_task_t *task, *tmp;          sched_task_t *task, *tmp;
        struct timespec now, m, mtmp;        struct timespec now, m, mtmp, *tsmin;
 #if SUP_ENABLE == KQ_SUPPORT  #if SUP_ENABLE == KQ_SUPPORT
         struct kevent res[KQ_EVENTS];          struct kevent res[KQ_EVENTS];
         struct timespec *timeout;          struct timespec *timeout;
Line 1406  sched_hook_fetch(void *root, void *arg __unused) Line 1405  sched_hook_fetch(void *root, void *arg __unused)
         } else  /* no waiting for event, because we have ready task */          } else  /* no waiting for event, because we have ready task */
                 sched_timespecclear(&r->root_wait);                  sched_timespecclear(&r->root_wait);
   
        if (r->root_wait.tv_sec != -1 && r->root_wait.tv_nsec != -1) {        if (!sched_timespecisinf(&r->root_wait)) {
                 tsmin = sched_timespecmin(&r->root_wait, &r->root_poll);
 #if SUP_ENABLE == KQ_SUPPORT  #if SUP_ENABLE == KQ_SUPPORT
                timeout = &r->root_wait;                timeout = tsmin;
 #elif SUP_ENABLE == EP_SUPPORT  #elif SUP_ENABLE == EP_SUPPORT
                timeout = r->root_wait.tv_sec * 1000 + r->root_wait.tv_nsec / 1000000;                timeout = tsmin->tv_sec * 1000 + tsmin->tv_nsec / 1000000;
 #else  #else
                sched_timespec2val(&r->root_wait, &tv);                sched_timespec2val(tsmin, &tv);
                 timeout = &tv;                  timeout = &tv;
 #endif  /* KQ_SUPPORT */  #endif  /* KQ_SUPPORT */
         } else if (sched_timespecisinf(&r->root_poll))          } else if (sched_timespecisinf(&r->root_poll))

Removed from v.1.39.4.1  
changed lines
  Added in v.1.40.2.1


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