IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 5, 2005, 9:53:49 AM (21 years ago)
Author:
eugene
Message:

fixed some memory leaks, pushed extra init functions into lib inits

Location:
trunk/Ohana/src/opihi/pantasks
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pantasks/CheckController.c

    r4706 r4714  
    77  Job *job;
    88  IOBuffer buffer;
    9  
    109
    1110  /* get the list of completed jobs (exit / crash), update the job status */
    12 
    1311  if (!CheckControllerStatus()) return (TRUE);
    1412
     
    2119  }
    2220
     21  p = memstr (buffer.buffer, "USAGE: jobstack", buffer.Nbuffer);
     22  if (p != NULL) {
     23    FreeIOBuffer (&buffer);
     24    return (FALSE);
     25  }
     26
    2327  /** parse job list **/
    24   sscanf (buffer.buffer, "%*s %s", &Njobs);
     28  status = sscanf (buffer.buffer, "%*s %d", &Njobs);
     29  if (status != 1) {
     30    FreeIOBuffer (&buffer);
     31    return (FALSE);
     32  }
     33
    2534  p = buffer.buffer;
    26  
    2735  for (i = 0; i < Njobs; i++) {
    2836    q = strchr (p, '\n');
    2937    if (q == NULL) {
    3038      fprintf (stderr, "controller message error: incomplete job list\n");
    31       FreeIOBuffer (&buffer);
    3239      break;
    3340    }
    34     p = q++;
    35     sscanf (p, "%d", &JobID);
    36     job = FindJob (JobID);
     41    p = q + 1;
     42    status = sscanf (p, "%d", &JobID);
     43
     44    job = FindControllerJob (JobID);
    3745    if (job == NULL) {
    38       fprintf (stderr, "misplaced job? %d not in job list\n");
     46      fprintf (stderr, "misplaced job? %d not in EXIT job list\n", JobID);
    3947      continue;
    4048    }
     
    4250    CheckControllerJob (job);
    4351  }
    44     
     52 
    4553  /*** check CRASH jobs ***/
    46   InitIOBuffer (&buffer, 0x100);
     54  FlushIOBuffer (&buffer);
    4755  status = ControllerCommand ("jobstack crash", CONTROLLER_PROMPT, &buffer);
    4856  if (!status) {
     
    5058    return (FALSE);
    5159  }
     60  p = memstr (buffer.buffer, "USAGE: jobstack", buffer.Nbuffer);
     61  if (p != NULL) {
     62    FreeIOBuffer (&buffer);
     63    return (FALSE);
     64  }
    5265
    5366  /** parse job list **/
    54   sscanf (buffer.buffer, "%*s %s", &Njobs);
     67  status = sscanf (buffer.buffer, "%*s %d", &Njobs);
     68  if (status != 1) {
     69    FreeIOBuffer (&buffer);
     70    return (FALSE);
     71  }
     72
    5573  p = buffer.buffer;
    56  
    5774  for (i = 0; i < Njobs; i++) {
    5875    q = strchr (p, '\n');
    5976    if (q == NULL) {
    6077      fprintf (stderr, "controller message error: incomplete job list\n");
    61       FreeIOBuffer (&buffer);
    6278      break;
    6379    }
    64     p = q++;
    65     sscanf (p, "%d", &JobID);
    66     job = FindJob (JobID);
     80    p = q + 1;
     81   
     82    status = sscanf (p, "%d", &JobID);
     83    job = FindControllerJob (JobID);
    6784    if (job == NULL) {
    68       fprintf (stderr, "misplaced job? %d not in job list\n");
     85      fprintf (stderr, "misplaced job? %d not in CRASH job list\n", JobID);
    6986      continue;
    7087    }
     
    7289    CheckControllerJob (job);
    7390  }
     91  FreeIOBuffer (&buffer);
    7492  return (TRUE);
    7593}
  • trunk/Ohana/src/opihi/pantasks/CheckSystem.c

    r4706 r4714  
    88     eventually
    99  */
     10  struct timeval start, stop;
     11  double dtime;
     12 
     13  gettimeofday (&start, (void *) NULL);
     14  CheckTasks ();
     15  gettimeofday (&stop, (void *) NULL);
     16  dtime = DTIME (stop, start);
     17  if (VerboseMode()) fprintf (stderr, "check 1: %f seconds\n", dtime);
    1018
    11   CheckTasks ();
     19  gettimeofday (&start, (void *) NULL);
    1220  CheckJobs ();
     21  gettimeofday (&stop, (void *) NULL);
     22  dtime = DTIME (stop, start);
     23  if (VerboseMode()) fprintf (stderr, "check 2: %f seconds\n", dtime);
     24
     25  gettimeofday (&start, (void *) NULL);
    1326  CheckController ();
     27  gettimeofday (&stop, (void *) NULL);
     28  dtime = DTIME (stop, start);
     29  if (VerboseMode()) fprintf (stderr, "check 3: %f seconds\n", dtime);
     30
     31  gettimeofday (&start, (void *) NULL);
    1432  CheckControllerOutput ();
     33  gettimeofday (&stop, (void *) NULL);
     34  dtime = DTIME (stop, start);
     35  if (VerboseMode()) fprintf (stderr, "check 4: %f seconds\n", dtime);
     36
    1537  return (TRUE);
    1638}
  • trunk/Ohana/src/opihi/pantasks/ControllerOps.c

    r4706 r4714  
    186186  job[0].pid = atoi (string);
    187187  FreeIOBuffer (&buffer);
    188 
    189   InitIOBuffer (&job[0].stdout, 0x100);
    190   InitIOBuffer (&job[0].stderr, 0x100);
    191188  return (TRUE);
    192189}
     
    419416  InitIOBuffer (&buffer, 0x100);
    420417  status = ControllerCommand (cmd, CONTROLLER_PROMPT, &buffer);
     418  FreeIOBuffer (&buffer);
     419
    421420  ControllerStatus = FALSE;
    422421  result = waitpid (ControllerPID, &waitstatus, WNOHANG);
     
    429428  close (stdout_cntl);
    430429  close (stderr_cntl);
    431 
    432   return (TRUE);
    433 }
     430  FreeIOBuffer (&stdout_buffer);
     431  FreeIOBuffer (&stderr_buffer);
     432
     433  return (TRUE);
     434}
  • trunk/Ohana/src/opihi/pantasks/JobOps.c

    r4706 r4714  
    3939  for (i = 0; i < Njobs; i++) {
    4040    if (jobs[i][0].JobID == JobID) {
     41      return (jobs[i]);
     42    }
     43  }
     44  return (NULL);
     45
     46
     47/* return job with given controller Job ID */
     48Job *FindControllerJob (int JobID) {
     49
     50  int i;
     51
     52  /* return job with matching JobID */
     53  for (i = 0; i < Njobs; i++) {
     54    if (jobs[i][0].mode == JOB_LOCAL) continue;
     55    if (jobs[i][0].pid  == JobID) {
    4156      return (jobs[i]);
    4257    }
     
    96111     need to have matched entries to these quantites in the job structure */
    97112
     113  InitIOBuffer (&job[0].stdout, 0x100);
     114  InitIOBuffer (&job[0].stderr, 0x100);
     115
    98116  jobs[Njobs] = job;
    99117  Njobs ++;
     
    117135  }
    118136  free (job[0].argv);
     137
     138  FreeIOBuffer (&job[0].stdout);
     139  FreeIOBuffer (&job[0].stderr);
     140  free (job);
    119141  return;
    120142}
     
    161183  gettimeofday (&job[0].start, (void *) NULL);
    162184  job[0].last = job[0].start;
    163  
     185  job[0].state = JOB_PENDING;
    164186  return (TRUE);
    165187}
  • trunk/Ohana/src/opihi/pantasks/LocalJob.c

    r4697 r4714  
    144144  job[0].pid = pid;
    145145
    146   InitIOBuffer (&job[0].stdout, 0x100);
    147   InitIOBuffer (&job[0].stderr, 0x100);
    148146  return (TRUE);
    149147
  • trunk/Ohana/src/opihi/pantasks/controller_host.c

    r4706 r4714  
    2020  if (status) fwrite (buffer.buffer, 1, buffer.Nbuffer, stderr);
    2121  FreeIOBuffer (&buffer);
    22 
     22  return (TRUE);
    2323}
  • trunk/Ohana/src/opihi/pantasks/init.c

    r4705 r4714  
    5353  int i;
    5454
     55  InitTasks ();
     56  InitJobs ();
     57  InitJobIDs ();
     58
    5559  for (i = 0; i < sizeof (cmds) / sizeof (Command); i++) {
    5660    AddCommand (&cmds[i]);
  • trunk/Ohana/src/opihi/pantasks/psched.c

    r4705 r4714  
    1212  auto_break = TRUE;
    1313
    14   Nlists = 0;
    15   ALLOCATE (lists, List, 1);
    16 
    17   /* init functions required by libraries */
    18   /* -libopihi */
    19   InitCommands ();
    20   InitMacros ();
    21   InitBuffers ();
    22   InitVectors ();
    23   InitVariables ();
    24 
    25   /* -libdisplay */
    26   InitGraph ();
    27   InitImage ();
    28 
    2914  /* load the commands used by this implementation */
    3015  InitBasic ();
    3116  InitData ();
    32   InitOutfile ();
    3317  InitPsched ();
    34   InitTasks ();
    35   InitJobs ();
    36   InitJobIDs ();
    3718
    3819  rl_readline_name = opihi_name;
Note: See TracChangeset for help on using the changeset viewer.