diff options
| author | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 20:10:31 +0100 |
|---|---|---|
| committer | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 20:10:31 +0100 |
| commit | fc00c656c96528112d05cf0edf8631bd5eaea446 (patch) | |
| tree | a6e0e6c588191a8bd1c64afc3b7a258e3e66c236 /include/bits/select.h | |
Add build system scaffolding and libc headers
Diffstat (limited to 'include/bits/select.h')
| -rw-r--r-- | include/bits/select.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/bits/select.h b/include/bits/select.h new file mode 100644 index 00000000..f1f952ab --- /dev/null +++ b/include/bits/select.h @@ -0,0 +1,41 @@ +#ifndef __BITS_SELECT_H +#define __BITS_SELECT_H + +#ifndef __BITS_SELECT_H_ +#error "Internal header — include the public API header instead." +#endif + +#define FD_SETSIZE 1024 + +#define FD_ZERO(set) \ + do { \ + for (size_t i = 0; \ + i < sizeof((set)->fds_bits) / sizeof(fd_mask); i++) \ + (set)->fds_bits[i] = 0; \ + } while (0) + +#define FD_SET(fd, set) \ + ((set)->fds_bits[(fd) / (8 * sizeof(fd_mask))] |= \ + (1UL << ((fd) % (8 * sizeof(fd_mask))))) + +#define FD_CLR(fd, set) \ + ((set)->fds_bits[(fd) / (8 * sizeof(fd_mask))] &= \ + ~(1UL << ((fd) % (8 * sizeof(fd_mask))))) + +#define FD_ISSET(fd, set) \ + (((set)->fds_bits[(fd) / (8 * sizeof(fd_mask))] & \ + (1UL << ((fd) % (8 * sizeof(fd_mask))))) != 0) + +typedef __INT64_TYPE__ time_t; +typedef __INT64_TYPE__ suseconds_t; + +typedef struct { + unsigned long fds_bits[1024 / (8 * sizeof(unsigned long))]; +} fd_set; + +struct timeval { + time_t tv_sec; + suseconds_t tv_usec; +}; + +#endif |
