From 8de43fec590191a1d23534b8bc236269b3ea49e4 Mon Sep 17 00:00:00 2001 From: hades Date: Sun, 28 May 2000 14:44:39 +0000 Subject: [PATCH] Running with 1 IPC --- hadaq/hwshow.c | 48 +++++++++++++++++++++++++++++++----------------- hadaq/param.tcl | 2 +- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/hadaq/hwshow.c b/hadaq/hwshow.c index fbf59be..6e3b388 100644 --- a/hadaq/hwshow.c +++ b/hadaq/hwshow.c @@ -1,4 +1,4 @@ -static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.5 2000-05-27 06:01:48 hades Exp $"; +static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.6 2000-05-28 14:44:39 hades Exp $"; #define _POSIX_C_SOURCE 199309L #include @@ -45,7 +45,7 @@ Hardware *newHardware(void) } my = allocMem(sizeof(Hardware)); - my->maxSubEvtSize = SubEvt_hdrSize() + (1600 * sizeof(UInt4)); + my->maxSubEvtSize = SubEvt_hdrSize() + (NSHIPS * 1600 * sizeof(UInt4)); my->shipToRead = 0; for (i = 0; i < NSHIPS; i++) { @@ -78,23 +78,37 @@ void deleteHardware(Hardware *my) void Hardware_waitForTrigger(Hardware *my, void *subEvt) { - if (HwShip_isEmpty(my->ship[my->shipToRead])) { - HwShip_requestBuffer(my->ship[my->shipToRead]); - while (HwShip_isBusy(my->ship[my->shipToRead])) { -#if 1 - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 020000000; - nanosleep(t, NULL); -#endif - } - } } -void Hardware_readout(Hardware *my, void *subEvt) +void Hardware_readout(Hardware *my, void *partEvt) { - HwShip_readSubEvt(my->ship[my->shipToRead], subEvt); - if (++my->shipToRead == NSHIPS ) { - my->shipToRead = 0; + void *subEvt = SubEvt_data(partEvt); + + SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts); + + for (my->shipToRead = 0; my->shipToRead < NSHIPS; my->shipToRead++) { + if (HwShip_isEmpty(my->ship[my->shipToRead])) { + HwShip_requestBuffer(my->ship[my->shipToRead]); + while (HwShip_isBusy(my->ship[my->shipToRead])) { +#if 0 +/* + * This sleep prevents a tight loop which stops work on real + * time systems if the priority of readout is not lowered. + * When not using the sleep use option -p -2 for daq_readout. +*/ + struct timespec tS, *t = &tS; + t->tv_sec = 0; + t->tv_nsec = 020000000; + nanosleep(t, NULL); +#endif + } + } + HwShip_readSubEvt(my->ship[my->shipToRead], subEvt); + SubEvt_setTrigNr(partEvt, SubEvt_trigNr(subEvt)); + subEvt = SubEvt_next(partEvt, subEvt); } + + SubEvt_setSize(partEvt, (char *)subEvt - (char *)partEvt); + SubEvt_setId(partEvt, 0); + msglog(LOG_DEBUG, "partEvt: %s\n", SubEvt_2charP(partEvt)); } diff --git a/hadaq/param.tcl b/hadaq/param.tcl index 688f54f..096bace 100644 --- a/hadaq/param.tcl +++ b/hadaq/param.tcl @@ -2,7 +2,7 @@ set soft(size) 1024 set dtu(cardbase) 0x44100000 -set ship0(cardbase) 0xC00000 +set ship0(cardbase) 0x100000 set ship1(cardbase) 0x800000 set race0(cardbase) 0x00000000 set race1(cardbase) 0x10000000 -- 2.43.0