From 5605295d00ec1230b958c461f30736fc1603342d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 17 Jan 2019 01:41:13 +0100 Subject: [PATCH] Oops, forgot to add the select() files to LibC a while ago. --- LibC/sys/select.cpp | 11 +++++++++++ LibC/sys/select.h | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 LibC/sys/select.cpp create mode 100644 LibC/sys/select.h diff --git a/LibC/sys/select.cpp b/LibC/sys/select.cpp new file mode 100644 index 0000000000..1c0d7c6aa7 --- /dev/null +++ b/LibC/sys/select.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout) +{ + Syscall::SC_select_params params { nfds, readfds, writefds, exceptfds, timeout }; + int rc = syscall(SC_select, ¶ms); + __RETURN_WITH_ERRNO(rc, rc, -1); +} diff --git a/LibC/sys/select.h b/LibC/sys/select.h new file mode 100644 index 0000000000..d978f28b44 --- /dev/null +++ b/LibC/sys/select.h @@ -0,0 +1,22 @@ +#pragma once + +#include +#include +#include + +__BEGIN_DECLS + +#define FD_SETSIZE 64 +#define FD_ZERO(set) memset((set), 0, sizeof(fd_set)); +#define FD_CLR(fd, set) ((set)->bits[(fd / 8)] &= ~(1 << (fd) % 8)) +#define FD_SET(fd, set) ((set)->bits[(fd / 8)] |= (1 << (fd) % 8)) +#define FD_ISSET(fd, set) ((set)->bits[(fd / 8)] & (1 << (fd) % 8)) + +struct fd_set { + unsigned char bits[FD_SETSIZE / 8]; +}; + +int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout); + +__END_DECLS +