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=b2367d19c6747a2caef2725b259af1e9563db04e;hb=9382d3191512d5194a6d31f220a508f242449439;hp=07939010bc68da4a037a3ee373bd30b05fe6b45c;hpb=04a050f42807686dc119838c82372409246d55bb;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..b2367d19 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, 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