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

version 1.36, 2024/02/26 12:58:55 version 1.37.6.1, 2026/05/19 00:39:51
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 - 2024Copyright 2004 - 2026
         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 442  schedCall(sched_task_t * __restrict task) Line 444  schedCall(sched_task_t * __restrict task)
         if (!TASK_ISLOCKED(task))          if (!TASK_ISLOCKED(task))
                 TASK_LOCK(task);                  TASK_LOCK(task);
   
           if (task->task_root->root_hooks.hook_exec.profile)
                   task->task_root->root_hooks.hook_exec.profile(task->task_root, (void*) 0);
         ptr = task->task_func(task);          ptr = task->task_func(task);
           if (task->task_root->root_hooks.hook_exec.profile)
                   task->task_root->root_hooks.hook_exec.profile(task->task_root, (void*) 1);
   
         TASK_UNLOCK(task);          TASK_UNLOCK(task);
         return ptr;          return ptr;
Line 1074  schedPolling(sched_root_task_t * __restrict root, stru Line 1080  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 1195  _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 1214  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 1245  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 1264  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.37.6.1


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