Diff for /libaitsched/src/aitsched.c between versions 1.15.2.1 and 1.15.2.3

version 1.15.2.1, 2012/08/22 10:33:45 version 1.15.2.3, 2012/08/23 00:31:41
Line 121  schedRegisterHooks(sched_root_task_t * __restrict root Line 121  schedRegisterHooks(sched_root_task_t * __restrict root
         return 0;          return 0;
 }  }
   
   #ifdef HAVE_LIBPTHREAD
   static void
   _sched_threadChild()
   {
           pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
           pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
           pthread_testcancel();
   }
   #endif
   
 /*  /*
  * schedInit() - Init scheduler   * schedInit() - Init scheduler
  *   *
Line 181  schedInit(void ** __restrict data, size_t datlen) Line 191  schedInit(void ** __restrict data, size_t datlen)
                 TAILQ_INIT(&root->root_thread);                  TAILQ_INIT(&root->root_thread);
   
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                   pthread_atfork(NULL, NULL, _sched_threadChild);
   
                 for (i = 0; i < taskMAX; i++)                  for (i = 0; i < taskMAX; i++)
                         pthread_mutex_unlock(&root->root_mtx[i]);                          pthread_mutex_unlock(&root->root_mtx[i]);
 #endif  #endif
Line 215  schedEnd(sched_root_task_t ** __restrict root) Line 227  schedEnd(sched_root_task_t ** __restrict root)
         sched_task_t *task, *tmp;          sched_task_t *task, *tmp;
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
         register int i;          register int i;
         pthread_t tid;  
 #endif  #endif
   
         if (!root || !*root)          if (!root || !*root)
Line 247  schedEnd(sched_root_task_t ** __restrict root) Line 258  schedEnd(sched_root_task_t ** __restrict root)
                 schedCancel(task);                  schedCancel(task);
         TAILQ_FOREACH_SAFE(task, &(*root)->root_ready, task_node, tmp)          TAILQ_FOREACH_SAFE(task, &(*root)->root_ready, task_node, tmp)
                 schedCancel(task);                  schedCancel(task);
        TAILQ_FOREACH_SAFE(task, &(*root)->root_thread, task_node, tmp) {        TAILQ_FOREACH_SAFE(task, &(*root)->root_thread, task_node, tmp)
                tid = (pthread_t) TASK_VAL(task); 
                 schedCancel(task);                  schedCancel(task);
 #ifdef HAVE_LIBPTHREAD  
                 if (TASK_FLAG(task) == PTHREAD_CREATE_JOINABLE)  
                         pthread_join(tid, NULL);  
 #endif  
         }  
         TAILQ_FOREACH_SAFE(task, &(*root)->root_task, task_node, tmp)          TAILQ_FOREACH_SAFE(task, &(*root)->root_task, task_node, tmp)
                 schedCancel(task);                  schedCancel(task);
   

Removed from v.1.15.2.1  
changed lines
  Added in v.1.15.2.3


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