Deleted Added
full compact
63,70c63,72
< int reusable;
< int pid;
< int req_write_pipe; /* parent */
< int resp_read_pipe;
< void * resp_read_ctx;
< int req_read_pipe; /* child */
< int resp_write_pipe;
< int ispipe;
---
> int reusable;
> int pid;
> int req_write_pipe; /* parent */
> int resp_read_pipe;
> void * resp_read_ctx;
> int req_read_pipe; /* child */
> int resp_write_pipe;
> int ispipe;
> volatile u_int resp_ready_seen; /* signal/scan */
> volatile u_int resp_ready_done; /* consumer/mainloop */
76,89c78,91
< /*
< * blocking workitems and blocking_responses are dynamically-sized
< * one-dimensional arrays of pointers to blocking worker requests and
< * responses.
< *
< * IMPORTANT: This structure is shared between threads, and all access
< * that is not atomic (especially queue operations) must hold the
< * 'accesslock' semaphore to avoid data races.
< *
< * The resource management (thread/semaphore creation/destruction)
< * functions and functions just testing a handle are safe because these
< * are only changed by the main thread when no worker is running on the
< * same data structure.
< */
---
> /*
> * blocking workitems and blocking_responses are
> * dynamically-sized one-dimensional arrays of pointers to
> * blocking worker requests and responses.
> *
> * IMPORTANT: This structure is shared between threads, and all
> * access that is not atomic (especially queue operations) must
> * hold the 'accesslock' semaphore to avoid data races.
> *
> * The resource management (thread/semaphore
> * creation/destruction) functions and functions just testing a
> * handle are safe because these are only changed by the main
> * thread when no worker is running on the same data structure.
> */
119a122,123
> volatile u_int resp_ready_seen; /* signal/scan */
> volatile u_int resp_ready_done; /* consumer/mainloop */
128a133,136
> /* we need some global tag to indicate any blocking child may be ready: */
> extern volatile u_int blocking_child_ready_seen;/* signal/scan */
> extern volatile u_int blocking_child_ready_done;/* consumer/mainloop */
>
141a150
> extern void harvest_blocking_responses(void);