Fix prototype for eventfd
Commit Message
Both the man-page and the actual kernel source says that the first
argument to eventfd is unsigned int, not simply int.
Signed-off-by: Rasmus Villemoes <rv@rasmusvillemoes.dk>
---
ports/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h | 2 +-
sysdeps/unix/sysv/linux/eventfd.c | 2 +-
sysdeps/unix/sysv/linux/sys/eventfd.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
Comments
Rasmus Villemoes <rv@rasmusvillemoes.dk> writes:
> Both the man-page and the actual kernel source says that the first
> argument to eventfd is unsigned int, not simply int.
>
ping
On Thu, May 08, 2014 at 03:07:39PM +0200, Rasmus Villemoes wrote:
> Rasmus Villemoes <rv@rasmusvillemoes.dk> writes:
>
> > Both the man-page and the actual kernel source says that the first
> > argument to eventfd is unsigned int, not simply int.
> >
>
> ping
looks good, I am bit concerned with compatibility, Joseph could you also
comment it?
On Tue, 13 May 2014, Ondrej Bilka wrote:
> On Thu, May 08, 2014 at 03:07:39PM +0200, Rasmus Villemoes wrote:
> > Rasmus Villemoes <rv@rasmusvillemoes.dk> writes:
> >
> > > Both the man-page and the actual kernel source says that the first
> > > argument to eventfd is unsigned int, not simply int.
> > >
> >
> > ping
>
> looks good, I am bit concerned with compatibility, Joseph could you also
> comment it?
Compatibility would be an issue if:
* the C ABI on some architecture defines int to be sign-extended to 64
bits when passed as a function parameter, but unsigned int to be
zero-extended;
* the code generated for eventfd relied on this in some way; and
* a user binary passes a negative value for the int argument.
I don't expect that to be an issue (in that I don't expect any dependence
beyond the value passed to the function being passed on to the kernel
unchanged) but haven't looked at generated code.
On Wed 30 Apr 2014 12:30:32 Rasmus Villemoes wrote:
> Both the man-page and the actual kernel source says that the first
> argument to eventfd is unsigned int, not simply int.
i guess this is still waiting to be merged ?
-mike
Mike Frysinger <vapier@gentoo.org> writes:
> On Wed 30 Apr 2014 12:30:32 Rasmus Villemoes wrote:
>> Both the man-page and the actual kernel source says that the first
>> argument to eventfd is unsigned int, not simply int.
>
> i guess this is still waiting to be merged ?
It seems that way, yes.
Rasmus
On Sun 03 Aug 2014 14:19:08 Rasmus Villemoes wrote:
> Mike Frysinger <vapier@gentoo.org> writes:
> > On Wed 30 Apr 2014 12:30:32 Rasmus Villemoes wrote:
> >> Both the man-page and the actual kernel source says that the first
> >> argument to eventfd is unsigned int, not simply int.
> >
> > i guess this is still waiting to be merged ?
>
> It seems that way, yes.
let's check with Allan if we can merge before 2.20. otherwise it'll have to
wait for 2.21.
i think it's fine (and preferred) we merge for 2.20 since it's a user-visible
API fix. and it's low risk.
-mike
On Sun, Aug 03, 2014 at 09:41:51AM -0400, Mike Frysinger wrote:
> On Sun 03 Aug 2014 14:19:08 Rasmus Villemoes wrote:
> > Mike Frysinger <vapier@gentoo.org> writes:
> > > On Wed 30 Apr 2014 12:30:32 Rasmus Villemoes wrote:
> > >> Both the man-page and the actual kernel source says that the first
> > >> argument to eventfd is unsigned int, not simply int.
> > >
> > > i guess this is still waiting to be merged ?
> >
> > It seems that way, yes.
>
> let's check with Allan if we can merge before 2.20. otherwise it'll have to
> wait for 2.21.
>
> i think it's fine (and preferred) we merge for 2.20 since it's a user-visible
> API fix. and it's low risk.
> -mike
I pushed this synced with sysdeps files movement.
@@ -40,7 +40,7 @@ __BEGIN_DECLS
/* Return file descriptor for generic event channel. Set initial
value to COUNT. */
-extern int eventfd (int __count, int __flags) __THROW;
+extern int eventfd (unsigned int __count, int __flags) __THROW;
/* Read event counter and possibly wait for events. */
extern int eventfd_read (int __fd, eventfd_t *__value);
@@ -22,7 +22,7 @@
int
-eventfd (int count, int flags)
+eventfd (unsigned int count, int flags)
{
#ifdef __NR_eventfd2
int res = INLINE_SYSCALL (eventfd2, 2, count, flags);
@@ -31,7 +31,7 @@ __BEGIN_DECLS
/* Return file descriptor for generic event channel. Set initial
value to COUNT. */
-extern int eventfd (int __count, int __flags) __THROW;
+extern int eventfd (unsigned int __count, int __flags) __THROW;
/* Read event counter and possibly wait for events. */
extern int eventfd_read (int __fd, eventfd_t *__value);