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); 70