| 131 | } |
| 132 | |
| 133 | apr_status_t ap_queue_info_try_get_idler(fd_queue_info_t *queue_info) |
| 134 | { |
| 135 | /* Don't block if there isn't any idle worker. */ |
| 136 | for (;;) { |
| 137 | apr_uint32_t idlers = queue_info->idlers; |
| 138 | if (idlers <= zero_pt) { |
| 139 | return APR_EAGAIN; |
| 140 | } |
| 141 | if (apr_atomic_cas32(&queue_info->idlers, idlers - 1, |
| 142 | idlers) == idlers) { |
| 143 | return APR_SUCCESS; |
| 144 | } |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | apr_status_t ap_queue_info_wait_for_idler(fd_queue_info_t *queue_info, |
| 149 | int *had_to_block) |
no outgoing calls
no test coverage detected