VSF Documented
select.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_SYS_SELECT_H__
2#define __VSF_LINUX_SYS_SELECT_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "../sys/time.h"
8# include "../signal.h"
9#else
10# include <sys/time.h>
11# include <signal.h>
12#endif
13// for bitmap
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#if VSF_LINUX_CFG_WRAPPER == ENABLED
21# define select VSF_LINUX_WRAPPER(select)
22#elif defined(__WIN__) && !defined(__VSF_APPLET__)
23# define select VSF_LINUX_WRAPPER(select)
24# define pselect VSF_LINUX_WRAPPER(pselect)
25#endif
26
27// syscalls
28
29#define __NR_select select
30
31#ifndef FD_SETSIZE
32# define FD_SETSIZE 1024
33#endif
34#define FD_ZERO(set) vsf_bitmap_reset((set)->fds_bits, FD_SETSIZE)
35#define FD_SET(fd, set) vsf_bitmap_set((set)->fds_bits, (fd))
36#define FD_CLR(fd, set) vsf_bitmap_clear((set)->fds_bits, (fd))
37#define FD_ISSET(fd, set) vsf_bitmap_get((set)->fds_bits, (fd))
38
39#define NFDBITS (sizeof(fd_mask) << 3)
40
42typedef struct fd_set {
45//__vsf_declare_bitmap_ex(fd_set, FD_SETSIZE)
46
47#if VSF_LINUX_APPLET_USE_SYS_SELECT == ENABLED
50
54# ifndef __VSF_APPLET__
56# endif
57#endif
58
59#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_SYS_SELECT_LIB__))\
60 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_SYS_SELECT == ENABLED
61
62#ifndef VSF_LINUX_APPLET_SYS_SELECT_VPLT
63# if VSF_LINUX_USE_APPLET == ENABLED
64# define VSF_LINUX_APPLET_SYS_SELECT_VPLT \
65 ((vsf_linux_sys_select_vplt_t *)(VSF_LINUX_APPLET_VPLT->sys_select_vplt))
66# else
67# define VSF_LINUX_APPLET_SYS_SELECT_VPLT \
68 ((vsf_linux_sys_select_vplt_t *)vsf_vplt((void *)0))
69# endif
70#endif
71
72#define VSF_LINUX_APPLET_SYS_SELECT_ENTRY(__NAME) \
73 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_SYS_SELECT_VPLT, __NAME)
74#define VSF_LINUX_APPLET_SYS_SELECT_IMP(...) \
75 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_SYS_SELECT_VPLT, __VA_ARGS__)
76
77VSF_LINUX_APPLET_SYS_SELECT_IMP(select, int, int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) {
79 return VSF_LINUX_APPLET_SYS_SELECT_ENTRY(select)(nfds, readfds, writefds, exceptfds, timeout);
80}
81VSF_LINUX_APPLET_SYS_SELECT_IMP(pselect, int, int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout_ts, const sigset_t *sigmask) {
83 return VSF_LINUX_APPLET_SYS_SELECT_ENTRY(pselect)(nfds, readfds, writefds, exceptfds, timeout_ts, sigmask);
84}
85
86#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SYS_SELECT
87
88int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
89 struct timeval *timeout);
90int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
91 const struct timespec *timeout_ts, const sigset_t *sigmask);
92
93#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SYS_SELECT
94
95#ifdef __cplusplus
96}
97#endif
98
99#endif
uint_fast8_t uintalu_t
Definition type.h:88
__le16 timeout
Definition ieee80211.h:94
uintalu_t fd_mask
Definition select.h:41
#define select
Definition select.h:21
__VSF_VPLT_DECORATOR__ vsf_linux_sys_select_vplt_t vsf_linux_sys_select_vplt
Definition vsf_linux_fs.c:3625
#define FD_SETSIZE
Definition select.h:32
#define NFDBITS
Definition select.h:39
int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout_ts, const sigset_t *sigmask)
Definition vsf_linux_fs.c:1356
Definition select.h:42
fd_mask fds_bits[(FD_SETSIZE+NFDBITS - 1)/NFDBITS]
Definition select.h:43
Definition signal.h:131
Definition time.h:66
Definition time.h:42
Definition select.h:48
vsf_vplt_info_t info
Definition select.h:49
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