| 1289 | } |
| 1290 | |
| 1291 | static int main_local_transition_acquire(const cbm_daemon_ipc_endpoint_t *endpoint, FILE *feedback, |
| 1292 | cbm_daemon_ipc_local_transition_t **transition_out) { |
| 1293 | uint64_t deadline = main_deadline_after(MAIN_STARTUP_TIMEOUT_MS); |
| 1294 | bool waiting_reported = false; |
| 1295 | for (;;) { |
| 1296 | int status = cbm_daemon_ipc_local_transition_try_acquire(endpoint, transition_out); |
| 1297 | if (status != 0 || cbm_now_ms() >= deadline) { |
| 1298 | return status; |
| 1299 | } |
| 1300 | if (feedback && !waiting_reported) { |
| 1301 | (void)fputs("Waiting for CBM startup coordination...\n", feedback); |
| 1302 | (void)fflush(feedback); |
| 1303 | waiting_reported = true; |
| 1304 | } |
| 1305 | cbm_usleep(10000); |
| 1306 | } |
| 1307 | } |
| 1308 | |
| 1309 | static bool main_version_cohort_close(cbm_version_cohort_lease_t **lease, |
| 1310 | cbm_version_cohort_manager_t **manager) { |
no test coverage detected