VSF Documented
poll.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_POLL_H__
2#define __VSF_LINUX_POLL_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "./signal.h"
8#else
9# include <signal.h>
10#endif
11#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED & VSF_LINUX_USE_SIMPLE_TIME == ENABLED
12# include "./simple_libc/time.h"
13#else
14# include <time.h>
15#endif
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21#if VSF_LINUX_CFG_WRAPPER == ENABLED
22#define poll VSF_LINUX_WRAPPER(poll)
23#define ppoll VSF_LINUX_WRAPPER(ppoll)
24#endif
25
26// syscalls
27
28#define __NR_poll poll
29#define __NR_ppoll ppoll
30
31typedef int nfds_t;
32
33#define POLLIN (1 << 0)
34#define POLLPRI (1 << 1)
35#define POLLOUT (1 << 2)
36#define POLLERR (1 << 3)
37#define POLLHUP (1 << 4)
38#define POLLNVAL (1 << 5)
39
40#define POLLRDNORM (1 << 6)
41#define POLLRDBAND (1 << 7)
42#define POLLWRNORM (1 << 8)
43#define POLLWRBAND (1 << 9)
44#define POLLRDHUP (1 << 10)
45
47struct pollfd {
48 int fd;
49 short events;
50 short revents;
51
52 // private
55 void *trig;
56};
57
58#if VSF_LINUX_APPLET_USE_POLL == ENABLED
59typedef struct vsf_linux_poll_vplt_t {
61
65# ifndef __VSF_APPLET__
67# endif
68#endif
69
70#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_POLL_LIB__))\
71 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_POLL == ENABLED
72
73#ifndef VSF_LINUX_APPLET_POLL_VPLT
74# if VSF_LINUX_USE_APPLET == ENABLED
75# define VSF_LINUX_APPLET_POLL_VPLT \
76 ((vsf_linux_poll_vplt_t *)(VSF_LINUX_APPLET_VPLT->poll_vplt))
77# else
78# define VSF_LINUX_APPLET_POLL_VPLT \
79 ((vsf_linux_poll_vplt_t *)vsf_vplt((void *)0))
80# endif
81#endif
82
83#define VSF_LINUX_APPLET_POLL_ENTRY(__NAME) \
84 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_POLL_VPLT, __NAME)
85#define VSF_LINUX_APPLET_POLL_IMP(...) \
86 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_POLL_VPLT, __VA_ARGS__)
87
88VSF_LINUX_APPLET_POLL_IMP(poll, int, struct pollfd *fds, nfds_t nfds, int timeout) {
90 return VSF_LINUX_APPLET_POLL_ENTRY(poll)(fds, nfds, timeout);
91}
92VSF_LINUX_APPLET_POLL_IMP(ppoll, int, struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts, const sigset_t *sigmask) {
94 return VSF_LINUX_APPLET_POLL_ENTRY(ppoll)(fds, nfds, timeout_ts, sigmask);
95}
96
97#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_POLL
98
99int poll(struct pollfd *fds, nfds_t nfds, int timeout);
100int ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts, const sigset_t *sigmask);
101
102#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_POLL
103
104#ifdef __cplusplus
105}
106#endif
107
108#endif
__le16 timeout
Definition ieee80211.h:94
int nfds_t
Definition poll.h:31
#define poll
Definition poll.h:22
__VSF_VPLT_DECORATOR__ vsf_linux_poll_vplt_t vsf_linux_poll_vplt
Definition vsf_linux_fs.c:3560
#define ppoll
Definition poll.h:23
Definition poll.h:47
int fd
Definition poll.h:48
void * trig
Definition poll.h:55
vsf_linux_fd_priv_callback_t * callback
Definition poll.h:54
short revents
Definition poll.h:50
short events_triggered
Definition poll.h:53
short events
Definition poll.h:49
Definition signal.h:131
Definition time.h:66
Definition vsf_linux_fs.h:83
Definition poll.h:59
vsf_vplt_info_t info
Definition poll.h:60
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(poll)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(ppoll)
Definition vsf_cfg.h:95
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165