]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Fixed. Sergey.
authorhadaq <hadaq>
Thu, 8 Jul 2010 09:01:59 +0000 (09:01 +0000)
committerhadaq <hadaq>
Thu, 8 Jul 2010 09:01:59 +0000 (09:01 +0000)
disks/disks.c

index edf9d202bcc4c799a3e773b12b5386c0ec2ec771..7d97c4a96469c3301edf5abb9ab0799606c2975a 100644 (file)
@@ -24,11 +24,11 @@ const char space[] = " ";
 
 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*/
@@ -37,8 +37,9 @@ typedef struct TheArgsS {
 
 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)
@@ -146,9 +147,11 @@ int checkDisks(TheArgs *theArgs)
     }
   }
 
-  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;
@@ -178,7 +181,7 @@ int findMaxElement( int tmp[] ){
     }
   }
 
-  return k;
+  return maxIndex;
 }
 
 int writeShmem(TheArgs *theArgs)
@@ -194,6 +197,7 @@ 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++){
@@ -206,12 +210,16 @@ int writeShmem(TheArgs *theArgs)
      * 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 */
@@ -223,13 +231,14 @@ int writeShmem(TheArgs *theArgs)
 
 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;
@@ -245,6 +254,9 @@ int findShmem(TheArgs *theArgs)
          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++;
       }