]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
lockinf of signals has been modified
authorhadaq <hadaq>
Mon, 1 Nov 2010 15:59:58 +0000 (15:59 +0000)
committerhadaq <hadaq>
Mon, 1 Nov 2010 15:59:58 +0000 (15:59 +0000)
libtrbnet/trbnet.c

index a58b7db9ffb3f16c006d392e477581d6e5cc2402..b32cfc88148f66eeb219e7a6e4e4608ce210a206 100644 (file)
@@ -1,4 +1,4 @@
-const char trbnet_version[] = "$Revision: 2.89 $";
+const char trbnet_version[] = "$Revision: 2.90 $";
 
 #include <stdlib.h>
 #include <signal.h>
@@ -1045,15 +1045,15 @@ static int lockPorts(int masterLock)
     return 0;
   }
   
+  /* Block Signals */
+  if (sigprocmask(SIG_BLOCK, &blockSet, &blockSetOld) == -1) return -1;
+  
   /* Wait for semaphore and lock it */
   if (semop(semid, &sops, 1) == -1) {
     trb_errno = TRB_SEMAPHORE;
     return -1;
   }
-
-  /* Block Signals */
-  sigprocmask(SIG_BLOCK, &blockSet, &blockSetOld);
-
+  
   /* Get FifoToggleBit-Status, needed by read32_from_FPGA ... */
   fifoToggleBit = readPC() & FIFO_TOGGLE_BIT;
  
@@ -1079,12 +1079,12 @@ static int unlockPorts(int masterLock)
     trb_errno = TRB_SEMAPHORE;
     return -1;
   }
-
+  
+  if (masterLock != 0) master_lock = 0;
+  
   /* Unblock Signals */
-  sigprocmask(SIG_SETMASK, &blockSetOld, NULL);
+  if (sigprocmask(SIG_SETMASK, &blockSetOld, NULL) == -1) return -1;
  
-  if (masterLock != 0) master_lock = 0;
-
   return 0;
 }
 
@@ -1109,21 +1109,8 @@ int init_ports()
   int memfd;
   uint32_t *mem = NULL;
   
-  /* Set signal mask for blocking */
-  sigemptyset(&blockSet);
-  sigaddset(&blockSet, SIGHUP);
-  sigaddset(&blockSet, SIGINT);
-  sigaddset(&blockSet, SIGQUIT);
-  sigaddset(&blockSet, SIGALRM);
-  sigaddset(&blockSet, SIGTERM);
-  sigaddset(&blockSet, SIGUSR1);
-  sigaddset(&blockSet, SIGUSR2);
-  sigaddset(&blockSet, SIGCONT);
-  sigaddset(&blockSet, SIGSTOP);
-  sigaddset(&blockSet, SIGTSTP);
-  sigaddset(&blockSet, SIGTTIN);
-  sigaddset(&blockSet, SIGTTOU);
-  sigaddset(&blockSet, SIGPIPE);
+  /* Set signal mask to block ALL signals */
+  sigfillset(&blockSet);
   sigemptyset(&blockSetOld);
   
   /* Get / Create semaphore */