#ifndef _YGGDRASIL_SYS_SELECT_H #define _YGGDRASIL_SYS_SELECT_H 1 #define __FD_INDEX(fd) ((fd) / sizeof(uint64_t)) #define __FD_BIT(fd) ((fd) % sizeof(uint64_t)) #define FD_CLR(fd, set) ((set)->bits[__FD_INDEX(fd)] &= ~(1 << __FD_BIT(fd))) #define FD_ISSET(fd, set) (((set)->bits[__FD_INDEX(fd)] & (1 << __FD_BIT(fd))) != 0) #define FD_SET(fd, set) ((set)->bits[__FD_INDEX(fd)] |= (1 << __FD_BIT(fd))) #define FD_ZERO(set) ((void) memset((set)->bits, 0, sizeof((set)->bits))) #endif