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

version 1.16.6.4, 2013/08/15 19:06:20 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 152  _sched_threadWrapper(sched_task_t *t) Line 171  _sched_threadWrapper(sched_task_t *t)
 }  }
 #endif  #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
   
 #pragma GCC visibility pop  #pragma GCC visibility pop
   
 /*  /*
Line 1330  schedThread(sched_root_task_t * __restrict root, sched Line 1389  schedThread(sched_root_task_t * __restrict root, sched
  * @arg = 1st func argument   * @arg = 1st func argument
  * @ts = timeout argument structure, minimum alarm timer resolution is 1msec!   * @ts = timeout argument structure, minimum alarm timer resolution is 1msec!
  * @opt_data = Optional RTC ID   * @opt_data = Optional RTC ID
 * @opt_dlen = Optional Signal No. * @opt_dlen = Optional data length
  * return: NULL error or !=NULL new queued task   * return: NULL error or !=NULL new queued task
  */   */
 sched_task_t *  sched_task_t *

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


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