Diff for /libaitsched/src/aitsched.c between versions 1.6 and 1.6.2.4

version 1.6, 2012/03/13 10:01:59 version 1.6.2.4, 2012/05/03 15:05:09
Line 93  sched_SetErr(int eno, char *estr, ...) Line 93  sched_SetErr(int eno, char *estr, ...)
 int  int
 schedRegisterHooks(sched_root_task_t * __restrict root)  schedRegisterHooks(sched_root_task_t * __restrict root)
 {  {
        if (!root || (root->root_data.iov_base && root->root_data.iov_len))        assert(root);
                return -1; 
   
         if (root->root_hooks.hook_root.fini)          if (root->root_hooks.hook_root.fini)
                 root->root_hooks.hook_root.fini(root, NULL);                  root->root_hooks.hook_root.fini(root, NULL);
Line 471  schedCancelby(sched_root_task_t * __restrict root, sch Line 470  schedCancelby(sched_root_task_t * __restrict root, sch
  * return: -1 error or 0 ok   * return: -1 error or 0 ok
  */   */
 int  int
schedRun(sched_root_task_t * __restrict root, volatile intptr_t * __restrict killState)schedRun(sched_root_task_t *root, volatile intptr_t * __restrict killState)
 {  {
         sched_task_t *task;          sched_task_t *task;
   
Line 481  schedRun(sched_root_task_t * __restrict root, volatile Line 480  schedRun(sched_root_task_t * __restrict root, volatile
         if (root->root_hooks.hook_exec.run)          if (root->root_hooks.hook_exec.run)
                 if (root->root_hooks.hook_exec.run(root, NULL))                  if (root->root_hooks.hook_exec.run(root, NULL))
                         return -1;                          return -1;
        if (root->root_hooks.hook_exec.fetch) {
                if (killState) {        if (killState) {
                        if (root->root_hooks.hook_exec.condition)                if (root->root_hooks.hook_exec.condition)
                                while (root->root_hooks.hook_exec.condition(root, (void*) killState)) {                        /* condition scheduler loop */
                                        if ((task = root->root_hooks.hook_exec.fetch(root, NULL)))                        while (root && root->root_hooks.hook_exec.fetch && 
                                                schedCall(task);                                        root->root_hooks.hook_exec.condition && 
                                }                                        root->root_hooks.hook_exec.condition(root, (void*) killState)) {
                        else                                if ((task = root->root_hooks.hook_exec.fetch(root, NULL)))
                                while (!*killState) {                                        schedCall(task);
                                        if ((task = root->root_hooks.hook_exec.fetch(root, NULL)))                        }
                                                schedCall(task);                else
                                }                        /* trigger scheduler loop */
                } else                        while (!*killState && root && root->root_hooks.hook_exec.fetch) {
                        while ((task = root->root_hooks.hook_exec.fetch(root, NULL)))                                if ((task = root->root_hooks.hook_exec.fetch(root, NULL)))
                                         schedCall(task);
                         }
         } else
                 /* infinite scheduler loop */
                 while (root && root->root_hooks.hook_exec.fetch)
                         if ((task = root->root_hooks.hook_exec.fetch(root, NULL)))
                                 schedCall(task);                                  schedCall(task);
         }  
   
         return 0;          return 0;
 }  }

Removed from v.1.6  
changed lines
  Added in v.1.6.2.4


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