Diff for /libaitsched/src/tasks.c between versions 1.13 and 1.13.2.3

version 1.13, 2012/08/21 12:54:39 version 1.13.2.3, 2012/08/22 23:43:36
Line 106  sched_unuseTask(sched_task_t * __restrict task) Line 106  sched_unuseTask(sched_task_t * __restrict task)
         return task;          return task;
 }  }
   
   #pragma GCC visibility push(hidden)
   
   void *
   _sched_threadJoin(sched_task_t *task)
   {
           void *ret = NULL;
   
           if (!task)
                   return NULL;
   
   #ifdef HAVE_LIBPTHREAD
           if (pthread_kill((pthread_t) TASK_VAL(task), 0)) {
                   pthread_join((pthread_t) TASK_VAL(task), &ret);
                   TASK_ROOT(task)->root_ret = ret;
           } else {
                   usleep(10000);
                   schedTaskSelf(task);
           }
   #endif
   
           return NULL;
   }
   
   #pragma GCC visibility pop
   
 /*  /*
    * sched_taskExit() - Exit routine for scheduler task, explicit required for thread tasks
    *
    * @task = current task
    * @retcode = return code
    * return: return code
    */
   inline void *
   sched_taskExit(sched_task_t *task, intptr_t retcode)
   {
           if (!task || !TASK_ROOT(task))
                   return (void*) -1;
   
           if (TASK_ROOT(task)->root_hooks.hook_exec.exit)
                   TASK_ROOT(task)->root_hooks.hook_exec.exit(task, (void*) retcode);
   
           TASK_ROOT(task)->root_ret = (void*) retcode;
   
   #ifdef HAVE_LIBPTHREAD
           if (TASK_TYPE(task) == taskTHREAD) {
                   if (TASK_FLAG(task) == PTHREAD_CREATE_JOINABLE) /* joinable thread */
                           schedTask(TASK_ROOT(task), _sched_threadJoin, TASK_ARG(task),
                                           TASK_VAL(task), TASK_DATA(task), TASK_DATLEN(task));
                   sched_unuseTask(task);
                   pthread_exit((void*) retcode);
           }
   #endif
   
           return (void*) retcode;
   }
   
   
   /*
  * schedRead() - Add READ I/O task to scheduler queue   * schedRead() - Add READ I/O task to scheduler queue
  *   *
  * @root = root task   * @root = root task
Line 1176  schedThread(sched_root_task_t * __restrict root, sched Line 1232  schedThread(sched_root_task_t * __restrict root, sched
         TASK_ROOT(task) = root;          TASK_ROOT(task) = root;
   
         TASK_ARG(task) = arg;          TASK_ARG(task) = arg;
           TASK_FLAG(task) = detach ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE;
   
         TASK_DATA(task) = opt_data;          TASK_DATA(task) = opt_data;
         TASK_DATLEN(task) = opt_dlen;          TASK_DATLEN(task) = opt_dlen;
   
         pthread_attr_init(&attr);          pthread_attr_init(&attr);
        pthread_attr_setdetachstate(&attr, detach ?         pthread_attr_setdetachstate(&attr, TASK_FLAG(task));
                        PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE); 
         if (root->root_hooks.hook_add.thread)          if (root->root_hooks.hook_add.thread)
                 ptr = root->root_hooks.hook_add.thread(task, &attr);                  ptr = root->root_hooks.hook_add.thread(task, &attr);
         else          else

Removed from v.1.13  
changed lines
  Added in v.1.13.2.3


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