#DEFINES = -UNDEBUG -DHADESSTD_NEXITSTAT -DHADESSTD_NGETOPT
# UNIX w/o ATM
-CC = c89
-RPCGEN = rpcgen
-LOADLIBES = -L/usr/local/lib/ -lhadesstd -llvme -lrt -ltk -lX11 -ltcl -lm
-INCLUDES = -I/usr/local/include -I/usr/fore/include
-DEFINES = -UNDEBUG -DHADESSTD_NEXITSTAT -DHADESSTD_NGETOPT -DNOATM
+#CC = c89
+#RPCGEN = rpcgen
+#LOADLIBES = -L/usr/local/lib/ -lhadesstd -llvme -lrt -ltk -lX11 -ltcl -lm
+#INCLUDES = -I/usr/local/include -I/usr/fore/include
+#DEFINES = -UNDEBUG -DHADESSTD_NEXITSTAT -DHADESSTD_NGETOPT -DNOATM
# Linux
#CC = gcc
#DEFINES = -UNDEBUG -DHADESSTD_NEXITSTAT -DHADESSTD_NGETOPT -DNOATM
# LynxOS
-#CC = gcc
-#RPCGEN = rpcgen
-#LOADLIBES = -L/usr/local/lib -L$(HOME)/lib/$(SYSTYPE) -lhadesstd -llvme -ltcl -lm -lrpc -lnetinet -L/lib/ces -lvme -lbma -luio
-#INCLUDES = -I/usr/local/include -I$(HOME)/include
-#DEFINES = -UNDEBUG -DHADESSTD_NEXITSTAT -DNOATM
+CC = gcc
+RPCGEN = rpcgen
+LOADLIBES = -L/usr/local/lib -L$(HOME)/lib/$(SYSTYPE) -lhadesstd -llvme -ltcl -lm -lrpc -lnetinet -L/lib/ces -lvme -lbma -luio
+INCLUDES = -I/usr/local/include -I$(HOME)/include
+DEFINES = -UNDEBUG -DHADESSTD_NEXITSTAT
# LynxOS
#CC = gcc
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.5 1999-09-09 14:54:44 hades Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.6 1999-10-06 17:02:06 muench Exp $";
#define _XOPEN_SOURCE
#include <unistd.h>
outDev = "null";
priority = 0;
runNr = time(NULL);
- queueSize = 100 * 1024;
+ queueSize = 10 * 1024;
while ((i = getopt(argc, argv, "am:f:r:s:o:d:p:v:")) != -1) {
switch (i) {
exit(EXIT_FAILURE);
}
if (nrOfMsgs == 0) {
- /*
- no '-m' option was on command line, we assume that the readout task
- (daq_readout) is running on the same node and communicates directly
- via shared memory */
+ /*
+ no '-m' option was on command line, we assume that the readout task
+ (daq_readout) is running on the same node and communicates directly
+ via shared memory */
shmTrans = allocMem(sizeof(ShmTrans *));
hadTuQueue = allocMem(sizeof(HadTuQueue *));
- shmTrans[0] = ShmTrans_create("subevtqueue", 2 * queueSize);
+ shmTrans[0] = ShmTrans_create("subevtqueue", 100 * queueSize);
hadTuQueue[0] = NULL;
nrOfMsgs = 1;
} else {
char buf[_POSIX_PATH_MAX];
sprintf(buf, "netqueue%d", i);
- shmTrans[i] = ShmTrans_create(buf, 2 * queueSize);
+ shmTrans[i] = ShmTrans_create(buf, 100 * queueSize);
hadTuQueue[i] = NULL;
}
}
if (NULL != (subEvt = HadTuQueue_front(hadTuQueue[i]))) {
#ifndef NDEBUG
msglog(LOG_DEBUG, "hadTuQueue[%d]: %p = subEvt: %s\n", i, subEvt, SubEvt_2charP(subEvt));
+ msglog(LOG_DEBUG, "currTrigNr: 0x%08x, currNrOfSubEvts %d\n", currTrigNr, currNrOfSubEvts);
+ msglog(LOG_DEBUG, "evtsComplete: %d, evtsDiscarded %d\n", *evtsComplete, *evtsDiscarded);
#endif
if (i == 0 && currNrOfSubEvts == 0) {
- /* upper 24 bit of trigNr should be a sequence */
- (*evtsDiscarded) += (SubEvt_trigNr(subEvt) >> 8)
- - ((currTrigNr + 0x100) >> 8);
-
+#if 0
+ if (currTrigNr != 0xffffffff) {
+ /* upper 24 bit of trigNr should be a sequence */
+ (*evtsDiscarded) += (SubEvt_trigNr(subEvt) >> 8)
+ - ((currTrigNr + 0x100) >> 8);
+ }
+#endif
currTrigNr = SubEvt_trigNr(subEvt);
}
if (SubEvt_id(subEvt) == SubEvtId_trigCode) {
- /* BUGBUG, this is indeed no header word */
- Evt_setId(evt, SubEvt_hdrValue(subEvt, 4));
+ Evt_setId(evt, SubEvt_dataValue(subEvt, 0));
}
if (SubEvt_trigNr(subEvt) == currTrigNr) {
evt = Evt_appendSubEvt(evt, subEvt);
HadTuQueue_pop(hadTuQueue[i]);
currNrOfSubEvts++;
+ } else if (SubEvt_trigNr(subEvt) < currTrigNr) {
+ HadTuQueue_pop(hadTuQueue[i]);
+ /* BUGBUG subevt discarded, not in statistic */
} else {
tryNext = 1;
}
}
proc startAcquisitionCmd {} {
+ #exec rsh hades19 sh -c {'cd ht99/slow; PATH=$PATH:/usr/local/bin:$HOME/bin; ./tof init'} </dev/null >>&hadaq.log
+ #exec rsh hades21 sh -c {'cd ht99/slow; PATH=$PATH:/usr/local/bin:$HOME/bin; ./mdc init'} </dev/null >>&hadaq.log
group start acquisition
updateAcquisitionButtons
}
set tapeInfo(vol) "VOL1ULTRIX HADES 3"
exec mt rewind
} else {
+ set tapeInfo(vol) {}
exec mt seod
exec mt bsf 1
}
-agent create hades12 root /home/hades/ht99/daq/hadaq
-agent create hades19 hades /home/hades/ht99/daq/hadaq
-worker create hades12:evtbuild -a -p -2 -s 2 -m 1 -f runinfo.tcl
-worker create hades12:netmem -a -p -1 -m 1
-worker create hades19:memnet -a -p -1 -o 0:50 -w 0
+agent create acheron root /home/hades/ht99/eb/hadaq
+agent create hades23 hades /home/hades/ht99/show/hadaq
+agent create hades21 hades /home/hades/ht99/mdc/hadaq
+agent create hades19 hades /home/hades/ht99/tof/hadaq
+worker create acheron:evtbuild -a -p -2 -s 6 -m 3 -f runinfo.tcl
+worker create acheron:netmem -a -p -1 -m 3
+worker create hades23:memnet -a -p -1 -o 0:50 -w 9638
+worker create hades23:readout -a -p -2
+worker create hades21:memnet -a -p -1 -o 0:51 -w 175
+worker create hades21:readout -a -p -2
+worker create hades19:memnet -a -p -1 -o 0:52 -w 537
worker create hades19:readout -a -p -2
+worker create hades19:ctrlctu -a -p 0
group create acquisition
group create run
+group add acquisition hades23:memnet
+group add acquisition hades23:readout
+group add acquisition hades21:memnet
+group add acquisition hades21:readout
group add acquisition hades19:memnet
group add acquisition hades19:readout
-group add run hades12:evtbuild
-group add run hades12:netmem
+group add acquisition hades19:ctrlctu
+group add run acheron:evtbuild
+group add run acheron:netmem
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwmdc.c,v 6.2 1999-10-06 17:02:06 muench Exp $";
#define _POSIX_C_SOURCE 199309L
#include <unistd.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
#include <sys/time.h>
#include "param.h"
#include "subevt.h"
#include "hwsam.h"
+#define NSAMS 1
+
struct HardwareS {
size_t maxSubEvtSize;
- void *specific;
+ HwSam *sam[NSAMS];
+ unsigned samToRead;
};
#include "hardware.h"
{
Hardware *my;
Param paramS, *param = ¶mS;
- HwSam *sam;
int i;
+#if 0
+ system("cd /home/hades/ht99/slow; mdc init >/dev/null 2>&1");
+#endif
+
if (0 > conParam(param, "param.tcl")) {
msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
return NULL;
}
my = allocMem(sizeof(Hardware));
- my->specific = allocMem(sizeof(sam));
- my->maxSubEvtSize = SubEvt_hdrSize();
+ my->maxSubEvtSize = SubEvt_hdrSize() + (2564 * sizeof(UInt4));
+ my->samToRead = 0;
- sam = allocMem(sizeof(HwSam));
- if (0 > conHwSam(sam, "sam", param)) {
- msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
- return NULL;
+ for (i = 0; i < NSAMS; i++) {
+ char buf[16];
+
+ my->sam[i] = allocMem(sizeof(HwSam));
+ sprintf(buf, "sam%d", i);
+ if (0 > conHwSam(my->sam[i], buf, param)) {
+ msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
+ return NULL;
+ }
}
- (HwSam *) my->specific = sam;
desParam(param);
void deleteHardware(Hardware *my)
{
- HwSam *sam = (HwSam *) my->specific;
+ int i;
- desHwSam(sam);
- freeMem(sam);
+ for (i = 0; i < NSAMS; i++) {
+ desHwSam(my->sam[i]);
+ freeMem(my->sam[i]);
+ }
freeMem(my);
}
-void Hardware_waitForTrigger(const Hardware *my, void *subEvt)
+void Hardware_waitForTrigger(Hardware *my, void *subEvt)
{
- HwSam *sam = (HwSam *) my->specific;
-
- while (HwSam_isBusy(sam) || HwSam_isEmpty(sam)) {
+ if (HwSam_isEmpty(my->sam[my->samToRead])) {
+ HwSam_requestBuffer(my->sam[my->samToRead]);
+ while (HwSam_isBusy(my->sam[my->samToRead])) {
#if 1
- struct timespec tS, *t = &tS;
- t->tv_sec = 0;
- t->tv_nsec = 020000000;
- nanosleep(t, NULL);
+ struct timespec tS, *t = &tS;
+ t->tv_sec = 0;
+ t->tv_nsec = 020000000;
+ nanosleep(t, NULL);
#endif
+ }
}
}
-void Hardware_readout(const Hardware *my, void *subEvt)
+void Hardware_readout(Hardware *my, void *subEvt)
{
- HwSam *sam = (HwSam *) my->specific;
-
- HwSam_readSubEvt(sam, subEvt);
+ HwSam_readSubEvt(my->sam[my->samToRead], subEvt);
+ if (++my->samToRead == NSAMS ) {
+ my->samToRead = 0;
+ }
}
-
#include <assert.h>
#include <string.h>
#include <hadesstd.h>
#include <lvme.h>
-#include "param.h"
+#include <param.h>
+#include "subevt.h"
#include "sam_defs.h"
#include "hwsam.h"
#define BUFSIZE 0x1000
-static int bankRequested(HwSam *my)
-{
- return LVme_getBitL(my->lvme, CRR, 0);
+static int bankRequested(HwSam *my) {
+ return LVme_tstBitL(my->cram, CRR, 0);
}
-static int bankConfirmed(HwSam *my)
-{
- return LVme_getBitL(my->lvme, VMSR, 0);
+static int bankConfirmed(HwSam *my) {
+ return LVme_tstBitL(my->regs, VMSR, 0);
}
-static int endOfData(HwSam *my)
-{
- int i;
+static int endOfData(HwSam *my) {
+ int i;
- i = BUFSIZE * bankRequested(my);
- return i + LVme_getL(my->lvme, i);
+ i = BUFSIZE * bankRequested(my);
+ return i + LVme_getL(my->cram, i);
}
-static void standbyMode(HwSam *my)
-{
- LVme_clrBitL(my->lvme, KSR, 0);
- do {
- LVme_setL(my->lvme, CRR, 0);
- } while (LVme_getL(my->lvme, CRR) != 0);
+static void standbyMode(HwSam *my) {
+ LVme_clrBitL(my->regs, KSR, 0);
+ do {
+ LVme_setL(my->cram, CRR, 0);
+ } while (LVme_getL(my->cram, CRR) != 0);
+ my->currAddr = BUFSIZE;
}
-static void acquireMode(HwSam *my)
-{
- LVme_setBitL(my->lvme, KSR, 0);
+static void acquireMode(HwSam *my) {
+ LVme_setBitL(my->regs, KSR, 0);
}
-int conHwSam(HwSam *my, const char *name, const Param *param)
+int conHwSam(HwSam * my, const char *name, const Param *param)
{
- unsigned long cardBase;
- int i;
-
- assert(my != NULL);
-
- strcpy(my->name, name);
-
- cardBase = Param_getVal(param, my->name, "cardbase");
- my->lvme = allocMem(sizeof(LVme));
- if (0 > conLVme(my->lvme, 0x4c000000, 0x04000000L, 0x09, 0x01000004, 4)) {
- msglog(LOG_ERR, "HwSam on %p not found\n", cardBase);
- return -1;
- }
- standbyMode(my);
- acquireMode(my);
- return 0;
+ unsigned long cardBase;
+ int i;
+
+ assert(my != NULL);
+
+ strcpy(my->name, name);
+
+ cardBase = Param_getVal(param, my->name, "cardbase");
+ my->cram = allocMem(sizeof(LVme));
+ if (0 > conLVme(my->cram, cardBase, 0x10000L, 0x09, 0x0, 4)) {
+ msglog(LOG_ERR, "HwSam on %p not found\n", cardBase);
+ return -1;
+ }
+ my->regs = allocMem(sizeof(LVme));
+ if (0 > conLVme(my->regs, cardBase + 0x01000000, 0x10000L, 0x09, 0x4, 4)) {
+ msglog(LOG_ERR, "HwSam on %p not found\n", cardBase);
+ return -1;
+ }
+ my->trigNr = 0;
+
+ standbyMode(my);
+ acquireMode(my);
+ return 0;
}
-void desHwSam(HwSam *my)
+void desHwSam(HwSam * my)
{
- standbyMode(my);
- desLVme(my->lvme);
+ standbyMode(my);
+ desLVme(my->regs);
+ desLVme(my->cram);
}
-void HwSam_requestBuffer(HwSam *my)
-{
- int i;
-
- i = bankRequested(my) == 1 ? 0 : 1;
- do {
- if (i == 1) {
- LVme_setBitL(my->lvme, CRR, 0);
- } else {
- LVme_clrBitL(my->lvme, CRR, 0);
- }
- } while (LVme_getBitL(my->lvme, CRR) != i);
-
- my->currAddr = BUFSIZE * bankRequested(my) + 8;
+void HwSam_requestBuffer(HwSam *my) {
+ int i;
+
+ msglog(LOG_DEBUG, "requestBuffer in\n");
+ i = bankRequested(my) == 1 ? 0 : 1;
+ do {
+ if (i == 1) {
+ LVme_setBitL(my->cram, CRR, 0);
+ } else {
+ LVme_clrBitL(my->cram, CRR, 0);
+ }
+ } while (LVme_tstBitL(my->cram, CRR, 0) != i);
+
+ my->currAddr = BUFSIZE * bankRequested(my) + 8;
+ msglog(LOG_DEBUG, "requestBuffer out\n");
}
-int HwSam_isBusy(HwSam *my)
-{
- return bankRequested(my) != bankConfirmed(my);
+int HwSam_isBusy(HwSam *my) {
+ return bankRequested(my) != bankConfirmed(my);
}
-int HwSam_isEmpty(HwSam *my)
-{
- return my->currAddr >= endOfData(my);
+int HwSam_isEmpty(HwSam *my) {
+ return my->currAddr >= endOfData(my);
}
-void *HwSam_nextSubEvt(HwSam *my, void *subEvt)
-{
- UInt4 *data = (UInt4 *) subEvt;
- int firstAddr;
- int size;
-
- size = LVme_getL(my->lvme, my->currAddr);
-
- /* copy one sub evt from RC to memory */
- for (firstAddr = my->currAddr; my->currAddr - firstAddr < size; my->currAddr += 4) {
- *data++ = LVme_getL(my->lvme, my->currAddr);
- }
- return 0;
+void *HwSam_readSubEvt(HwSam *my, void *subEvt) {
+ UInt4 *data = (UInt4 *)subEvt;
+ int firstAddr;
+ int size;
+ UInt1 trigTag;
+
+ msglog(LOG_DEBUG, "readSubEvt in\n");
+ size = LVme_getL(my->cram, my->currAddr);
+ msglog(LOG_DEBUG, "readSubEvt currAddr: 0x%08x\n", my->currAddr);
+
+ if (my->currAddr + size > endOfData(my)) {
+ msglog(LOG_EMERG,"subEvt throw away\n");
+ /* create impossible subEvt */
+ SubEvt_setSize(subEvt, SubEvt_hdrSize());
+ SubEvt_setDecoding(subEvt, SubEvtDecoding_16bitData);
+ SubEvt_setId(subEvt, SubEvtId_mdc);
+ SubEvt_setTrigNr(subEvt, 0x00000001); /* impossible with 1:1 */
+ my->currAddr = endOfData(my); /* lie you have read whole bank */
+ } else {
+ /* copy one sub evt from RC to memory */
+ for (firstAddr = my->currAddr; my->currAddr - firstAddr < size; my->currAddr += 4) {
+ *data++ = LVme_getL(my->cram, my->currAddr);
+ }
+
+ msglog(LOG_DEBUG, "readSubEvt subevt: %s\n", SubEvt_2charP(subEvt));
+
+ /* normal extension of trigger tag */
+ trigTag = SubEvt_trigNr(subEvt);
+ trigTag--; /* BUGBUG Workaround for wrong Tag from HW */
+
+ /* BUGBUG if soft & hardware trigNr differ, HW gets precedence */
+ if (trigTag != (my->trigNr & 0xff)) {
+ msglog(LOG_EMERG,"readSubEvt trigTag differ\n");
+ }
+ if (trigTag < (my->trigNr & 0xff)) {
+ my->trigNr += 0x100;
+ }
+ my->trigNr = (my->trigNr & 0xffffff00) | trigTag;
+ SubEvt_setTrigNr(subEvt, my->trigNr << 8 | trigTag);
+ my->trigNr++;
+ }
+
+ msglog(LOG_DEBUG, "readSubEvt out\n");
+ return 0;
}
typedef struct HwSamS {
char name[16];
- LVme *lvme;
+ LVme *cram;
+ LVme *regs;
int bufSize;
int currAddr;
+ int trigNr;
} HwSam;
switch (nextId) {
case SubEvtId_trigCode:
-#if 1
+#if 0
t->tv_sec = 0;
t->tv_nsec = 100000000;
nanosleep(t, NULL);
*data++ = 0x55aa00FF;
*data++ = 0x55aa00FF;
*data++ = 0x55aa00FF;
-#if 0
- data += (int) ((100.0 * rand()) / RAND_MAX);
- data += (int) ((100.0 * rand()) / RAND_MAX);
- data += (int) ((100.0 * rand()) / RAND_MAX);
- data += (int) ((100.0 * rand()) / RAND_MAX);
+#if 1
+ data += (int) ((10000.0 * rand()) / RAND_MAX);
+ data += (int) ((10000.0 * rand()) / RAND_MAX);
+ data += (int) ((10000.0 * rand()) / RAND_MAX);
+ data += (int) ((10000.0 * rand()) / RAND_MAX);
#endif
break;
}
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/netmem.c,v 6.1 1999-08-31 10:37:24 muench Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/netmem.c,v 6.2 1999-10-06 17:02:06 muench Exp $";
#define _XOPEN_SOURCE
#include <unistd.h>
void sigHandler(int sig)
{
- longjmp(terminateJmp, sig);
+ longjmp(terminateJmp, sig);
}
static void usage(const char *progName)
{
- msglog(LOG_ERR, "Usage: %s -m nrOfMsgs [-p priority]\n", progName);
- msglog_usage();
+ msglog(LOG_ERR, "Usage: %s -m nrOfMsgs [-p priority]\n", progName);
+ msglog_usage();
}
int main(int argc, char *argv[])
{
- int i;
- Worker *worker;
- NetTrans **netTrans;
- ShmTrans **shmTrans;
- void **hadTu;
- size_t *hadTuSize;
- int priority;
- int isStandalone;
- int nrOfMsgs;
- size_t queueSize;
-
- msglog_setlevel(argv[0], "info");
- priority = 0;
- isStandalone = 1;
- nrOfMsgs = 0;
- queueSize = 100 * 1024;
-
- while ((i = getopt(argc, argv, "am:p:v:")) != -1) {
- switch (i) {
- case 'a':
- isStandalone = 0;
- break;
- case 'm':
- nrOfMsgs = atoi(optarg);
- break;
- case 'p':
- priority = atoi(optarg);
- break;
- case 'v':
- if (msglog_setlevel(argv[0], optarg) == 1) {
- break;
- } /* FALLTHROUGH to default */
- default:
- usage(argv[0]);
- exit(EXIT_FAILURE);
- break;
- }
- }
- if (nrOfMsgs == 0) {
- msglog(LOG_ERR, "missing nrOfMsgs\n");
- usage(argv[0]);
- exit(EXIT_FAILURE);
- }
- netTrans = allocMem(nrOfMsgs * sizeof(NetTrans *));
- shmTrans = allocMem(nrOfMsgs * sizeof(ShmTrans *));
- hadTu = allocMem(nrOfMsgs * sizeof(void *));
- hadTuSize = allocMem(nrOfMsgs * sizeof(size_t));
-
- if (NULL == (worker = Worker_initBegin(argv[0], sigHandler, priority, isStandalone))) {
- msglog(LOG_ERR, "%s, %d: %s\n", __FILE__, __LINE__, strerror(errno));
- exit(EXIT_FAILURE);
- }
- for (i = 0; i < nrOfMsgs; i++) {
- char buf[80];
-
- sprintf(buf, "0:%d", i + 50);
- netTrans[i] = NetTrans_create(buf, 0, worker);
-
- sprintf(buf, "netqueue%d", i);
- shmTrans[i] = ShmTrans_open(buf, 2 * queueSize);
-
- hadTu[i] = NULL;
- hadTuSize[i] = queueSize - HadTu_hdrSize();
- }
- Worker_initEnd(worker);
-
- if (setjmp(terminateJmp) == 0) {
- while (1) {
- long msgsCompleted;
-
- Worker_dump(worker, 1);
-
- for (i = 0; i < nrOfMsgs; i++) {
- if (hadTu[i] == NULL) {
- ShmTrans_requestSpace(shmTrans[i]);
- hadTu[i] = ShmTrans_tryAlloc(shmTrans[i], hadTuSize[i]);
- }
- }
-
- msgsCompleted = NetTrans_multiRecv(netTrans, hadTu, hadTuSize, nrOfMsgs);
-
- for (i = 0; i < nrOfMsgs; i++) {
- if ((msgsCompleted & (1 << i)) != 0) {
- ShmTrans_send(shmTrans[i]);
- hadTu[i] = NULL;
- }
- }
- }
- }
- Worker_dump(worker, 0);
-
- for (i = 0; i < nrOfMsgs; i++) {
- ShmTrans_remove(shmTrans[i]);
- NetTrans_remove(netTrans[i]);
- }
- Worker_fini(worker);
- exit(EXIT_SUCCESS);
+ int i;
+ Worker *worker;
+ NetTrans **netTrans;
+ ShmTrans **shmTrans;
+ void **hadTu;
+ size_t *hadTuSize;
+ int priority;
+ int isStandalone;
+ int nrOfMsgs;
+ size_t queueSize;
+
+ msglog_setlevel(argv[0], "info");
+ priority = 0;
+ isStandalone = 1;
+ nrOfMsgs = 0;
+ queueSize = 10 * 1024;
+
+ while ((i = getopt(argc, argv, "am:p:v:")) != -1) {
+ switch (i) {
+ case 'a':
+ isStandalone = 0;
+ break;
+ case 'm':
+ nrOfMsgs = atoi(optarg);
+ break;
+ case 'p':
+ priority = atoi(optarg);
+ break;
+ case 'v':
+ if (msglog_setlevel(argv[0], optarg) == 1) {
+ break;
+ } /* FALLTHROUGH to default */
+ default:
+ usage(argv[0]);
+ exit(EXIT_FAILURE);
+ break;
+ }
+ }
+ if (nrOfMsgs == 0) {
+ msglog(LOG_ERR, "missing nrOfMsgs\n");
+ usage(argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ netTrans = allocMem(nrOfMsgs * sizeof(NetTrans *));
+ shmTrans = allocMem(nrOfMsgs * sizeof(ShmTrans *));
+ hadTu = allocMem(nrOfMsgs * sizeof(void *));
+ hadTuSize = allocMem(nrOfMsgs * sizeof(size_t));
+
+ if (NULL == (worker = Worker_initBegin(argv[0], sigHandler, priority, isStandalone))) {
+ msglog(LOG_ERR, "%s, %d: %s\n", __FILE__, __LINE__, strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+ for (i = 0; i < nrOfMsgs; i++) {
+ char buf[80];
+
+ sprintf(buf, "0:%d", i + 50);
+ netTrans[i] = NetTrans_create(buf, 0, worker);
+
+ sprintf(buf, "netqueue%d", i);
+ shmTrans[i] = ShmTrans_open(buf, 100 * queueSize);
+
+ hadTu[i] = NULL;
+ hadTuSize[i] = queueSize - HadTu_hdrSize();
+ }
+ Worker_initEnd(worker);
+
+ if (setjmp(terminateJmp) == 0) {
+ while (1) {
+ long msgsCompleted;
+
+ Worker_dump(worker, 1);
+
+ for (i = 0; i < nrOfMsgs; i++) {
+ if (hadTu[i] == NULL) {
+ ShmTrans_requestSpace(shmTrans[i]);
+ hadTu[i] = ShmTrans_tryAlloc(shmTrans[i], hadTuSize[i]);
+ }
+ }
+
+ msgsCompleted = NetTrans_multiRecv(netTrans, hadTu, hadTuSize, nrOfMsgs);
+
+ for (i = 0; i < nrOfMsgs; i++) {
+ if ((msgsCompleted & (1 << i)) != 0) {
+ ShmTrans_send(shmTrans[i]);
+ hadTu[i] = NULL;
+ }
+ }
+ }
+ }
+ Worker_dump(worker, 0);
+
+ for (i = 0; i < nrOfMsgs; i++) {
+ ShmTrans_remove(shmTrans[i]);
+ NetTrans_remove(netTrans[i]);
+ }
+ Worker_fini(worker);
+ exit(EXIT_SUCCESS);
}
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.1 1999-08-31 10:37:24 muench Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.2 1999-10-06 17:05:08 muench Exp $";
#define _XOPEN_SOURCE_EXTENDED
#include <unistd.h>
lAtmClose(my->fd);
return NULL;
}
- my->mtuSize = 8192;
+ my->mtuSize = 65535;
my->pkt = allocMem(my->mtuSize);
my->seqNr = 0;
lAtmClose(my->fd);
return NULL;
}
- my->mtuSize = 8192;
+ my->mtuSize = 65535;
my->pkt = allocMem(my->mtuSize);
my->seqNr = 0;
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.1 1999-08-31 10:37:25 muench Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.2 1999-10-06 17:05:08 muench Exp $";
#define _POSIX_C_SOURCE 199309L
#include <unistd.h>
#endif
while (NULL != (subEvt = HadTuQueue_alloc(hadTuQueue, Hardware_maxSubEvtSize(hw)))) {
Hardware_waitForTrigger(hw, subEvt);
- (*trigAccepted)++;
Hardware_readout(hw, subEvt);
(*subevtsRead)++;
+ (*trigAccepted) = SubEvt_trigNr(subEvt) >> 8;
#ifndef NDEBUG
msglog(LOG_DEBUG, "hadTuQueue: %p = subEvt: %s\n", subEvt, SubEvt_2charP(subEvt));
#endif
#ifndef SAM_DEFS_H
#define SAM_DEFS_H
-#define VMSR 0x01000008
-#define KSR 0x01000004
-#define CRAM 0x00000000
-#define CRR 0x00001ffc
+#define VMSR 0x0008
+#define KSR 0x0004
+#define CRAM 0x0000
+#define CRR 0x1ffc
#endif