James Kuszmaul | 82f6c04 | 2021-01-17 11:30:16 -0800 | [diff] [blame^] | 1 | /** |
| 2 | * @file re_main.h Interface to main polling routine |
| 3 | * |
| 4 | * Copyright (C) 2010 Creytiv.com |
| 5 | */ |
| 6 | |
| 7 | |
| 8 | enum { |
| 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 | */ |
| 25 | typedef void (fd_h)(int flags, void *arg); |
| 26 | |
| 27 | /** |
| 28 | * Thread-safe signal handler |
| 29 | * |
| 30 | * @param sig Signal number |
| 31 | */ |
| 32 | typedef void (re_signal_h)(int sig); |
| 33 | |
| 34 | |
| 35 | int fd_listen(int fd, int flags, fd_h *fh, void *arg); |
| 36 | void fd_close(int fd); |
| 37 | int fd_setsize(int maxfds); |
| 38 | void fd_debug(void); |
| 39 | |
| 40 | int libre_init(void); |
| 41 | void libre_close(void); |
| 42 | |
| 43 | int re_main(re_signal_h *signalh); |
| 44 | void re_cancel(void); |
| 45 | int re_debug(struct re_printf *pf, void *unused); |
| 46 | |
| 47 | int re_thread_init(void); |
| 48 | void re_thread_close(void); |
| 49 | void re_thread_enter(void); |
| 50 | void re_thread_leave(void); |
| 51 | |
| 52 | void re_set_mutex(void *mutexp); |
| 53 | |
| 54 | |
| 55 | /** Polling methods */ |
| 56 | enum 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 | |
| 66 | int poll_method_set(enum poll_method method); |
| 67 | enum poll_method poll_method_best(void); |
| 68 | const char *poll_method_name(enum poll_method method); |
| 69 | int poll_method_type(enum poll_method *method, const struct pl *name); |