X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2Finclude%2Fsys%2Ftypes.h;h=ec3d43e378b5ecae75dd165773101a7f1bbcf5d6;hb=4405b4fa990821a88cbded9fdf85d226ef3b3f66;hp=a1ed85b73d537cf968d4f16e4c19dd54925fa58c;hpb=3764c294f21229bdf700f436fa4884f5e76e0d3a;p=tpg%2Facess2.git diff --git a/Usermode/include/sys/types.h b/Usermode/include/sys/types.h index a1ed85b7..ec3d43e3 100644 --- a/Usermode/include/sys/types.h +++ b/Usermode/include/sys/types.h @@ -70,9 +70,18 @@ typedef struct s_sysFInfo t_sysFInfo; typedef struct s_sysACL t_sysACL; 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) { fdsetp->flags[fd/16]&=~(1<<(fd%16)); } -static inline void FD_SET(int fd, fd_set *fdsetp) { fdsetp->flags[fd/16]|=1<<(fd%16); } -static inline int FD_ISSET(int fd, fd_set *fdsetp) { return fdsetp->flags[fd/16]&(1<<(fd%16)); } +static inline void FD_CLR(int fd, fd_set *fdsetp) { + if(fd < 0 || fd > FD_SETSIZE) return; + fdsetp->flags[fd/16] &= (uint16_t) ((~1 << (fd%16))) & 0xFFFF; +} +static inline void FD_SET(int fd, fd_set *fdsetp) { + if(fd < 0 || fd > FD_SETSIZE) return; + fdsetp->flags[fd/16] |= (uint16_t) (1 << (fd%16)); +} +static inline int FD_ISSET(int fd, fd_set *fdsetp) { + if(fd < 0 || fd > FD_SETSIZE) return 0; + return !!( fdsetp->flags[fd/16] & (1<<(fd%16)) ); +} typedef uint32_t pid_t; typedef uint32_t tid_t;