Diff for /libaitsched/src/aitsched.c between versions 1.36 and 1.36.4.1

version 1.36, 2024/02/26 12:58:55 version 1.36.4.1, 2024/03/20 12:48:45
Line 54  char sched_Error[STRSIZ]; Line 54  char sched_Error[STRSIZ];
   
 #pragma GCC visibility pop  #pragma GCC visibility pop
   
   volatile pthread_t sched_sigThr;
   
   
 // sched_GetErrno() Get error code of last operation  // sched_GetErrno() Get error code of last operation
 int  int
 sched_GetErrno()  sched_GetErrno()
Line 1074  schedPolling(sched_root_task_t * __restrict root, stru Line 1076  schedPolling(sched_root_task_t * __restrict root, stru
 int  int
 schedTermCondition(sched_root_task_t * __restrict root, intptr_t * __restrict condValue)  schedTermCondition(sched_root_task_t * __restrict root, intptr_t * __restrict condValue)
 {  {
        if (!root && !condValue)        if (!root || !condValue)
                 return -1;                  return -1;
   
         *root->root_cond = *condValue;          *root->root_cond = *condValue;
Line 1189  _sched_sigDisp(void *arg) Line 1191  _sched_sigDisp(void *arg)
  *   *
  * @root = root task   * @root = root task
  * @on = Activate or =0 deactivate   * @on = Activate or =0 deactivate
 * return: -1 error or 0 ok * return: -1 error, 1 already started, 2 another thread already started or 0 ok
  */   */
 int  int
 schedSignalDispatch(sched_root_task_t * __restrict root, int on)  schedSignalDispatch(sched_root_task_t * __restrict root, int on)
Line 1208  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1210  schedSignalDispatch(sched_root_task_t * __restrict roo
 #endif  #endif
   
         if (!on) {          if (!on) {
                if (root->root_sigthr)                if (root->root_sigthr) {
                         if (root->root_sigthr == sched_sigThr) {
 #ifdef __linux__
                                 sched_sigThr = 0L;
 #else
                                 sched_sigThr = NULL;
 #endif
                         }
                         pthread_cancel(root->root_sigthr);                          pthread_cancel(root->root_sigthr);
 #ifdef __linux__  #ifdef __linux__
                root->root_sigthr = 0L;                        root->root_sigthr = 0L;
 #else  #else
                root->root_sigthr = NULL;                        root->root_sigthr = NULL;
 #endif  #endif
                   }
   
                 return 0;                  return 0;
         }          }
   
         /* if we have already started signal thread, then skip routine */  
         if (root->root_sigthr)  
                 return 0;  
   
         /* if we have not using polling, then we must turn on */          /* if we have not using polling, then we must turn on */
         if (sched_timespecisinf(&root->root_poll))          if (sched_timespecisinf(&root->root_poll))
                 schedPolling(root, &ts, NULL);                  schedPolling(root, &ts, NULL);
Line 1234  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1241  schedSignalDispatch(sched_root_task_t * __restrict roo
         pthread_attr_setschedpolicy(&attr, SCHED_OTHER);          pthread_attr_setschedpolicy(&attr, SCHED_OTHER);
 #endif  #endif
   
           /* if we have already started signal thread, then skip routine */
           if (root->root_sigthr)
                   return 1;
           if (sched_sigThr)
                   return 2;
   
         sigfillset(&ss);          sigfillset(&ss);
         pthread_sigmask(SIG_BLOCK, &ss, NULL);          pthread_sigmask(SIG_BLOCK, &ss, NULL);
   
Line 1247  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1260  schedSignalDispatch(sched_root_task_t * __restrict roo
 #endif  #endif
                 pthread_sigmask(SIG_SETMASK, &root->root_oldset, NULL);                  pthread_sigmask(SIG_SETMASK, &root->root_oldset, NULL);
                 return -1;                  return -1;
        }        } else
                 sched_sigThr = root->root_sigthr;
   
         return 0;          return 0;
 }  }

Removed from v.1.36  
changed lines
  Added in v.1.36.4.1


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