Diff for /libaitsched/src/hooks.c between versions 1.9 and 1.10.2.2

version 1.9, 2012/06/29 13:52:11 version 1.10.2.2, 2012/08/01 14:11:43
Line 156  sched_hook_cancel(void *task, void *arg __unused) Line 156  sched_hook_cancel(void *task, void *arg __unused)
                         EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_DELETE, 0, 0, (void*) TASK_VAL(t));                          EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_DELETE, 0, 0, (void*) TASK_VAL(t));
 #endif  #endif
                         break;                          break;
   #ifdef EVFILT_AIO
                   case taskAIO:
   #ifdef __NetBSD__
                           EV_SET(&chg[0], TASK_VAL(t), EVFILT_AIO, EV_DELETE, 0, 0, (intptr_t) TASK_VAL(t));
   #else
                           EV_SET(&chg[0], TASK_VAL(t), EVFILT_AIO, EV_DELETE, 0, 0, (void*) TASK_VAL(t));
   #endif
                           if (TASK_VAL(t)) {
                                   free((void*) TASK_VAL(t));
                                   TASK_VAL(t) = 0;
                           }
                           break;
   #endif
 #ifdef EVFILT_USER  #ifdef EVFILT_USER
                 case taskUSER:                  case taskUSER:
 #ifdef __NetBSD__  #ifdef __NetBSD__
Line 163  sched_hook_cancel(void *task, void *arg __unused) Line 176  sched_hook_cancel(void *task, void *arg __unused)
 #else  #else
                         EV_SET(&chg[0], TASK_VAL(t), EVFILT_USER, EV_DELETE, 0, 0, (void*) TASK_VAL(t));                          EV_SET(&chg[0], TASK_VAL(t), EVFILT_USER, EV_DELETE, 0, 0, (void*) TASK_VAL(t));
 #endif  #endif
 #endif  
                         break;                          break;
   #endif
                 default:                  default:
                         return NULL;                          return NULL;
         }          }
Line 435  sched_hook_fetch(void *root, void *arg __unused) Line 448  sched_hook_fetch(void *root, void *arg __unused)
         struct kevent evt[1], res[KQ_EVENTS];          struct kevent evt[1], res[KQ_EVENTS];
         register int i, flg;          register int i, flg;
         int en;          int en;
   #ifdef EVFILT_AIO
           struct aiocb *acb;
   #endif
   
         if (!r)          if (!r)
                 return NULL;                  return NULL;
Line 752  sched_hook_fetch(void *root, void *arg __unused) Line 768  sched_hook_fetch(void *root, void *arg __unused)
                                 if (flg > 1)                                  if (flg > 1)
                                         evt->flags ^= evt->flags;                                          evt->flags ^= evt->flags;
                                 break;                                  break;
   #ifdef EVFILT_AIO
                           case EVFILT_AIO:
                                   flg = 0;
                                   acb = (struct aiocb*) TASK_VAL(task);
                                   TAILQ_FOREACH_SAFE(task, &r->root_aio, task_node, tmp) {
                                           if (acb != ((struct aiocb*) res[i].ident) || 
                                                           acb->aio_sigevent.sigev_value.sival_ptr != res[i].udata)
                                                   continue;
                                           else
                                                   flg++;
                                           /* remove user handle */
   #ifdef HAVE_LIBPTHREAD
                                           pthread_mutex_lock(&r->root_mtx[taskAIO]);
   #endif
                                           TAILQ_REMOVE(&r->root_aio, task, task_node);
   #ifdef HAVE_LIBPTHREAD
                                           pthread_mutex_unlock(&r->root_mtx[taskAIO]);
   #endif
                                           task->task_type = taskREADY;
   #ifdef HAVE_LIBPTHREAD
                                           pthread_mutex_lock(&r->root_mtx[taskREADY]);
   #endif
                                           TAILQ_INSERT_TAIL(&r->root_ready, task, task_node);
   #ifdef HAVE_LIBPTHREAD
                                           pthread_mutex_unlock(&r->root_mtx[taskREADY]);
   #endif
                                   }
                                   /* if match at least 2, don't remove resouce of event */
                                   if (flg > 1)
                                           evt->flags ^= evt->flags;
                                   break;
   #endif  /* EVFILT_AIO */
 #ifdef EVFILT_USER  #ifdef EVFILT_USER
                         case EVFILT_USER:                          case EVFILT_USER:
                                 flg = 0;                                  flg = 0;
Line 784  sched_hook_fetch(void *root, void *arg __unused) Line 832  sched_hook_fetch(void *root, void *arg __unused)
                                 if (flg > 1)                                  if (flg > 1)
                                         evt->flags ^= evt->flags;                                          evt->flags ^= evt->flags;
                                 break;                                  break;
#endif#endif  /* EVFILT_USER */
                 }                  }
                 if (kevent(r->root_kq, evt, 1, NULL, 0, &now) == -1) {                  if (kevent(r->root_kq, evt, 1, NULL, 0, &now) == -1) {
                         if (r->root_hooks.hook_exec.exception) {                          if (r->root_hooks.hook_exec.exception) {

Removed from v.1.9  
changed lines
  Added in v.1.10.2.2


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