-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/netmem.c,v 6.41 2010-07-15 17:51:49 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/netmem.c,v 6.42 2010-07-23 12:38:23 hadaq Exp $";
#define _POSIX_C_SOURCE 199309L
#define SYSLOG_NAMES
int queueVarSizeCnt;
char verbosity[PARAM_MAX_VALUE_LEN];
- unsigned int buffStat;
char shmname[PARAM_MAX_VALUE_LEN];
char evtstat[PARAM_MAX_VALUE_LEN];
static void usage(const char *progName)
{
- syslog(LOG_ERR, "Usage: %s -i inPath [-i inPath] -m nrOfMsgs [-p priority]", progName);
+ syslog(LOG_ERR, "Usage: %s", progName);
+ syslog(LOG_ERR, " -m nrOfMsgs Number of input data streams.");
+ syslog(LOG_ERR, " -i inPath Input, wide format: -i UDP:0.0.0.0:portNr");
+ syslog(LOG_ERR, " short format: -i portNr");
+ syslog(LOG_ERR, " [-p priority] Set priority.");
syslog(LOG_ERR, " [-S shmem_name] Extension of shared memory segment name.");
syslog(LOG_ERR, " [-q queueSize] Size of the queue (shared memory segments) in MBytes.");
syslog(LOG_ERR, " [-Q queueNr:queueSize] Set different queue sizes in MB for different queue numbers,");
my->portNrCnt = 0;
- my->buffStat = 0;
strcpy(my->shmname, "");
sprintf(my->evtstat, "%s_evtstat.txt", getenv("DAQ_SETUP"));
}
+static inPath_short2wide(TheArgs *theArgs, char *optarg)
+{
+
+
+}
+
static int argsFromCL(TheArgs *my, int argc, char *argv[])
{
extern char *optarg;
case 'v':
strcpy(my->verbosity, optarg);
break;
- case 'b':
- my->buffStat = 1;
- break;
case 'S':
strcpy(my->shmname, optarg);
break;
syslog(LOG_ERR, "%s, %d: %s", __FILE__, __LINE__, "sscanf failed.");
sleep(5);
} else {
- port = atoi(ep);
- my->portNr[i] = port;
- my->portNrCnt++;
+ if (strcmp(fam, "UDP") == 0) {
+ /* Wide format: UDP:0.0.0.0:portNr */
+ port = atoi(ep);
+ my->portNr[i] = port;
+ my->portNrCnt++;
+ } else {
+ /* Short format: portNr */
+ port = atoi(my->inPath[i]);
+ my->portNr[i] = port;
+ my->portNrCnt++;
+
+ sprintf(my->inPath[i], "UDP:0.0.0.0:%d", port);
+ }
}
}
}
}
-static void statsBufferDump(TheArgs *theArgs, float interval, ShmTrans **shmtr, NetTrans **my)
-{
- static time_t t0 = 0;
- time_t t, dT;
- int i, j;
- int col = 0;
- char emptybuffer[] = "-";
- int outputGraph = 1; /* Graphical output */
- int outputNum = 0; /* Numerical output */
-
- t = time(NULL);
- dT = t - t0;
-
- /* fprintf (stderr, " dT: %.0lf interval: %.0lf", (double)dT, interval); */
-
- if (dT >= interval && theArgs->buffStat) {
-
- if (outputNum == 1) {
- fputs("==============================================================================\n\n", stderr);
- for (i = 0; i < theArgs->nrOfMsgs; i++) {
-
- fprintf(stderr, "q[%2d]: ", i);
- if (shmtr[i] != NULL)
- if (theArgs->queueSize[i] * 2 - HadTuQueue_size(shmtr[i]->wrQueue) > 0) {
- fprintf(stderr, "%8d ", HadTuQueue_size(shmtr[i]->wrQueue));
- } else {
- fprintf(stderr, "%8s ", "EXCEEDED");
- } else
- fprintf(stderr, "%8s ", emptybuffer);
-
- col++;
- if (col == 6) {
- fputc('\n', stderr);
- col = 0;
- }
- }
- }
-
- if (outputGraph == 1) {
- fputs("------------------ buffer fill levels ----------------------------------------\n", stderr);
-
- float buffSize, queueSize, pktsDisc;
- int maxnorm = 10.;
-
- for (j = 0; j < maxnorm; j++) {
- fprintf(stderr, "%1d ", maxnorm - j - 1);
- for (i = 0; i < theArgs->nrOfMsgs; i++) {
- buffSize = 2 * theArgs->queueSize[i];
- queueSize = HadTuQueue_size(shmtr[i]->wrQueue);
-
- if (maxnorm - maxnorm * queueSize / buffSize < j) {
- fputc('|', stderr);
- } else {
- fputc(' ', stderr);
- }
- }
- fputc('\n', stderr);
- }
-
- /* The following is just to print the numbers of buffers */
- int factor, mod;
-
- fputs("q:", stderr);
- factor = 0;
- for (i = 0; i < theArgs->nrOfMsgs; i++) {
- mod = i % 10;
- fprintf(stderr, "%1d", mod);
- }
- fputc('\n', stderr);
-
- fputs(" ", stderr);
- for (i = 0; i < theArgs->nrOfMsgs; i++) {
- mod = i % 10;
- if (mod == 0)
- fprintf(stderr, "%1d", i / 10);
- else
- fputc(' ', stderr);
- }
- fputc('\n', stderr);
-
- fputs("------------------ discarded packets -----------------------------------------\n", stderr);
- for (j = 0; j < maxnorm; j++) {
- fprintf(stderr, "%1d ", maxnorm - j - 1);
- for (i = 0; i < theArgs->nrOfMsgs; i++) {
- pktsDisc = (*my[i]->pktsDiscarded);
-
- if (maxnorm - (pktsDisc + maxnorm - 1) / maxnorm < j) {
- fputc('D', stderr);
- } else {
- fputc(' ', stderr);
- }
- }
- fputc('\n', stderr);
- }
-
- /* get wall-clock time */
- printTime();
- }
- }
-
- t0 = t;
-}
-
static void storeEvtStat(TheArgs *myArgs, unsigned long pktsDiscard, unsigned long msgsDiscard, unsigned long queue)
{
time_t dT;
int i;
- if (theArgs->isStandalone && strcmp(theArgs->verbosity, "info") == 0 && (dT = (time(NULL) - lastTime)) >= interval
- && !(theArgs->buffStat)) {
+ if (theArgs->isStandalone && strcmp(theArgs->verbosity, "info") == 0 && (dT = (time(NULL) - lastTime)) >= interval) {
fputs("==============================================================================\n", stderr);
for (i = 0; i < theArgs->nrOfMsgs; i++) {
add2Stat(theArgs, theStats, 1, shmTrans, netTrans);
statsDump(theArgs, netTrans, 1);
- statsBufferDump(theArgs, 1, shmTrans, netTrans);
for (i = 0; i < theArgs->nrOfMsgs; i++) {
if (hadTu[i] == NULL) {