IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 12, 2008, 12:52:06 PM (18 years ago)
Author:
eugene
Message:

use virtual stacks for host and job queries by user thread

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pcontrol/JobOps.c

    r18085 r18098  
    11# include "pcontrol.h"
    22
    3 // Stack *JobPool_AllJobs;
     3Stack *JobPool_AllJobs;  // virtual pool for user status queries
    44
    55Stack *JobPool_Pending;
     
    1212
    1313void InitJobStacks () {
    14   // JobPool_AllJobs = InitStack ();
     14  JobPool_AllJobs = InitStack ();
    1515
    1616  JobPool_Pending = InitStack ();
     
    3232
    3333void FreeJobStacks () {
    34 
    35   // AllJobs is a virtual stack : all jobs are references
    36   // FreeStack (JobPool_AllJobs);
    37 
    3834  FreeJobStack (JobPool_Pending);
    3935  FreeJobStack (JobPool_Busy   );
     
    4339  FreeJobStack (JobPool_Exit   );
    4440  FreeJobStack (JobPool_Crash  );
     41
     42  // AllJobs is a virtual stack : all jobs are references
     43  FreeStack (JobPool_AllJobs);
    4544}
    4645
    4746char *GetJobStackName (int StackID) {
    4847  switch (StackID) {
    49     // case PCONTROL_JOB_ALLJOBS: return ("ALLJOBS");
     48    case PCONTROL_JOB_ALLJOBS: return ("ALLJOBS");
    5049
    5150    case PCONTROL_JOB_PENDING: return ("PENDING");
     
    6463Stack *GetJobStack (int StackID) {
    6564  switch (StackID) {
    66     // case PCONTROL_JOB_ALLJOBS: return (JobPool_AllJobs);
     65    case PCONTROL_JOB_ALLJOBS: return (JobPool_AllJobs);
    6766
    6867    case PCONTROL_JOB_PENDING: return (JobPool_Pending);
     
    8180Stack *GetJobStackByName (char *name) {
    8281
    83   // if (!strcasecmp (name, "all"))     return (JobPool_AllJobs);
     82  if (!strcasecmp (name, "all"))     return (JobPool_AllJobs);
    8483
    8584  if (!strcasecmp (name, "pending")) return (JobPool_Pending);
     
    186185  job[0].argv     = argv;
    187186  job[0].hostname = hostname;
     187  job[0].realhost = NULL;
     188
     189  job[0].exit_status = 0;
     190  job[0].Reset    = FALSE;
     191  job[0].stdout_size = 0;
     192  job[0].stderr_size = 0;
     193
    188194  job[0].mode     = mode;
    189   job[0].host     = NULL;
    190   job[0].JobID    = NextJobID();
    191   job[0].Reset    = FALSE;
    192   job[0].realhost = NULL;
     195
     196  job[0].state = 0;
     197  job[0].stack = 0;
    193198
    194199  /* do this step on start? */
     
    196201  InitIOBuffer (&job[0].stderr_buff, 0x1000);
    197202
     203  job[0].dtime = 0.0;
     204  job[0].pid = 0;
     205
     206  job[0].JobID    = NextJobID();
     207  job[0].host     = NULL;
     208
    198209  JobID = job[0].JobID;
    199210
     211  // Put a copy of all created jobs on the ALLJOBS stack
     212  // This is a virtual stack: do not free the job from this stack
     213  PutJob (job, PCONTROL_JOB_ALLJOBS, STACK_BOTTOM);
    200214  PutJob (job, PCONTROL_JOB_PENDING, STACK_BOTTOM);
    201   // PutJob (job, PCONTROL_JOB_ALLJOBS, STACK_BOTTOM);
    202215
    203216  if (VerboseMode()) gprint (GP_ERR, "added new job\n");
     
    208221
    209222  int i;
     223
     224  Job *copy;
     225
     226  copy = PullStackByID (JobPool_AllJobs, job[0].JobID);
     227  ASSERT (copy == job, "programming error: ALLJOBS entry does not match");
    210228
    211229  FREE (job[0].hostname);
Note: See TracChangeset for help on using the changeset viewer.