blob: cc9ac4bab05f5cd37fb14f182674a2a572776c4d [file] [log] [blame]
James Kuszmaul82f6c042021-01-17 11:30:16 -08001/**
2 * @file re_main.h Interface to main polling routine
3 *
4 * Copyright (C) 2010 Creytiv.com
5 */
6
7
8enum {
9#ifndef FD_READ
10 FD_READ = 1<<0,
11#endif
12#ifndef FD_WRITE
13 FD_WRITE = 1<<1,
14#endif
15 FD_EXCEPT = 1<<2
16};
17
18
19/**
20 * File descriptor event handler
21 *
22 * @param flags Event flags
23 * @param arg Handler argument
24 */
25typedef void (fd_h)(int flags, void *arg);
26
27/**
28 * Thread-safe signal handler
29 *
30 * @param sig Signal number
31 */
32typedef void (re_signal_h)(int sig);
33
34
35int fd_listen(int fd, int flags, fd_h *fh, void *arg);
36void fd_close(int fd);
37int fd_setsize(int maxfds);
38void fd_debug(void);
39
40int libre_init(void);
41void libre_close(void);
42
43int re_main(re_signal_h *signalh);
44void re_cancel(void);
45int re_debug(struct re_printf *pf, void *unused);
46
47int re_thread_init(void);
48void re_thread_close(void);
49void re_thread_enter(void);
50void re_thread_leave(void);
51
52void re_set_mutex(void *mutexp);
53
54
55/** Polling methods */
56enum poll_method {
57 METHOD_NULL = 0,
58 METHOD_POLL,
59 METHOD_SELECT,
60 METHOD_EPOLL,
61 METHOD_KQUEUE,
62 /* sep */
63 METHOD_MAX
64};
65
66int poll_method_set(enum poll_method method);
67enum poll_method poll_method_best(void);
68const char *poll_method_name(enum poll_method method);
69int poll_method_type(enum poll_method *method, const struct pl *name);