• Home
  • Raw
  • Download

Lines Matching refs:loop

93 static int uv__loops_add(uv_loop_t* loop) {  in uv__loops_add()  argument
109 uv__loops[uv__loops_size] = loop; in uv__loops_add()
121 static void uv__loops_remove(uv_loop_t* loop) { in uv__loops_remove() argument
129 if (uv__loops[loop_index] == loop) in uv__loops_remove()
167 uv_loop_t* loop; in uv__wake_all_loops() local
171 loop = uv__loops[i]; in uv__wake_all_loops()
172 assert(loop); in uv__wake_all_loops()
173 if (loop->iocp != INVALID_HANDLE_VALUE) in uv__wake_all_loops()
174 PostQueuedCompletionStatus(loop->iocp, 0, 0, NULL); in uv__wake_all_loops()
227 int uv_loop_init(uv_loop_t* loop) { in uv_loop_init() argument
236 loop->iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 1); in uv_loop_init()
237 if (loop->iocp == NULL) in uv_loop_init()
243 loop->internal_fields = lfields; in uv_loop_init()
252 loop->time = 0; in uv_loop_init()
253 uv_update_time(loop); in uv_loop_init()
255 QUEUE_INIT(&loop->wq); in uv_loop_init()
256 QUEUE_INIT(&loop->handle_queue); in uv_loop_init()
257 loop->active_reqs.count = 0; in uv_loop_init()
258 loop->active_handles = 0; in uv_loop_init()
260 loop->pending_reqs_tail = NULL; in uv_loop_init()
262 loop->endgame_handles = NULL; in uv_loop_init()
264 loop->timer_heap = timer_heap = uv__malloc(sizeof(*timer_heap)); in uv_loop_init()
272 loop->check_handles = NULL; in uv_loop_init()
273 loop->prepare_handles = NULL; in uv_loop_init()
274 loop->idle_handles = NULL; in uv_loop_init()
276 loop->next_prepare_handle = NULL; in uv_loop_init()
277 loop->next_check_handle = NULL; in uv_loop_init()
278 loop->next_idle_handle = NULL; in uv_loop_init()
280 memset(&loop->poll_peer_sockets, 0, sizeof loop->poll_peer_sockets); in uv_loop_init()
282 loop->active_tcp_streams = 0; in uv_loop_init()
283 loop->active_udp_streams = 0; in uv_loop_init()
285 loop->timer_counter = 0; in uv_loop_init()
286 loop->stop_flag = 0; in uv_loop_init()
288 err = uv_mutex_init(&loop->wq_mutex); in uv_loop_init()
292 err = uv_async_init(loop, &loop->wq_async, uv__work_done); in uv_loop_init()
296 uv__handle_unref(&loop->wq_async); in uv_loop_init()
297 loop->wq_async.flags |= UV_HANDLE_INTERNAL; in uv_loop_init()
299 err = uv__loops_add(loop); in uv_loop_init()
306 uv_mutex_destroy(&loop->wq_mutex); in uv_loop_init()
310 loop->timer_heap = NULL; in uv_loop_init()
317 loop->internal_fields = NULL; in uv_loop_init()
318 CloseHandle(loop->iocp); in uv_loop_init()
319 loop->iocp = INVALID_HANDLE_VALUE; in uv_loop_init()
325 void uv_update_time(uv_loop_t* loop) { in uv_update_time() argument
327 assert(new_time >= loop->time); in uv_update_time()
328 loop->time = new_time; in uv_update_time()
337 void uv__loop_close(uv_loop_t* loop) { in uv__loop_close() argument
341 uv__loops_remove(loop); in uv__loop_close()
349 loop->wq_async.async_sent = 0; in uv__loop_close()
350 loop->wq_async.close_cb = NULL; in uv__loop_close()
351 uv__handle_closing(&loop->wq_async); in uv__loop_close()
352 uv__handle_close(&loop->wq_async); in uv__loop_close()
354 for (i = 0; i < ARRAY_SIZE(loop->poll_peer_sockets); i++) { in uv__loop_close()
355 SOCKET sock = loop->poll_peer_sockets[i]; in uv__loop_close()
360 uv_mutex_lock(&loop->wq_mutex); in uv__loop_close()
361 assert(QUEUE_EMPTY(&loop->wq) && "thread pool work queue not empty!"); in uv__loop_close()
362 assert(!uv__has_active_reqs(loop)); in uv__loop_close()
363 uv_mutex_unlock(&loop->wq_mutex); in uv__loop_close()
364 uv_mutex_destroy(&loop->wq_mutex); in uv__loop_close()
366 uv__free(loop->timer_heap); in uv__loop_close()
367 loop->timer_heap = NULL; in uv__loop_close()
369 lfields = uv__get_internal_fields(loop); in uv__loop_close()
372 loop->internal_fields = NULL; in uv__loop_close()
374 CloseHandle(loop->iocp); in uv__loop_close()
378 int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) { in uv__loop_configure() argument
381 lfields = uv__get_internal_fields(loop); in uv__loop_configure()
391 int uv_backend_fd(const uv_loop_t* loop) { in uv_backend_fd() argument
396 int uv_loop_fork(uv_loop_t* loop) { in uv_loop_fork() argument
401 static int uv__loop_alive(const uv_loop_t* loop) { in uv__loop_alive() argument
402 return uv__has_active_handles(loop) || in uv__loop_alive()
403 uv__has_active_reqs(loop) || in uv__loop_alive()
404 loop->pending_reqs_tail != NULL || in uv__loop_alive()
405 loop->endgame_handles != NULL; in uv__loop_alive()
409 int uv_loop_alive(const uv_loop_t* loop) { in uv_loop_alive() argument
410 return uv__loop_alive(loop); in uv_loop_alive()
414 int uv_backend_timeout(const uv_loop_t* loop) { in uv_backend_timeout() argument
415 if (loop->stop_flag == 0 && in uv_backend_timeout()
417 (uv__has_active_handles(loop) || uv__has_active_reqs(loop)) && in uv_backend_timeout()
418 loop->pending_reqs_tail == NULL && in uv_backend_timeout()
419 loop->idle_handles == NULL && in uv_backend_timeout()
420 loop->endgame_handles == NULL) in uv_backend_timeout()
421 return uv__next_timeout(loop); in uv_backend_timeout()
426 static void uv__poll_wine(uv_loop_t* loop, DWORD timeout) { in uv__poll_wine() argument
436 timeout_time = loop->time + timeout; in uv__poll_wine()
438 if (uv__get_internal_fields(loop)->flags & UV_METRICS_IDLE_TIME) { in uv__poll_wine()
451 uv__metrics_set_provider_entry_time(loop); in uv__poll_wine()
453 GetQueuedCompletionStatus(loop->iocp, in uv__poll_wine()
469 uv__metrics_update_idle_time(loop); in uv__poll_wine()
474 uv__insert_pending_req(loop, req); in uv__poll_wine()
479 uv_update_time(loop); in uv__poll_wine()
487 uv_update_time(loop); in uv__poll_wine()
488 if (timeout_time > loop->time) { in uv__poll_wine()
489 timeout = (DWORD)(timeout_time - loop->time); in uv__poll_wine()
505 static void uv__poll(uv_loop_t* loop, DWORD timeout) { in uv__poll() argument
516 timeout_time = loop->time + timeout; in uv__poll()
518 if (uv__get_internal_fields(loop)->flags & UV_METRICS_IDLE_TIME) { in uv__poll()
531 uv__metrics_set_provider_entry_time(loop); in uv__poll()
533 success = pGetQueuedCompletionStatusEx(loop->iocp, in uv__poll()
550 uv__metrics_update_idle_time(loop); in uv__poll()
559 uv__insert_pending_req(loop, req); in uv__poll()
566 uv_update_time(loop); in uv__poll()
574 uv_update_time(loop); in uv__poll()
575 if (timeout_time > loop->time) { in uv__poll()
576 timeout = (DWORD)(timeout_time - loop->time); in uv__poll()
592 int uv_run(uv_loop_t *loop, uv_run_mode mode) { in uv_run() argument
597 r = uv__loop_alive(loop); in uv_run()
599 uv_update_time(loop); in uv_run()
601 while (r != 0 && loop->stop_flag == 0) { in uv_run()
602 uv_update_time(loop); in uv_run()
603 uv__run_timers(loop); in uv_run()
605 ran_pending = uv__process_reqs(loop); in uv_run()
606 uv__idle_invoke(loop); in uv_run()
607 uv__prepare_invoke(loop); in uv_run()
611 timeout = uv_backend_timeout(loop); in uv_run()
614 uv__poll(loop, timeout); in uv_run()
616 uv__poll_wine(loop, timeout); in uv_run()
623 uv__metrics_update_idle_time(loop); in uv_run()
625 uv__check_invoke(loop); in uv_run()
626 uv__process_endgames(loop); in uv_run()
637 uv_update_time(loop); in uv_run()
638 uv__run_timers(loop); in uv_run()
641 r = uv__loop_alive(loop); in uv_run()
649 if (loop->stop_flag != 0) in uv_run()
650 loop->stop_flag = 0; in uv_run()