| 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? */ |