#include <sys/eventfd.h> #include <unistd.h> /* We duplicate the GLibc error semantics, which are poorly defined * if the read() or write() does not return the proper number of bytes. */ int eventfd_read(int fd, eventfd_t *counter) { int ret = read(fd, counter, sizeof(*counter)); if (ret == sizeof(*counter)) return 0; return -1; } int eventfd_write(int fd, eventfd_t counter) { int ret = write(fd, &counter, sizeof(counter)); if (ret == sizeof(counter)) return 0; return -1; }