Lines Matching refs:loop

48 static int uv__async_start(uv_loop_t* loop);
51 int uv_async_init(uv_loop_t* loop, uv_async_t* handle, uv_async_cb async_cb) {
54 err = uv__async_start(loop);
58 uv__handle_init(loop, (uv_handle_t*)handle, UV_ASYNC);
62 uv__queue_insert_tail(&loop->async_handles, &handle->queue);
86 /* Wake up the other thread's event loop. */
90 /* Wake up the other thread's event loop. */
104 static void uv__async_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
112 assert(w == &loop->async_io_watcher);
130 UV_ERRNO_ABORT("errno is %d, loop addr is %zu, fd is %d (%s:%s:%d)",
131 errno, (size_t)loop, w->fd, __FILE__, __func__, __LINE__);
137 uv__queue_move(&loop->async_handles, &queue);
143 uv__queue_insert_tail(&loop->async_handles, q);
164 uv_loop_t* loop = handle->loop;
165 if (loop == NULL) {
166 UV_LOGF("loop is NULL");
172 fd = loop->async_wfd;
179 fd = loop->async_io_watcher.fd; /* eventfd */
195 UV_ERRNO_ABORT("errno is %d, loop addr is %zu, fd is %d (%s:%s:%d)",
196 errno, (size_t)loop, fd, __FILE__, __func__, __LINE__);
203 static int uv__async_start(uv_loop_t* loop) {
207 if (loop->async_io_watcher.fd != -1)
218 fdsan_exchange_owner_tag(pipefd[0], 0, uv__get_addr_tag((void *)&loop->async_io_watcher));
226 uv__io_init(&loop->async_io_watcher, uv__async_io, pipefd[0]);
227 uv__io_start(loop, &loop->async_io_watcher, POLLIN);
228 loop->async_wfd = pipefd[1];
229 UV_LOGI("open:%{public}zu, pipefd[0]:%{public}d", (size_t)loop, pipefd[0]);
234 int uv__async_fork(uv_loop_t* loop) {
235 if (loop->async_io_watcher.fd == -1) /* never started */
238 uv__async_stop(loop);
240 return uv__async_start(loop);
244 void uv__async_stop(uv_loop_t* loop) {
245 if (loop->async_io_watcher.fd == -1)
248 if (loop->async_wfd != -1) {
249 if (loop->async_wfd != loop->async_io_watcher.fd) {
250 UV_LOGI("close:%{public}zu, async_wfd:%{public}d", (size_t)loop, loop->async_wfd);
251 uv__close(loop->async_wfd);
253 loop->async_wfd = -1;
256 uv__io_stop(loop, &loop->async_io_watcher, POLLIN);
259 uv__epoll_ctl(loop->backend_fd, EPOLL_CTL_DEL, loop->async_io_watcher.fd, NULL);
264 fdsan_close_with_tag(loop->async_io_watcher.fd, uv__get_addr_tag((void *)&loop->async_io_watcher));
266 uv__close(loop->async_io_watcher.fd);
268 UV_LOGI("close:%{public}zu, async_io_wfd:%{public}d", (size_t)loop, loop->async_io_watcher.fd);
269 loop->async_io_watcher.fd = -1;