]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
32K blocks via the network
authorhades <hades>
Sun, 21 Nov 1999 15:13:32 +0000 (15:13 +0000)
committerhades <hades>
Sun, 21 Nov 1999 15:13:32 +0000 (15:13 +0000)
hadaq/readout.c

index 76d695fd240ea04623d7ec515dfeb9a877e3c21e..86c6e07d38c764f3eeec3aaec722f8b384157830 100644 (file)
@@ -1,4 +1,4 @@
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.4 1999-11-19 16:00:18 hades Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.5 1999-11-21 15:13:32 hades Exp $";
 
 #define _POSIX_C_SOURCE 199309L
 #include <unistd.h>
@@ -37,6 +37,8 @@ void main(int argc, char *argv[])
        void *subEvt;
        Worker *worker;
        ShmTrans *shmTrans;
+       void *hadTu;
+       HadTuQueue *hadTuQueue;
        int i;
        int isStandalone;
        char *outPath;
@@ -92,20 +94,24 @@ void main(int argc, char *argv[])
 
        Worker_initEnd(worker);
 
+       hadTuQueue = allocMem(HadTuQueue_sizeOf());
+       hadTu = ShmTrans_alloc(shmTrans, 32 * 1024);
+       conHadTuQueue(hadTuQueue, hadTu, 32 * 1024);
        while (setjmp(terminateJmp) == 0) {
-               void *hadTu;
-               HadTuQueue *hadTuQueue;
                Worker_dump(worker, 1);
 
-               hadTu = ShmTrans_alloc(shmTrans, queueSize - HadTu_hdrSize());
 #ifndef NDEBUG
-               msglog(LOG_DEBUG, "shmTrans: %p = hadTu: %s\n", hadTu, HadTu_2charP(hadTu));
+               msglog(LOG_DEBUG,
+                       "shmTrans: %p = hadTu: %s\n", hadTu, HadTu_2charP(hadTu));
 #endif
-               hadTuQueue = allocMem(HadTuQueue_sizeOf());
-               conHadTuQueue(hadTuQueue, hadTu, queueSize - HadTu_hdrSize());
                Hardware_waitForTrigger(hw);
                for (i = 0; Hardware_subEvtId(hw, i) != SubEvtId_invalid; i++) {
-                       subEvt = HadTuQueue_alloc(hadTuQueue, Hardware_maxSubEvtSize(hw, i));
+                       while (NULL == (subEvt = HadTuQueue_alloc(hadTuQueue, Hardware_maxSubEvtSize(hw, i)))) {
+                               desHadTuQueue(hadTuQueue);
+                               ShmTrans_send(shmTrans);
+                               hadTu = ShmTrans_alloc(shmTrans, 32 * 1024);
+                               conHadTuQueue(hadTuQueue, hadTu, 32 * 1024);
+                       }
 
                        Hardware_readout(hw, i, subEvt);
                        SubEvt_setTrigNr(subEvt, (*trigAccepted << 8) | (SubEvt_trigNr(subEvt) & 0xff));
@@ -120,10 +126,10 @@ void main(int argc, char *argv[])
                        HadTuQueue_push(hadTuQueue);
                }
                (*trigAccepted)++;
-               desHadTuQueue(hadTuQueue);
-               freeMem(hadTuQueue);
-               ShmTrans_send(shmTrans);
        }
+       desHadTuQueue(hadTuQueue);
+       ShmTrans_send(shmTrans);
+       freeMem(hadTuQueue);
 
        Worker_fini(worker);
        ShmTrans_close(shmTrans);