Go to the documentation of this file.
37 #include <sys/eventfd.h>
68 if (cmpxchgi(&
handle->pending, 0, 1) != 0)
75 if (cmpxchgi(&
handle->pending, 1, 2) != 1)
91 rc = cmpxchgi(&
handle->pending, 2, 0);
116 assert(w == &
loop->async_io_watcher);
121 if (
r ==
sizeof(
buf))
127 if (errno == EAGAIN || errno == EWOULDBLOCK)
147 if (h->async_cb == NULL)
163 fd =
loop->async_wfd;
165 #if defined(__linux__)
170 fd =
loop->async_io_watcher.fd;
176 while (
r == -1 && errno == EINTR);
182 if (errno == EAGAIN || errno == EWOULDBLOCK)
193 if (
loop->async_io_watcher.fd != -1)
197 err = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
211 loop->async_wfd = pipefd[1];
218 if (
loop->async_io_watcher.fd == -1)
228 if (
loop->async_io_watcher.fd == -1)
231 if (
loop->async_wfd != -1) {
232 if (
loop->async_wfd !=
loop->async_io_watcher.fd)
234 loop->async_wfd = -1;
239 loop->async_io_watcher.fd = -1;
static int uv__async_spin(uv_async_t *handle)
void uv__io_init(uv__io_t *w, uv__io_cb cb, int fd)
#define QUEUE_DATA(ptr, type, field)
void uv__async_stop(uv_loop_t *loop)
void uv__async_close(uv_async_t *handle)
#define ACCESS_ONCE(type, var)
static void uv__async_send(uv_loop_t *loop)
void uv__io_start(uv_loop_t *loop, uv__io_t *w, unsigned int events)
unsigned __int64 uint64_t
int uv__make_pipe(int fds[2], int flags)
static int uv__async_start(uv_loop_t *loop)
static void uv__async_io(uv_loop_t *loop, uv__io_t *w, unsigned int events)
#define uv__handle_init(loop_, h, type_)
int uv_async_send(uv_async_t *handle)
static void async_cb(uv_async_t *handle)
int read(izstream &zs, T *x, Items items)
void(* uv_async_cb)(uv_async_t *handle)
int uv__async_fork(uv_loop_t *loop)
void uv__io_stop(uv_loop_t *loop, uv__io_t *w, unsigned int events)
#define uv__handle_start(h)
int uv_async_init(uv_loop_t *loop, uv_async_t *handle, uv_async_cb async_cb)
#define uv__handle_stop(h)
#define QUEUE_INSERT_TAIL(h, q)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:35