Diff for /libaitsched/src/hooks.c between versions 1.18.4.4 and 1.21.4.1

version 1.18.4.4, 2013/08/15 18:39:00 version 1.21.4.1, 2013/08/26 14:29:20
Line 208  sched_hook_cancel(void *task, void *arg __unused) Line 208  sched_hook_cancel(void *task, void *arg __unused)
                         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
                         break;                          break;
#endif#endif  /* EVFILT_USER */
                 case taskTHREAD:                  case taskTHREAD:
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                         pthread_cancel((pthread_t) TASK_VAL(t));                          pthread_cancel((pthread_t) TASK_VAL(t));
 #endif  #endif
                         return NULL;                          return NULL;
   #if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME)
                 case taskRTC:                  case taskRTC:
                         timer_delete((timer_t) TASK_FLAG(t));                          timer_delete((timer_t) TASK_FLAG(t));
                         schedCancel((sched_task_t*) TASK_RET(t));                          schedCancel((sched_task_t*) TASK_RET(t));
                         return NULL;                          return NULL;
   #endif  /* HAVE_TIMER_CREATE */
                 default:                  default:
                         return NULL;                          return NULL;
         }          }
Line 1130  sched_hook_condition(void *root, void *arg) Line 1132  sched_hook_condition(void *root, void *arg)
  * @arg = unused   * @arg = unused
  * return: <0 errors and 0 ok   * return: <0 errors and 0 ok
  */   */
   #if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME)
 void *  void *
 sched_hook_rtc(void *task, void *arg __unused)  sched_hook_rtc(void *task, void *arg __unused)
 {  {
Line 1143  sched_hook_rtc(void *task, void *arg __unused) Line 1146  sched_hook_rtc(void *task, void *arg __unused)
   
         memset(&evt, 0, sizeof evt);          memset(&evt, 0, sizeof evt);
         evt.sigev_notify = SIGEV_SIGNAL;          evt.sigev_notify = SIGEV_SIGNAL;
        evt.sigev_signo = TASK_DATLEN(t) + SIGRTMIN;        evt.sigev_signo = (intptr_t) TASK_DATA(t) + SIGRTMIN;
         evt.sigev_value.sival_ptr = TASK_DATA(t);          evt.sigev_value.sival_ptr = TASK_DATA(t);
   
         if (timer_create(CLOCK_MONOTONIC, &evt, &tmr) == -1) {          if (timer_create(CLOCK_MONOTONIC, &evt, &tmr) == -1) {
Line 1155  sched_hook_rtc(void *task, void *arg __unused) Line 1158  sched_hook_rtc(void *task, void *arg __unused)
         } else          } else
                 TASK_FLAG(t) = (u_long) tmr;                  TASK_FLAG(t) = (u_long) tmr;
   
        if (!(sigt = schedSignal(TASK_ROOT(t), TASK_FUNC(t), TASK_ARG(t), evt.sigev_signo,         if (!(sigt = schedSignal(TASK_ROOT(t), _sched_rtcWrapper, TASK_ARG(t), evt.sigev_signo, 
                                TASK_DATA(t), (size_t) tmr))) {                                t, (size_t) tmr))) {
                 if (TASK_ROOT(t)->root_hooks.hook_exec.exception)                  if (TASK_ROOT(t)->root_hooks.hook_exec.exception)
                         TASK_ROOT(t)->root_hooks.hook_exec.exception(TASK_ROOT(t), NULL);                          TASK_ROOT(t)->root_hooks.hook_exec.exception(TASK_ROOT(t), NULL);
                 else                  else
Line 1170  sched_hook_rtc(void *task, void *arg __unused) Line 1173  sched_hook_rtc(void *task, void *arg __unused)
         its.it_value.tv_sec = t->task_val.ts.tv_sec;          its.it_value.tv_sec = t->task_val.ts.tv_sec;
         its.it_value.tv_nsec = t->task_val.ts.tv_nsec;          its.it_value.tv_nsec = t->task_val.ts.tv_nsec;
   
        if (timer_settime(tmr, TIMER_ABSTIME, &its, NULL) == -1) {        if (timer_settime(tmr, TIMER_RELTIME, &its, NULL) == -1) {
                 if (TASK_ROOT(t)->root_hooks.hook_exec.exception)                  if (TASK_ROOT(t)->root_hooks.hook_exec.exception)
                         TASK_ROOT(t)->root_hooks.hook_exec.exception(TASK_ROOT(t), NULL);                          TASK_ROOT(t)->root_hooks.hook_exec.exception(TASK_ROOT(t), NULL);
                 else                  else
Line 1180  sched_hook_rtc(void *task, void *arg __unused) Line 1183  sched_hook_rtc(void *task, void *arg __unused)
                 return (void*) -1;                  return (void*) -1;
         }          }
   
           if (!TASK_ISLOCKED(t))
                   TASK_LOCK(t);
   
         return NULL;          return NULL;
 }  }
   #endif  /* HAVE_TIMER_CREATE */

Removed from v.1.18.4.4  
changed lines
  Added in v.1.21.4.1


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