257 |
|
return(0); |
258 |
|
/* check for full send queue */ |
259 |
|
if (sendq_full()) { |
260 |
< |
RAY mySend; |
261 |
< |
int rval; |
262 |
< |
mySend = *r; |
260 |
> |
RAY mySend = *r; |
261 |
|
/* wait for a result */ |
262 |
< |
rval = ray_presult(r, 0); |
262 |
> |
if (ray_presult(r, 0) <= 0) |
263 |
> |
return(-1); |
264 |
|
/* put new ray in queue */ |
265 |
|
r_queue[r_send_next++] = mySend; |
266 |
< |
return(rval); /* done */ |
266 |
> |
/* XXX r_send_next may now be > RAYQLEN */ |
267 |
> |
return(1); |
268 |
|
} |
269 |
|
/* else add ray to send queue */ |
270 |
|
r_queue[r_send_next++] = *r; |
293 |
|
/* check queued results first */ |
294 |
|
if (r_recv_first < r_recv_next) { |
295 |
|
*r = r_queue[r_recv_first++]; |
296 |
– |
/* make sure send queue has room */ |
297 |
– |
if (sendq_full() && ray_pflush() <= 0) |
298 |
– |
return(-1); |
296 |
|
return(1); |
297 |
|
} |
298 |
|
n = ray_pnprocs - ray_pnidle; /* pending before flush? */ |