Diff for /libaitsched/src/tasks.c between versions 1.17.2.1 and 1.20

version 1.17.2.1, 2013/08/15 19:45:30 version 1.20, 2013/08/26 13:36:45
Line 129  _sched_threadWrapper(sched_task_t *t) Line 129  _sched_threadWrapper(sched_task_t *t)
 {  {
         void *ret = NULL;          void *ret = NULL;
         sem_t *s = NULL;          sem_t *s = NULL;
           sched_root_task_t *r;
   
         if (!t || !TASK_ROOT(t) || !TASK_RET(t))          if (!t || !TASK_ROOT(t) || !TASK_RET(t))
                 pthread_exit(ret);                  pthread_exit(ret);
        else        else {
                 s = (sem_t*) TASK_RET(t);                  s = (sem_t*) TASK_RET(t);
                   r = TASK_ROOT(t);
           }
   
         pthread_cleanup_push((void (*)(void*)) _sched_threadCleanup, t);          pthread_cleanup_push((void (*)(void*)) _sched_threadCleanup, t);
   
         pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);          pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
         pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);          pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
   
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_lock(&r->root_mtx[taskTHREAD]);
   #endif
           TAILQ_REMOVE(&r->root_thread, t, task_node);
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_unlock(&r->root_mtx[taskTHREAD]);
   #endif
           t->task_type = taskUNUSE;
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_lock(&r->root_mtx[taskUNUSE]);
   #endif
           TAILQ_INSERT_TAIL(&r->root_unuse, t, task_node);
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_unlock(&r->root_mtx[taskUNUSE]);
   #endif
   
         /* notify parent, thread is ready for execution */          /* notify parent, thread is ready for execution */
         sem_post(s);          sem_post(s);
         pthread_testcancel();          pthread_testcancel();
Line 149  _sched_threadWrapper(sched_task_t *t) Line 168  _sched_threadWrapper(sched_task_t *t)
         pthread_cleanup_pop(42);          pthread_cleanup_pop(42);
         TASK_ROOT(t)->root_ret = ret;          TASK_ROOT(t)->root_ret = ret;
         pthread_exit(ret);          pthread_exit(ret);
   }
   #endif
   
   #if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME)
   void *
   _sched_rtcWrapper(sched_task_t *t)
   {
           void *ret = NULL;
           sched_task_func_t func;
           sched_task_t *task;
           sched_root_task_t *r;
   
           if (!t || !TASK_ROOT(t) || !TASK_DATA(t))
                   return NULL;
           else {
                   r = TASK_ROOT(t);
                   task = (sched_task_t*) TASK_DATA(t);
                   func = TASK_FUNC(task);
           }
   
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_lock(&r->root_mtx[taskRTC]);
   #endif
           TAILQ_REMOVE(&r->root_rtc, task, task_node);
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_unlock(&r->root_mtx[taskRTC]);
   #endif
           task->task_type = taskUNUSE;
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_lock(&r->root_mtx[taskUNUSE]);
   #endif
           TAILQ_INSERT_TAIL(&r->root_unuse, task, task_node);
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_unlock(&r->root_mtx[taskUNUSE]);
   #endif
   
           ret = func(task);
   
           timer_delete((timer_t) TASK_DATLEN(t));
           return ret;
 }  }
 #endif  #endif
   

Removed from v.1.17.2.1  
changed lines
  Added in v.1.20


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