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