Lines Matching refs:loop
51 static void uv__fs_event(uv_loop_t* loop, uv__io_t* w, unsigned int fflags);
54 int uv__kqueue_init(uv_loop_t* loop) {
55 loop->backend_fd = kqueue();
56 if (loop->backend_fd == -1)
59 uv__cloexec(loop->backend_fd, 1);
69 int uv__io_fork(uv_loop_t* loop) {
71 loop->backend_fd = -1;
72 err = uv__kqueue_init(loop);
77 if (loop->cf_state != NULL) {
91 uv__free(loop->cf_state);
92 loop->cf_state = NULL;
99 int uv__io_check_fd(uv_loop_t* loop, int fd) {
105 if (kevent(loop->backend_fd, &ev, 1, NULL, 0, NULL))
110 if (kevent(loop->backend_fd, &ev, 1, NULL, 0, NULL))
132 void uv__io_poll(uv_loop_t* loop, int timeout) {
157 if (loop->nfds == 0) {
158 assert(uv__queue_empty(&loop->watcher_queue));
162 lfields = uv__get_internal_fields(loop);
165 while (!uv__queue_empty(&loop->watcher_queue)) {
166 q = uv__queue_head(&loop->watcher_queue);
173 assert(w->fd < (int) loop->nwatchers);
190 if (kevent(loop->backend_fd, events, nevents, NULL, 0, NULL))
200 if (kevent(loop->backend_fd, events, nevents, NULL, 0, NULL))
210 if (kevent(loop->backend_fd, events, nevents, NULL, 0, NULL))
220 if (loop->flags & UV_LOOP_BLOCK_SIGPROF) {
227 base = loop->time;
240 * will return early if the loop isn't configured with UV_METRICS_IDLE_TIME.
243 uv__metrics_set_provider_entry_time(loop);
259 nfds = kevent(loop->backend_fd,
275 /* Update loop->time unconditionally. It's tempting to skip the update when
279 uv__update_time(loop);
284 if (loop->flags & UV_LOOP_REAP_CHILDREN) {
285 loop->flags &= ~UV_LOOP_REAP_CHILDREN;
286 uv__wait_children(loop);
305 assert(loop->watchers != NULL);
306 loop->watchers[loop->nwatchers] = (void*) events;
307 loop->watchers[loop->nwatchers + 1] = (void*) (uintptr_t) nfds;
314 uv__queue_foreach(q, &loop->process_handles) {
318 loop->flags |= UV_LOOP_REAP_CHILDREN;
329 w = loop->watchers[fd];
333 uv__kqueue_delete(loop->backend_fd, ev);
340 uv__metrics_update_idle_time(loop);
341 w->cb(loop, w, ev->fflags); /* XXX always uv__fs_event() */
352 uv__kqueue_delete(loop->backend_fd, ev);
362 uv__kqueue_delete(loop->backend_fd, ev);
369 uv__kqueue_delete(loop->backend_fd, ev);
381 if (w == &loop->signal_io_watcher) {
384 uv__metrics_update_idle_time(loop);
385 w->cb(loop, w, revents);
391 if (loop->flags & UV_LOOP_REAP_CHILDREN) {
392 loop->flags &= ~UV_LOOP_REAP_CHILDREN;
393 uv__wait_children(loop);
396 uv__metrics_inc_events(loop, nevents);
400 uv__metrics_inc_events_waiting(loop, nevents);
404 uv__metrics_update_idle_time(loop);
405 loop->signal_io_watcher.cb(loop, &loop->signal_io_watcher, POLLIN);
408 loop->watchers[loop->nwatchers] = NULL;
409 loop->watchers[loop->nwatchers + 1] = NULL;
412 return; /* Event loop should cycle now so don't poll again. */
432 diff = loop->time - base;
441 void uv__platform_invalidate_fd(uv_loop_t* loop, int fd) {
446 assert(loop->watchers != NULL);
449 events = (struct kevent*) loop->watchers[loop->nwatchers];
450 nfds = (uintptr_t) loop->watchers[loop->nwatchers + 1];
461 static void uv__fs_event(uv_loop_t* loop, uv__io_t* w, unsigned int fflags) {
518 if (kevent(loop->backend_fd, &ev, 1, NULL, 0, NULL))
523 int uv_fs_event_init(uv_loop_t* loop, uv_fs_event_t* handle) {
524 uv__handle_init(loop, (uv_handle_t*)handle, UV_FS_EVENT);
587 uv__io_start(handle->loop, &handle->event_watcher, POLLIN);
610 uv__io_close(handle->loop, &handle->event_watcher);