When this was merged in qemu-kvm/master (commit 6249f61a891b6b003531ca4e459c3a553faa82bc) it removed Avi's compile fix when !CONFIG_EVENTFD (db311e8619d310bd7729637b702581d3d8565049). So current master fails to build: CC osdep.o cc1: warnings being treated as errors osdep.c: In function 'qemu_eventfd': osdep.c:296: error: unused variable 'ret' make: *** [osdep.o] Error 1 On 22 févr. 2010, at 22:26, Marcelo Tosatti wrote: > From: Paolo Bonzini <pbonzini@xxxxxxxxxx> > > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Signed-off-by: Avi Kivity <avi@xxxxxxxxxx> > --- > osdep.c | 32 ++++++++++++++++++++++++++++++++ > qemu-common.h | 1 + > vl.c | 9 +++++---- > 3 files changed, 38 insertions(+), 4 deletions(-) > > diff --git a/osdep.c b/osdep.c > index 9059f01..9e4b17b 100644 > --- a/osdep.c > +++ b/osdep.c > @@ -37,6 +37,10 @@ > #include <sys/statvfs.h> > #endif > > +#ifdef CONFIG_EVENTFD > +#include <sys/eventfd.h> > +#endif > + > #ifdef _WIN32 > #include <windows.h> > #elif defined(CONFIG_BSD) > @@ -281,6 +285,34 @@ ssize_t qemu_write_full(int fd, const void *buf, size_t count) > > #ifndef _WIN32 > /* > + * Creates an eventfd that looks like a pipe and has EFD_CLOEXEC set. > + */ > +int qemu_eventfd(int fds[2]) > +{ > + int ret; > + > +#ifdef CONFIG_EVENTFD > + ret = eventfd(0, 0); > + if (ret >= 0) { > + fds[0] = ret; > + qemu_set_cloexec(ret); > + if ((fds[1] = dup(ret)) == -1) { > + close(ret); > + return -1; > + } > + qemu_set_cloexec(fds[1]); > + return 0; > + } > + > + if (errno != ENOSYS) { > + return -1; > + } > +#endif > + > + return qemu_pipe(fds); > +} > + > +/* > * Creates a pipe with FD_CLOEXEC set on both file descriptors > */ > int qemu_pipe(int pipefd[2]) > diff --git a/qemu-common.h b/qemu-common.h > index b09f717..c941006 100644 > --- a/qemu-common.h > +++ b/qemu-common.h > @@ -170,6 +170,7 @@ ssize_t qemu_write_full(int fd, const void *buf, size_t count) > void qemu_set_cloexec(int fd); > > #ifndef _WIN32 > +int qemu_eventfd(int pipefd[2]); > int qemu_pipe(int pipefd[2]); > #endif > > diff --git a/vl.c b/vl.c > index 98918ac..1957018 100644 > --- a/vl.c > +++ b/vl.c > @@ -3211,14 +3211,15 @@ static int io_thread_fd = -1; > > static void qemu_event_increment(void) > { > - static const char byte = 0; > + /* Write 8 bytes to be compatible with eventfd. */ > + static uint64_t val = 1; > ssize_t ret; > > if (io_thread_fd == -1) > return; > > do { > - ret = write(io_thread_fd, &byte, sizeof(byte)); > + ret = write(io_thread_fd, &val, sizeof(val)); > } while (ret < 0 && errno == EINTR); > > /* EAGAIN is fine, a read must be pending. */ > @@ -3235,7 +3236,7 @@ static void qemu_event_read(void *opaque) > ssize_t len; > char buffer[512]; > > - /* Drain the notify pipe */ > + /* Drain the notify pipe. For eventfd, only 8 bytes will be read. */ > do { > len = read(fd, buffer, sizeof(buffer)); > } while ((len == -1 && errno == EINTR) || len == sizeof(buffer)); > @@ -3246,7 +3247,7 @@ static int qemu_event_init(void) > int err; > int fds[2]; > > - err = qemu_pipe(fds); > + err = qemu_eventfd(fds); > if (err == -1) > return -errno; > > -- > 1.6.6 > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Pierre Riteau -- PhD student, Myriads team, IRISA, Rennes, France http://perso.univ-rennes1.fr/pierre.riteau/ -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html