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

version 1.32, 2023/07/27 20:51:28 version 1.36, 2024/02/26 12:58:55
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 211  schedInit(void ** __restrict data, size_t datlen) Line 211  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;          sigset_t ss;
   #endif
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
         register int i;          register int i;
 #endif  #endif
Line 270  schedInit(void ** __restrict data, size_t datlen) Line 272  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);                  sigfillset(&ss);
                 pthread_sigmask(SIG_BLOCK, &ss, &root->root_oldset);                  pthread_sigmask(SIG_BLOCK, &ss, &root->root_oldset);
 #else  #else
                sigprocmask(SIG_BLOCK, &ss, &root->root_oldset);                pthread_sigmask(SIG_BLOCK, NULL, &root->root_oldset);
 #endif  #endif
   #else
                   sigprocmask(SIG_BLOCK, NULL, &root->root_oldset);
   #endif
   
                 if (data && *data) {                  if (data && *data) {
                         if (datlen) {                          if (datlen) {
Line 1188  _sched_sigDisp(void *arg) Line 1194  _sched_sigDisp(void *arg)
 int  int
 schedSignalDispatch(sched_root_task_t * __restrict root, int on)  schedSignalDispatch(sched_root_task_t * __restrict root, int on)
 {  {
           sigset_t ss;
         struct timespec ts = { .tv_sec = 1, .tv_nsec = 0 };          struct timespec ts = { .tv_sec = 1, .tv_nsec = 0 };
 #ifndef HAVE_LIBPTHREAD  #ifndef HAVE_LIBPTHREAD
         sched_SetErr(ENOTSUP, "Library has not support pthreads");          sched_SetErr(ENOTSUP, "Library has not support pthreads");
Line 1201  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1208  schedSignalDispatch(sched_root_task_t * __restrict roo
 #endif  #endif
   
         if (!on) {          if (!on) {
                pthread_cancel(root->root_sigthr);                if (root->root_sigthr)
                         pthread_cancel(root->root_sigthr);
 #ifdef __linux__  #ifdef __linux__
                 root->root_sigthr = 0L;                  root->root_sigthr = 0L;
 #else  #else
Line 1210  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1218  schedSignalDispatch(sched_root_task_t * __restrict roo
                 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 1222  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1234  schedSignalDispatch(sched_root_task_t * __restrict roo
         pthread_attr_setschedpolicy(&attr, SCHED_OTHER);          pthread_attr_setschedpolicy(&attr, SCHED_OTHER);
 #endif  #endif
   
           sigfillset(&ss);
           pthread_sigmask(SIG_BLOCK, &ss, NULL);
   
         if (pthread_create(&root->root_sigthr, &attr, _sched_sigDisp, root)) {          if (pthread_create(&root->root_sigthr, &attr, _sched_sigDisp, root)) {
                 sched_SetErr(errno, "pthread_create(SignalDispatch) #%d - %s",                   sched_SetErr(errno, "pthread_create(SignalDispatch) #%d - %s", 
                                 errno, strerror(errno));                                  errno, strerror(errno));
Line 1230  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1245  schedSignalDispatch(sched_root_task_t * __restrict roo
 #else  #else
                 root->root_sigthr = NULL;                  root->root_sigthr = NULL;
 #endif  #endif
                   pthread_sigmask(SIG_SETMASK, &root->root_oldset, NULL);
                 return -1;                  return -1;
         }          }
   

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


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