X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Finclude_exp%2Facess%2Ffd_set.h;h=a0fbe4333f38029bb80e4a32b66ce6a7116c0e91;hb=b52f69bd4a5299bd990b9153dc80da5c898864c7;hp=07939010bc68da4a037a3ee373bd30b05fe6b45c;hpb=52fad670ab81459de0ff1bd0fa99a3396a6999e3;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/ld-acess.so_src/include_exp/acess/fd_set.h b/Usermode/Libraries/ld-acess.so_src/include_exp/acess/fd_set.h index 07939010..a0fbe433 100644 --- a/Usermode/Libraries/ld-acess.so_src/include_exp/acess/fd_set.h +++ b/Usermode/Libraries/ld-acess.so_src/include_exp/acess/fd_set.h @@ -21,9 +21,29 @@ typedef struct } fd_set; -extern void FD_ZERO(fd_set *fdsetp); -extern void FD_CLR(int fd, fd_set *fdsetp); -extern void FD_SET(int fd, fd_set *fdsetp); -extern int FD_ISSET(int fd, fd_set *fdsetp); +static inline void FD_ZERO(fd_set *fdsetp) +{ + int i = FD_SETSIZE/16; + while( i-- ) + fdsetp->flags[i] = 0; +} +static inline void FD_CLR(int fd, fd_set *fdsetp) +{ + if(fd < 0 || fd > FD_SETSIZE) return; + fd_set_ent_t mask = 1 << (fd % 16); + fdsetp->flags[fd/16] &= ~mask; +} +static inline void FD_SET(int fd, fd_set *fdsetp) +{ + if(fd < 0 || fd > FD_SETSIZE) return; + fd_set_ent_t mask = 1 << (fd % 16); + fdsetp->flags[fd/16] |= mask; +} +static inline int FD_ISSET(int fd, const fd_set *fdsetp) +{ + if(fd < 0 || fd > FD_SETSIZE) return 0; + fd_set_ent_t mask = 1 << (fd % 16); + return !!( fdsetp->flags[fd/16] & mask ); +} #endif