Diff for /libaitsched/src/aitsched.c between versions 1.34.2.1 and 1.37

version 1.34.2.1, 2023/08/31 15:25:59 version 1.37, 2024/03/20 12:52:49
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004 - 2023Copyright 2004 - 2024
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
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 211  schedInit(void ** __restrict data, size_t datlen) Line 213  schedInit(void ** __restrict data, size_t datlen)
 {  {
         sched_root_task_t *root = NULL;          sched_root_task_t *root = NULL;
         int (*func)(sched_root_task_t *);          int (*func)(sched_root_task_t *);
   #if SUP_ENABLE == KQ_SUPPORT
           sigset_t ss;
   #endif
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
         register int i;          register int i;
 #endif  #endif
Line 269  schedInit(void ** __restrict data, size_t datlen) Line 274  schedInit(void ** __restrict data, size_t datlen)
                 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]);
   
   #if SUP_ENABLE == KQ_SUPPORT
                   sigfillset(&ss);
                   pthread_sigmask(SIG_BLOCK, &ss, &root->root_oldset);
   #else
                 pthread_sigmask(SIG_BLOCK, NULL, &root->root_oldset);                  pthread_sigmask(SIG_BLOCK, NULL, &root->root_oldset);
   #endif
 #else  #else
                 sigprocmask(SIG_BLOCK, NULL, &root->root_oldset);                  sigprocmask(SIG_BLOCK, NULL, &root->root_oldset);
 #endif  #endif
Line 1066  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 1181  _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 1200  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1210  schedSignalDispatch(sched_root_task_t * __restrict roo
 #endif  #endif
   
         if (!on) {          if (!on) {
                pthread_cancel(root->root_sigthr);                if (root->root_sigthr) {
                         if (root->root_sigthr == sched_sigThr) {
 #ifdef __linux__  #ifdef __linux__
                root->root_sigthr = 0L;                                sched_sigThr = 0L;
 #else  #else
                root->root_sigthr = NULL;                                sched_sigThr = NULL;
 #endif  #endif
                           }
                           pthread_cancel(root->root_sigthr);
   #ifdef __linux__
                           root->root_sigthr = 0L;
   #else
                           root->root_sigthr = NULL;
   #endif
                   }
   
                 return 0;                  return 0;
         }          }
   
Line 1221  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 1234  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.34.2.1  
changed lines
  Added in v.1.37


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