-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>
void *subEvt;
Worker *worker;
ShmTrans *shmTrans;
+ void *hadTu;
+ HadTuQueue *hadTuQueue;
int i;
int isStandalone;
char *outPath;
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));
HadTuQueue_push(hadTuQueue);
}
(*trigAccepted)++;
- desHadTuQueue(hadTuQueue);
- freeMem(hadTuQueue);
- ShmTrans_send(shmTrans);
}
+ desHadTuQueue(hadTuQueue);
+ ShmTrans_send(shmTrans);
+ freeMem(hadTuQueue);
Worker_fini(worker);
ShmTrans_close(shmTrans);