[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH] lib/nolibc: Introduce fd_set operation macros



Hello Simon,

This patch seems fine.

Reviewed-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>

Thanks & Regards
Sharan

On 1/30/19 6:33 PM, Simon Kuenzer wrote:
Port FD_CLR, FD_ISSET, FD_SET, and FD_ZERO macros from FreeBSD.

Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
  lib/nolibc/include/sys/select.h | 15 +++++++++++++++
  1 file changed, 15 insertions(+)

diff --git a/lib/nolibc/include/sys/select.h b/lib/nolibc/include/sys/select.h
index f7949ee7..e981b7c0 100644
--- a/lib/nolibc/include/sys/select.h
+++ b/lib/nolibc/include/sys/select.h
@@ -28,6 +28,7 @@
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   */
+/* Derived from FreeBSD commit 4736ccf (Nov 20, 2017) */
#ifndef __SYS_SELECT_H__
  #define __SYS_SELECT_H__
@@ -60,6 +61,20 @@ typedef struct fd_set {
        __fd_mask __fds_bits[howmany(FD_SETSIZE, _NFDBITS)];
  } fd_set;
+#define __fdset_mask(n) ((__fd_mask)1 << ((n) % _NFDBITS))
+#define        FD_CLR(n, p)    ((p)->__fds_bits[(n)/_NFDBITS] &= 
~__fdset_mask(n))
+#define        FD_ISSET(n, p)  (((p)->__fds_bits[(n)/_NFDBITS] & 
__fdset_mask(n)) != 0)
+#define        FD_SET(n, p)    ((p)->__fds_bits[(n)/_NFDBITS] |= 
__fdset_mask(n))
+#define        FD_ZERO(p) do {                                 \
+       fd_set *_p;                                     \
+       __ssz _n;                                       \
+                                                       \
+       _p = (p);                                       \
+       _n = howmany(FD_SETSIZE, _NFDBITS);             \
+       while (_n > 0)                                       \
+               _p->__fds_bits[--_n] = 0;            \
+} while (0)
+
  #ifdef __cplusplus
  }
  #endif


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.