char diskNum[] = "diskNum";
-int data_disks[22]; /* Available disk space */
+int data_disks[22]; /* Available disk space */
char shmemBase[] = "daq_evtbuild"; /* Base name for shared memory segments */
-int shmem_nums[16]; /* Numbers for found shared memory segments */
-int nrOfShmSegms; /* Total number of found shared memory segments */
+int shmem_nums[16]; /* Numbers for found shared memory segments */
+int nrOfShmSegms; /* Total number of found shared memory segments */
typedef struct TheArgsS {
int sleepTime; /*seconds*/
static void usage(const char *progName)
{
- printf( "Usage: %s [-h] : Print help.", progName);
- printf( " [-s <time>] : Sleep time.");
+ printf( "Usage: %s [-h|--help] : Print this help.\n", progName);
+ printf( " [-s|--sleep <time>] : Sleep time.\n");
+ printf( " [-D|--debug] : Debug output.\n");
}
static void argsDefault(TheArgs *my)
}
}
- int i;
- for(i=0; i<22; i++){
- printf("sizes[%d] = %d\n", i, data_disks[i]);
+ if(theArgs->debug){
+ int i;
+ for(i=0; i<22; i++){
+ printf("Debug: sizes[%2d] = %d\n", i, data_disks[i]);
+ }
}
return 0;
}
}
- return k;
+ return maxIndex;
}
int writeShmem(TheArgs *theArgs)
int diskSpace;
int diskIndex;
unsigned long int iMax;
+ unsigned long int freeDiskNr;
/* Temp copy of array with free disk space */
for(i=0; i<22; i++){
* which contain diskNum variable.
*/
if( shmem_nums[i] >= 0 ){
- sprintf( shmemName, "%s%d", shmemBase, i );
+ sprintf( shmemName, "%s%d", shmemBase, shmem_nums[i] );
iMax = findMaxElement(tmp_data_disks);
+ freeDiskNr = iMax + 1;
+
+ if(theArgs->debug)
+ printf("Debug: EB should write to disk number '%i'\n", freeDiskNr);
- if( Worker_setStatistic( shmemName, diskNum, &iMax ) == -1 ) {
- printf("Error: cannot set '%d' to '%s' in shared memory '%s.shm'\n", iMax, diskNum, shmemName);
+ if( Worker_setStatistic( shmemName, diskNum, &freeDiskNr ) == -1 ) {
+ printf("Error: cannot set '%d' to '%s' in shared memory '%s.shm'\n", freeDiskNr, diskNum, shmemName);
}
tmp_data_disks[iMax] = 0; /* Exclude this disk */
int findShmem(TheArgs *theArgs)
{
- /* Loop over all EB numbers (1..16)
+ /*
+ * Loop over all EB numbers (1..16)
* and find shared memory segments opened by daq_evtbuild.
* Save them in a shmem_nums array.
*/
- char shmemName[20];
- char shmemPathName[30];
+ char shmemName[100];
+ char shmemPathName[100];
int i;
int j = 0;
unsigned long int tmp;
printf("Warning: there is no '%s' in shared memory '%s.shm'\n", diskNum, shmemName);
}
else{
+ if(theArgs->debug)
+ printf("Debug: Found shared memory segment '%s'\n", shmemPathName);
+
shmem_nums[j] = i;
j++;
}