Diff for /libaitsched/src/aitsched.c between versions 1.31 and 1.35.2.1

version 1.31, 2023/02/25 15:55:01 version 1.35.2.1, 2024/02/26 12:56:21
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;
   #endif
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
         register int i;          register int i;
 #endif  #endif
Line 268  schedInit(void ** __restrict data, size_t datlen) Line 271  schedInit(void ** __restrict data, size_t datlen)
 #ifdef HAVE_LIBPTHREAD  #ifdef HAVE_LIBPTHREAD
                 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);
 #endif  #endif
   #else
                   sigprocmask(SIG_BLOCK, NULL, &root->root_oldset);
   #endif
   
                 if (data && *data) {                  if (data && *data) {
                         if (datlen) {                          if (datlen) {
Line 404  schedEnd(sched_root_task_t ** __restrict root) Line 416  schedEnd(sched_root_task_t ** __restrict root)
                 pthread_mutex_unlock(&(*root)->root_sigmtx);                  pthread_mutex_unlock(&(*root)->root_sigmtx);
         }          }
         pthread_mutex_destroy(&(*root)->root_sigmtx);          pthread_mutex_destroy(&(*root)->root_sigmtx);
   #else
           sigprocmask(SIG_SETMASK, &(*root)->root_oldset, NULL);
 #endif  #endif
   
         e_free(*root);          e_free(*root);
Line 1181  int Line 1195  int
 schedSignalDispatch(sched_root_task_t * __restrict root, int on)  schedSignalDispatch(sched_root_task_t * __restrict root, int on)
 {  {
         sigset_t ss;          sigset_t ss;
           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");
         return -1;          return -1;
Line 1193  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
                 root->root_sigthr = NULL;                  root->root_sigthr = NULL;
 #endif  #endif
                 pthread_sigmask(SIG_SETMASK, &root->root_oldset, NULL);  
   
                 pthread_mutex_unlock(&root->root_sigmtx);  
                 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 (sched_timespecisinf(&root->root_poll))
                   schedPolling(root, &ts, NULL);
   
         pthread_attr_init(&attr);          pthread_attr_init(&attr);
         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);          pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
 #ifdef SCHED_RR  #ifdef SCHED_RR
Line 1214  schedSignalDispatch(sched_root_task_t * __restrict roo Line 1235  schedSignalDispatch(sched_root_task_t * __restrict roo
 #endif  #endif
   
         sigfillset(&ss);          sigfillset(&ss);
        pthread_sigmask(SIG_BLOCK, &ss, &root->root_oldset);        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));

Removed from v.1.31  
changed lines
  Added in v.1.35.2.1


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