From: Bernhard Held <bernhard.held@mgpi.de>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jan Kiszka <jan.kiszka@web.de>, Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
kvm@vger.kernel.org, Alex Williamson <alex.williamson@redhat.com>
Subject: Re: [PATCH 04/13] qemu-kvm: Remove eventfd compat header
Date: Sun, 03 Jul 2011 20:31:11 +0200 [thread overview]
Message-ID: <4E10B56F.2030305@mgpi.de> (raw)
In-Reply-To: <20110703095743.GB14862@redhat.com>
Am 03.07.2011 11:57, schrieb Michael S. Tsirkin:
> On Sun, Jul 03, 2011 at 12:54:06PM +0300, Michael S. Tsirkin wrote:
>> On Sun, Jul 03, 2011 at 11:46:51AM +0200, Bernhard Held wrote:
>>> #ifndef _COMPAT_SYS_EVENTFD
>>> #define _COMPAT_SYS_EVENTFD
>>>
>>> #include<unistd.h>
>>> #include<syscall.h>
>>>
>>> /* Flags for signalfd. */
>>> enum
>>> {
>>> EFD_SEMAPHORE = 1,
>>> #define EFD_SEMAPHORE EFD_SEMAPHORE
>>> EFD_CLOEXEC = 02000000,
>>> #define EFD_CLOEXEC EFD_CLOEXEC
>>> EFD_NONBLOCK = 04000
>>> #define EFD_NONBLOCK EFD_NONBLOCK
>>> };
>>>
>>> #ifndef __NR_eventfd2
>>> #if defined(__x86_64__)
>>> #define __NR_eventfd2 290
>>> #elif defined(__i386__)
>>> #define __NR_eventfd2 328
>>> #else
>>> #error Cannot detect your architecture!
>>> #endif
>>> #endif
>>
>> Can't we use SYS_eventfd2 instead?
>
> Looks like we can't, but __NR_eventfd2
> does seem to exit?
SYS_eventfd2 is not defined on systems with old glibc. These numbers are
working for me, for 32 and 64 bit linux. What means "__NR_eventfd2 does
seem to exit"?
The eventfd() man page nicely documents the evolution:
http://www.kernel.org/doc/man-pages/online/pages/man2/eventfd.2.html
"eventfd() is available on Linux since kernel 2.6.22. Working support
is provided in glibc since version 2.8. The eventfd2() system call (see
NOTES) is available on Linux since kernel 2.6.27. Since version 2.9,
the glibc eventfd() wrapper will employ the eventfd2() system call, if
it is supported by the kernel."
"There are two underlying Linux system calls: eventfd() and the more
recent eventfd2(). The former system call does not implement a flags
argument. The latter system call implements the flags values described
above. The glibc wrapper function will use eventfd2() where it is
available."
This means that the current compat header is buggy; qemu-kvm sets the
flags argument, but the wrapper uses the old eventfd() system call.
Bernhard
>>> static inline int eventfd (int count, int flags)
>>> {
>>> return syscall(__NR_eventfd2, count, flags);
>>> }
>>>
>>> #endif
>>>
>>
next prev parent reply other threads:[~2011-07-03 18:55 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-27 18:19 [PATCH 00/13] qemu-kvm: device assignment cleanups and upstream diff reductions Jan Kiszka
2011-06-27 18:19 ` [PATCH 01/13] qemu-kvm: Reduce configure and Makefile.target diff to upstream Jan Kiszka
2011-06-27 18:19 ` [PATCH 02/13] qemu-kvm: Drop some no longer needed #ifdefs Jan Kiszka
2011-06-27 18:19 ` [PATCH 03/13] qemu-kvm: Drop -enable-nesting command line switch Jan Kiszka
2011-06-28 10:48 ` Roedel, Joerg
2011-06-28 10:52 ` Jan Kiszka
2011-06-28 11:45 ` Avi Kivity
2011-06-27 18:19 ` [PATCH 04/13] qemu-kvm: Remove eventfd compat header Jan Kiszka
2011-06-28 11:09 ` Michael S. Tsirkin
2011-06-28 11:11 ` Jan Kiszka
2011-06-28 12:07 ` Michael S. Tsirkin
2011-06-28 12:11 ` Jan Kiszka
2011-06-28 12:17 ` Michael S. Tsirkin
2011-06-28 12:40 ` Jan Kiszka
2011-07-03 9:46 ` Bernhard Held
2011-07-03 9:54 ` Michael S. Tsirkin
2011-07-03 9:57 ` Michael S. Tsirkin
2011-07-03 18:31 ` Bernhard Held [this message]
2011-07-04 10:37 ` Michael S. Tsirkin
2011-07-04 12:13 ` Bernhard Held
2011-07-04 13:34 ` Michael S. Tsirkin
2011-06-27 18:19 ` [PATCH 05/13] qemu-kvm: Remove qemu_ram_unmap Jan Kiszka
2011-06-27 18:19 ` [PATCH 06/13] qemu-kvm: Drop or replace useless device-assignment.h inclusions Jan Kiszka
2011-06-27 18:19 ` [PATCH 07/13] pci-assign: Fix kvm_deassign_irq handling in assign_irq Jan Kiszka
2011-06-27 18:19 ` [PATCH 08/13] pci-assign: Update legacy interrupts only if used Jan Kiszka
2011-06-27 18:19 ` [PATCH 09/13] pci-assign: Drop libpci header dependency Jan Kiszka
2011-06-28 8:54 ` Michael S. Tsirkin
2011-06-27 18:19 ` [PATCH 10/13] pci-assign: Refactor calc_assigned_dev_id Jan Kiszka
2011-06-27 18:19 ` [PATCH 11/13] pci-assign: Track MSI/MSI-X capability position, clean up related code Jan Kiszka
2011-06-27 18:19 ` [PATCH 12/13] pci-assign: Generic config space access management Jan Kiszka
2011-06-27 20:54 ` Michael S. Tsirkin
2011-06-27 22:48 ` Alex Williamson
2011-06-28 7:08 ` Jan Kiszka
2011-06-28 8:07 ` Avi Kivity
2011-06-28 8:19 ` Jan Kiszka
2011-06-28 8:21 ` Avi Kivity
2011-06-28 8:10 ` Michael S. Tsirkin
2011-06-28 8:18 ` Jan Kiszka
2011-06-28 8:30 ` Michael S. Tsirkin
2011-06-28 9:20 ` Jan Kiszka
2011-06-28 8:51 ` Michael S. Tsirkin
2011-06-28 9:10 ` Avi Kivity
2011-06-27 18:19 ` [PATCH 13/13] qemu-kvm: Resolve PCI upstream diffs Jan Kiszka
2011-06-28 8:58 ` Michael S. Tsirkin
2011-06-28 9:12 ` Jan Kiszka
2011-06-28 9:22 ` Michael S. Tsirkin
2011-06-28 8:10 ` [PATCH 00/13] qemu-kvm: device assignment cleanups and upstream diff reductions Avi Kivity
2011-06-28 8:57 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E10B56F.2030305@mgpi.de \
--to=bernhard.held@mgpi.de \
--cc=alex.williamson@redhat.com \
--cc=avi@redhat.com \
--cc=jan.kiszka@web.de \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox