Changeset 8296 for trunk/Ohana/src/opihi/pcontrol/CheckSystem.c
- Timestamp:
- Aug 11, 2006, 4:51:50 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/pcontrol/CheckSystem.c (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/pcontrol/CheckSystem.c
r7917 r8296 13 13 CheckBusyJobs(0.020); /* get job status */ 14 14 CheckDoneJobs(0.020); /* harvest job stdout/stderr */ 15 CheckKillJobs(0.020); /* harvest job stdout/stderr */ 15 16 16 17 CheckDoneHosts(0.020); /* reset the host */ … … 51 52 float dtime; 52 53 53 stack = GetJobStack (PCONTROL_JOB_BUSY); 54 Nobject = stack[0].Nobject; 55 56 /* always allow at least one test */ 57 gettimeofday (&start, (void *) NULL); 58 dtime = 0.0; 59 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 60 job = GetStack (stack, STACK_TOP); 54 /* Loop through objects on the stack, no more than once. Note that it is not important if the 55 stack size is modified by other threads or is changed by any of the actions performed during 56 this loop: the Nobject value is only used to get a rough number for the number of iterations. 57 */ 58 59 hoststack = GetHostStack (PCONTROL_HOST_BUSY); 60 jobstack = GetJobStack (PCONTROL_JOB_BUSY); 61 Nobject = jobstack[0].Nobject; 62 63 /* always allow at least one test */ 64 gettimeofday (&start, (void *) NULL); 65 dtime = 0.0; 66 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 67 /* pull both job and host from their stacks */ 68 /* XXX is the subject to the Dangerous Embrace? */ 69 LockStack (hoststack); 70 job = PullStackByLocation (jobstack, STACK_TOP); 71 if (job == NULL) { 72 UnlockStack (hoststack); 73 break; 74 } 75 host = RemoveStackByID (hoststack, job[0].host[0].HostID); 76 UnlockStack (hoststack); 77 61 78 CheckBusyJob (job); 62 79 gettimeofday (&stop, (void *) NULL); … … 75 92 float dtime; 76 93 94 /* Loop through objects on the stack, no more than once. see note above */ 77 95 stack = GetJobStack (PCONTROL_JOB_DONE); 78 96 Nobject = stack[0].Nobject; … … 82 100 dtime = 0.0; 83 101 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 84 job = GetStack (stack, STACK_TOP); 102 job = PullStackByLocation (stack, STACK_TOP); 103 if (job == NULL) break; 85 104 CheckDoneJob (job); 86 105 gettimeofday (&stop, (void *) NULL); … … 91 110 } 92 111 112 int CheckKillJobs (float MaxDelay) { 113 114 struct timeval start, stop; 115 int i, Nobject; 116 Stack *stack; 117 Job *job; 118 float dtime; 119 120 /* Loop through objects on the stack, no more than once. see note above */ 121 stack = GetJobStack (PCONTROL_JOB_KILL); 122 Nobject = stack[0].Nobject; 123 124 /* always allow at least one test */ 125 gettimeofday (&start, (void *) NULL); 126 dtime = 0.0; 127 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 128 job = PullStackByLocation (stack, STACK_TOP); 129 if (job == NULL) break; 130 KillJob (job); 131 gettimeofday (&stop, (void *) NULL); 132 dtime = DTIME (stop, start); 133 } 134 if (0 && (Nobject > 0)) gprint (GP_ERR, "checked %d of %d jobs\n", i, Nobject); 135 return (TRUE); 136 } 137 93 138 int CheckDoneHosts (float MaxDelay) { 94 139 … … 99 144 float dtime; 100 145 146 /* Loop through objects on the stack, no more than once. see note above */ 101 147 stack = GetHostStack (PCONTROL_HOST_DONE); 102 148 Nobject = stack[0].Nobject; … … 106 152 dtime = 0.0; 107 153 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 108 host = GetStack (stack, STACK_TOP); 154 host = PullStackByLocation (stack, STACK_TOP); 155 if (host == NULL) break; 109 156 CheckDoneHost (host); 110 157 gettimeofday (&stop, (void *) NULL); … … 123 170 float dtime; 124 171 172 /* Loop through objects on the stack, no more than once. see note above */ 125 173 stack = GetHostStack (PCONTROL_HOST_DOWN); 126 174 Nobject = stack[0].Nobject; … … 130 178 dtime = 0.0; 131 179 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 132 host = GetStack (stack, STACK_TOP); 180 host = PullStackByLocation (stack, STACK_TOP); 181 if (host == NULL) break; 133 182 dtime = DTIME (host[0].nexttry, start); 134 183 if (dtime > 0) { … … 156 205 if (!stack[0].Nobject) return (TRUE); 157 206 207 /* Loop through objects on the stack, no more than once. see note above */ 158 208 stack = GetHostStack (PCONTROL_HOST_IDLE); 159 209 Nobject = stack[0].Nobject; … … 163 213 dtime = 0.0; 164 214 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 165 host = GetStack (stack, STACK_TOP); 215 host = PullStackByLocation (stack, STACK_TOP); 216 if (host == NULL) break; 166 217 CheckIdleHost (host); 167 218 gettimeofday (&stop, (void *) NULL); … … 181 232 float dtime; 182 233 234 /* Loop through objects on the stack, no more than once. see note above */ 183 235 stack = GetHostStack (PCONTROL_HOST_IDLE); 184 236 Nobject = stack[0].Nobject; … … 188 240 dtime = 0.0; 189 241 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 190 host = GetStack (stack, STACK_TOP); 242 host = PullStackByLocation (stack, STACK_TOP); 243 if (host == NULL) break; 191 244 CheckHost (host); 192 245 gettimeofday (&stop, (void *) NULL); … … 195 248 if (0) gprint (GP_ERR, "checked %d idle hosts\n", i); 196 249 250 /* Loop through objects on the stack, no more than once. see note above */ 197 251 stack = GetHostStack (PCONTROL_HOST_BUSY); 198 252 Nobject = stack[0].Nobject; … … 200 254 dtime = 0.0; 201 255 for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) { 202 host = GetStack (stack, STACK_TOP); 256 host = PullStackByLocation (stack, STACK_TOP); 257 if (host == NULL) break; 203 258 CheckHost (host); 204 259 gettimeofday (&stop, (void *) NULL);
Note:
See TracChangeset
for help on using the changeset viewer.
