Diff for /libaitsched/src/hooks.c between versions 1.12 and 1.13.2.2

version 1.12, 2012/08/08 08:25:39 version 1.13.2.2, 2012/08/21 11:45:35
Line 207  sched_hook_cancel(void *task, void *arg __unused) Line 207  sched_hook_cancel(void *task, void *arg __unused)
 #endif  #endif
                         break;                          break;
 #endif  #endif
                   case taskTHREAD:
   #ifdef HAVE_LIBPTHREAD
                           pthread_cancel((pthread_t) TASK_VAL(t));
   #endif
                 default:                  default:
                         return NULL;                          return NULL;
         }          }
Line 592  sched_hook_fetch(void *root, void *arg __unused) Line 596  sched_hook_fetch(void *root, void *arg __unused)
                                 TAILQ_FOREACH_SAFE(task, &r->root_read, task_node, tmp) {                                  TAILQ_FOREACH_SAFE(task, &r->root_read, task_node, tmp) {
                                         if (TASK_FD(task) != ((intptr_t) res[i].udata))                                          if (TASK_FD(task) != ((intptr_t) res[i].udata))
                                                 continue;                                                  continue;
                                        else                                        else {
                                                 flg++;                                                  flg++;
                                                   TASK_RET(task) = res[i].data;
                                                   TASK_FLAG(task) = res[i].fflags;
                                           }
                                         /* remove read handle */                                          /* remove read handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                                         pthread_mutex_lock(&r->root_mtx[taskREAD]);                                          pthread_mutex_lock(&r->root_mtx[taskREAD]);
Line 642  sched_hook_fetch(void *root, void *arg __unused) Line 649  sched_hook_fetch(void *root, void *arg __unused)
                                 TAILQ_FOREACH_SAFE(task, &r->root_write, task_node, tmp) {                                  TAILQ_FOREACH_SAFE(task, &r->root_write, task_node, tmp) {
                                         if (TASK_FD(task) != ((intptr_t) res[i].udata))                                          if (TASK_FD(task) != ((intptr_t) res[i].udata))
                                                 continue;                                                  continue;
                                        else                                        else {
                                                 flg++;                                                  flg++;
                                                   TASK_RET(task) = res[i].data;
                                                   TASK_FLAG(task) = res[i].fflags;
                                           }
                                         /* remove write handle */                                          /* remove write handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                                         pthread_mutex_lock(&r->root_mtx[taskWRITE]);                                          pthread_mutex_lock(&r->root_mtx[taskWRITE]);
Line 692  sched_hook_fetch(void *root, void *arg __unused) Line 702  sched_hook_fetch(void *root, void *arg __unused)
                                 TAILQ_FOREACH_SAFE(task, &r->root_alarm, task_node, tmp) {                                  TAILQ_FOREACH_SAFE(task, &r->root_alarm, task_node, tmp) {
                                         if ((uintptr_t) TASK_DATA(task) != ((uintptr_t) res[i].udata))                                          if ((uintptr_t) TASK_DATA(task) != ((uintptr_t) res[i].udata))
                                                 continue;                                                  continue;
                                        else                                        else {
                                                 flg++;                                                  flg++;
                                                   TASK_RET(task) = res[i].data;
                                                   TASK_FLAG(task) = res[i].fflags;
                                           }
                                         /* remove alarm handle */                                          /* remove alarm handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                                         pthread_mutex_lock(&r->root_mtx[taskALARM]);                                          pthread_mutex_lock(&r->root_mtx[taskALARM]);
Line 722  sched_hook_fetch(void *root, void *arg __unused) Line 735  sched_hook_fetch(void *root, void *arg __unused)
                                                 continue;                                                  continue;
                                         else {                                          else {
                                                 flg++;                                                  flg++;
                                                TASK_DATA(task) = (void*) (uintptr_t) res[i].data;                                                TASK_RET(task) = res[i].data;
                                                TASK_DATLEN(task) = res[i].fflags;                                                TASK_FLAG(task) = res[i].fflags;
                                         }                                          }
                                         /* remove node handle */                                          /* remove node handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
Line 753  sched_hook_fetch(void *root, void *arg __unused) Line 766  sched_hook_fetch(void *root, void *arg __unused)
                                                 continue;                                                  continue;
                                         else {                                          else {
                                                 flg++;                                                  flg++;
                                                TASK_DATA(task) = (void*) (uintptr_t) res[i].data;                                                TASK_RET(task) = res[i].data;
                                                TASK_DATLEN(task) = res[i].fflags;                                                TASK_FLAG(task) = res[i].fflags;
                                         }                                          }
                                         /* remove proc handle */                                          /* remove proc handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
Line 782  sched_hook_fetch(void *root, void *arg __unused) Line 795  sched_hook_fetch(void *root, void *arg __unused)
                                 TAILQ_FOREACH_SAFE(task, &r->root_signal, task_node, tmp) {                                  TAILQ_FOREACH_SAFE(task, &r->root_signal, task_node, tmp) {
                                         if (TASK_VAL(task) != ((uintptr_t) res[i].udata))                                          if (TASK_VAL(task) != ((uintptr_t) res[i].udata))
                                                 continue;                                                  continue;
                                        else                                        else {
                                                 flg++;                                                  flg++;
                                                   TASK_RET(task) = res[i].data;
                                                   TASK_FLAG(task) = res[i].fflags;
                                           }
                                         /* remove signal handle */                                          /* remove signal handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                                         pthread_mutex_lock(&r->root_mtx[taskSIGNAL]);                                          pthread_mutex_lock(&r->root_mtx[taskSIGNAL]);
Line 812  sched_hook_fetch(void *root, void *arg __unused) Line 828  sched_hook_fetch(void *root, void *arg __unused)
                                         acb = (struct aiocb*) TASK_VAL(task);                                          acb = (struct aiocb*) TASK_VAL(task);
                                         if (acb != ((struct aiocb*) res[i].udata))                                          if (acb != ((struct aiocb*) res[i].udata))
                                                 continue;                                                  continue;
                                        else                                        else {
                                                 flg++;                                                  flg++;
                                                   TASK_RET(task) = res[i].data;
                                                   TASK_FLAG(task) = res[i].fflags;
                                           }
                                         /* remove user handle */                                          /* remove user handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                                         pthread_mutex_lock(&r->root_mtx[taskAIO]);                                          pthread_mutex_lock(&r->root_mtx[taskAIO]);
Line 851  sched_hook_fetch(void *root, void *arg __unused) Line 870  sched_hook_fetch(void *root, void *arg __unused)
                                         acbs = (struct aiocb**) TASK_VAL(task);                                          acbs = (struct aiocb**) TASK_VAL(task);
                                         if (acbs != ((struct aiocb**) res[i].udata))                                          if (acbs != ((struct aiocb**) res[i].udata))
                                                 continue;                                                  continue;
                                        else                                        else {
                                                 flg++;                                                  flg++;
                                                   TASK_RET(task) = res[i].data;
                                                   TASK_FLAG(task) = res[i].fflags;
                                           }
                                         /* remove user handle */                                          /* remove user handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                                         pthread_mutex_lock(&r->root_mtx[taskLIO]);                                          pthread_mutex_lock(&r->root_mtx[taskLIO]);
Line 900  sched_hook_fetch(void *root, void *arg __unused) Line 922  sched_hook_fetch(void *root, void *arg __unused)
                                                 continue;                                                  continue;
                                         else {                                          else {
                                                 flg++;                                                  flg++;
                                                TASK_DATA(task) = (void*) res[i].data;                                                TASK_RET(task) = res[i].data;
                                                TASK_DATLEN(task) = res[i].fflags;                                                TASK_FLAG(task) = res[i].fflags;
                                         }                                          }
                                         /* remove user handle */                                          /* remove user handle */
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
Line 958  sched_hook_fetch(void *root, void *arg __unused) Line 980  sched_hook_fetch(void *root, void *arg __unused)
                 }                  }
   
         /* put regular task priority task to ready queue,           /* put regular task priority task to ready queue, 
                if there is no ready task or reach max missing hit events */                if there is no ready task or reach max missing hit for regular task */
         if ((task = TAILQ_FIRST(&r->root_task))) {          if ((task = TAILQ_FIRST(&r->root_task))) {
                if (!TAILQ_FIRST(&r->root_ready) || r->root_task_miss > r->root_miss) {                if (!TAILQ_FIRST(&r->root_ready) || r->root_miss >= TASK_VAL(task)) {
                        r->root_task_miss ^= r->root_task_miss;                        r->root_miss ^= r->root_miss;
   
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                         pthread_mutex_lock(&r->root_mtx[taskTASK]);                          pthread_mutex_lock(&r->root_mtx[taskTASK]);
Line 979  sched_hook_fetch(void *root, void *arg __unused) Line 1001  sched_hook_fetch(void *root, void *arg __unused)
                         pthread_mutex_unlock(&r->root_mtx[taskREADY]);                          pthread_mutex_unlock(&r->root_mtx[taskREADY]);
 #endif  #endif
                 } else                  } else
                        r->root_task_miss++;                        r->root_miss++;
         } else          } else
                r->root_task_miss ^= r->root_task_miss;                r->root_miss ^= r->root_miss;
   
         /* OK, lets get ready task !!! */          /* OK, lets get ready task !!! */
         task = TAILQ_FIRST(&r->root_ready);          task = TAILQ_FIRST(&r->root_ready);

Removed from v.1.12  
changed lines
  Added in v.1.13.2.2


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