Tor
0.4.7.0-alpha-dev
|
Use a socket to alert the main thread from a worker thread. More...
#include "orconfig.h"
#include "lib/net/alertsock.h"
#include "lib/net/socket.h"
#include "lib/log/util_bug.h"
Go to the source code of this file.
Functions | |
static int | send_ni (int fd, const void *buf, size_t n, int flags) |
static int | recv_ni (int fd, void *buf, size_t n, int flags) |
static int | sock_alert (tor_socket_t fd) |
static int | sock_drain (tor_socket_t fd) |
int | alert_sockets_create (alert_sockets_t *socks_out, uint32_t flags) |
void | alert_sockets_close (alert_sockets_t *socks) |
Use a socket to alert the main thread from a worker thread.
Because our main loop spends all of its time in select, epoll, kqueue, or etc, we need a way to wake up the main loop from another thread. This code tries to provide the fastest reasonable way to do that, depending on our platform.
Definition in file alertsock.c.
void alert_sockets_close | ( | alert_sockets_t * | socks | ) |
Close the sockets in socks.
Definition at line 283 of file alertsock.c.
int alert_sockets_create | ( | alert_sockets_t * | socks_out, |
uint32_t | flags | ||
) |
Allocate a new set of alert sockets, and set the appropriate function pointers, in socks_out.
Definition at line 191 of file alertsock.c.
|
static |
As recv(), but retry on EINTR, and return the negative error code on error.
Definition at line 94 of file alertsock.c.
Referenced by sock_drain().
|
static |
As send(), but retry on EINTR, and return the negative error code on error.
Definition at line 76 of file alertsock.c.
Referenced by sock_alert().
|
static |
Send a byte on socket fdt. Return 0 on success or EAGAIN, -1 on error.
Definition at line 164 of file alertsock.c.
Referenced by alert_sockets_close().
|
static |
Drain all the input from a socket fd, and ignore it. Return 0 on success, -errno on error.
Definition at line 175 of file alertsock.c.