Changeset 4762 for trunk/Ohana/src/opihi/pantasks
- Timestamp:
- Aug 13, 2005, 10:30:13 AM (21 years ago)
- Location:
- trunk/Ohana/src/opihi/pantasks
- Files:
-
- 6 edited
-
CheckController.c (modified) (4 diffs)
-
CheckJobs.c (modified) (1 diff)
-
CheckSystem.c (modified) (1 diff)
-
CheckTasks.c (modified) (1 diff)
-
ControllerOps.c (modified) (8 diffs)
-
controller_output.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/pantasks/CheckController.c
r4714 r4762 3 3 int CheckController () { 4 4 5 float dtime; 6 struct timeval start, stop; 5 7 char *p, *q; 6 8 int i, Njobs, status, JobID; 7 9 Job *job; 8 10 IOBuffer buffer; 11 12 gettimeofday (&start, (void *) NULL); 9 13 10 14 /* get the list of completed jobs (exit / crash), update the job status */ … … 32 36 } 33 37 38 gettimeofday (&stop, (void *) NULL); 39 dtime = DTIME (stop, start); 40 if (VerboseMode()) fprintf (stderr, "check stack %f\n", dtime); 41 gettimeofday (&start, (void *) NULL); 42 34 43 p = buffer.buffer; 35 for (i = 0; i < Njobs; i++) {44 for (i = 0; (i < Njobs) && !TestElapsedCheck(); i++) { 36 45 q = strchr (p, '\n'); 37 46 if (q == NULL) { … … 50 59 CheckControllerJob (job); 51 60 } 52 61 gettimeofday (&stop, (void *) NULL); 62 dtime = DTIME (stop, start); 63 if (VerboseMode()) fprintf (stderr, "check %d jobs %f\n", i, dtime); 64 65 if (TestElapsedCheck()) return (TRUE); 66 53 67 /*** check CRASH jobs ***/ 54 68 FlushIOBuffer (&buffer); … … 72 86 73 87 p = buffer.buffer; 74 for (i = 0; i < Njobs; i++) {88 for (i = 0; (i < Njobs) && !TestElapsedCheck(); i++) { 75 89 q = strchr (p, '\n'); 76 90 if (q == NULL) { -
trunk/Ohana/src/opihi/pantasks/CheckJobs.c
r4705 r4762 83 83 /* reset polling clock */ 84 84 SetTaskTimer (&job[0].last); 85 if (TestElapsedCheck()) return (TRUE); 85 86 } 86 87 return (TRUE); -
trunk/Ohana/src/opihi/pantasks/CheckSystem.c
r4714 r4762 1 1 # include "psched.h" 2 3 # define MAX_DELAY 0.1 4 struct timeval start; 5 static int Ncheck = 0; 2 6 3 7 int CheckSystem () { 4 8 5 /* need to make a timeout: if this process lasts too long,6 we should return so the user can get input in. this cannot7 just be a return, because we need to hit each of the elements8 eventually9 */10 struct timeval start, stop;11 double dtime;12 13 9 gettimeofday (&start, (void *) NULL); 14 CheckTasks (); 10 11 if (Ncheck < 5) { 12 CheckTasks (); 13 CheckJobs (); 14 Ncheck ++; 15 } else { 16 CheckController (); 17 CheckControllerOutput (); 18 Ncheck = 0; 19 } 20 return (TRUE); 21 } 22 23 int TestElapsedCheck () { 24 25 struct timeval stop; 26 float dtime; 27 15 28 gettimeofday (&stop, (void *) NULL); 16 29 dtime = DTIME (stop, start); 17 if (VerboseMode()) fprintf (stderr, "check 1: %f seconds\n", dtime); 30 if (dtime > MAX_DELAY) return (TRUE); 31 return (FALSE); 32 } 18 33 19 gettimeofday (&start, (void *) NULL); 20 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); 26 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); 32 CheckControllerOutput (); 33 gettimeofday (&stop, (void *) NULL); 34 dtime = DTIME (stop, start); 35 if (VerboseMode()) fprintf (stderr, "check 4: %f seconds\n", dtime); 36 37 return (TRUE); 38 } 34 /* do we really need to check the controller on every call? 35 or perhaps alternate? 36 */ -
trunk/Ohana/src/opihi/pantasks/CheckTasks.c
r4697 r4762 33 33 gettimeofday (&task[0].last, (void *) NULL); 34 34 task[0].Njobs ++; 35 36 if (TestElapsedCheck()) return (TRUE); 35 37 } 36 38 return (TRUE); -
trunk/Ohana/src/opihi/pantasks/ControllerOps.c
r4714 r4762 1 1 # include "psched.h" 2 2 /* adding a new host can delay controller up to a second or so */ 3 # define CONTROLLER_TIMEOUT 2003 # define CONTROLLER_TIMEOUT 500 4 4 # define CONNECT_TIMEOUT 300 5 5 … … 18 18 /* check job / get output if done */ 19 19 int CheckControllerJob (Job *job) { 20 20 struct timeval start, stop; 21 float dtime; 22 23 gettimeofday (&start, (void *) NULL); 21 24 CheckControllerJobStatus (job); 25 gettimeofday (&stop, (void *) NULL); 26 dtime = DTIME (stop, start); 27 if (VerboseMode()) fprintf (stderr, "check job status %f\n", dtime); 22 28 23 29 if ((job[0].state == JOB_EXIT) || (job[0].state == JOB_CRASH)) { 30 gettimeofday (&start, (void *) NULL); 24 31 GetJobOutput ("stdout", job[0].pid, &job[0].stdout, job[0].stdout_size); 32 gettimeofday (&stop, (void *) NULL); 33 dtime = DTIME (stop, start); 34 if (VerboseMode()) fprintf (stderr, "get stdout %f\n", dtime); 35 25 36 GetJobOutput ("stderr", job[0].pid, &job[0].stderr, job[0].stderr_size); 26 37 DeleteControllerJob (job); … … 97 108 int i, status, Nstart; 98 109 char *line; 110 struct timespec request, remain; 111 112 /* avoid blocking on waitpid, test every 100 usec, up to 50 msec */ 113 request.tv_sec = 0; 114 request.tv_nsec = 100000; 99 115 100 116 /* flush any earlier messages */ … … 117 133 line = memstr (buffer[0].buffer, CONTROLLER_PROMPT, buffer[0].Nbuffer); 118 134 } 119 if (status == -1) usleep (10000);135 if (status == -1) nanosleep (&request, &remain); 120 136 } 121 137 if (status == 0) return (CONTROLLER_DOWN); … … 256 272 257 273 /* try to get evidence connection is alive - wait upto a few seconds */ 274 /* connection is likely slow; don't bother with nanosleep here */ 258 275 p = NULL; 259 276 status = -1; … … 300 317 int ControllerCommand (char *cmd, char *response, IOBuffer *buffer) { 301 318 302 int i; 303 int status; 319 int i, status; 304 320 char *line; 321 struct timespec request, remain; 322 323 /* avoid blocking on waitpid, test every 100 usec, up to 50 msec */ 324 request.tv_sec = 0; 325 request.tv_nsec = 100000; 305 326 306 327 ReadtoIOBuffer (buffer, stdout_cntl); … … 323 344 status = ReadtoIOBuffer (buffer, stdout_cntl); 324 345 line = memstr (buffer[0].buffer, response, buffer[0].Nbuffer); 325 if (status == -1) usleep (10000);346 if (status == -1) nanosleep (&request, &remain); 326 347 } 327 348 if (status == 0) { … … 341 362 bzero (buffer[0].buffer + buffer[0].Nbuffer, buffer[0].Nalloc - buffer[0].Nbuffer); 342 363 } 343 if (VerboseMode()) fprintf (stderr, "message received \n");364 if (VerboseMode()) fprintf (stderr, "message received, %d cycles\n", i); 344 365 return (TRUE); 345 366 } -
trunk/Ohana/src/opihi/pantasks/controller_output.c
r4693 r4762 8 8 } 9 9 10 CheckControllerOutput (); 10 11 PrintControllerOutput (); 11 12 return (TRUE);
Note:
See TracChangeset
for help on using the changeset viewer.
