eventfd: Use write_hex_to_fd() (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 31 Jul 2017 20:23:25 +0000 (16:23 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 31 Jul 2017 20:23:25 +0000 (16:23 -0400)
It's faster, clearer, and avoids glibc, which currently is doing an mmap
for this call.

Rebuild glibc.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/eventfd.c

index 2e51514..38f3240 100644 (file)
@@ -11,6 +11,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <sys/plan9_helpers.h>
 
 /* Gets a new EFD instance, returning the FD on success. */
 int eventfd(int initval, int flags)
@@ -55,11 +56,5 @@ int eventfd_read(int efd, eventfd_t *value)
 /* Writes value, in host-endian format, into the efd.  Returns 0 on success. */
 int eventfd_write(int efd, eventfd_t value)
 {
-       int ret;
-       char num64[32];
-       ret = snprintf(num64, sizeof(num64), "0x%llx", value);
-       if (write(efd, num64, ret) == ret)
-               return 0;
-       else
-               return -1;
+       return write_hex_to_fd(efd, value);
 }