| 2177 | } |
| 2178 | |
| 2179 | static void runtime_startup_lock_release_complete(cbm_daemon_ipc_startup_lock_t **lock_io, |
| 2180 | uint32_t timeout_ms) { |
| 2181 | uint64_t deadline = runtime_deadline_after(timeout_ms); |
| 2182 | while (lock_io && *lock_io) { |
| 2183 | (void)cbm_daemon_ipc_startup_lock_release(lock_io); |
| 2184 | if (!*lock_io) { |
| 2185 | return; |
| 2186 | } |
| 2187 | if (cbm_now_ms() >= deadline) { |
| 2188 | runtime_cleanup_fail_stop("startup_lock_cleanup"); |
| 2189 | } |
| 2190 | cbm_usleep(1000); |
| 2191 | } |
| 2192 | } |
| 2193 | |
| 2194 | static void runtime_service_destroy_unstarted(cbm_daemon_runtime_service_t *service) { |
| 2195 | if (!service) { |
no test coverage detected