为什么 glibc 不同意 eventfd 联机帮助页?
Why does glibc disagree with the eventfd manpage?
man 2 eventfd
说:
SYNOPSIS
#include <sys/eventfd.h>
int eventfd(unsigned int initval, int flags);
但在 /usr/include/sys/eventfd.h
我看到:
extern int eventfd (int __count, int __flags) __THROW;
我点击它是因为我需要将 eventfd
作为函数指针传递,当它具有联机帮助页中描述的签名时我收到了警告。这个签名是不可移植的吗?我需要在我编写的代码中意识到这一点吗?
glibc 中的签名在 2014 年更改为 this commit 到 glibc 树:
diff --git a/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h b/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
index 2d198a8..a3c340e 100644 (file)
--- a/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
+++ b/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
@@ -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);
我想就可移植性而言,如果你有旧版本的 glibc
,你能做的最好的事情就是将指向 eventfd
的指针转换为 int (*f)(unsigned int, int)
。
man 2 eventfd
说:
SYNOPSIS
#include <sys/eventfd.h> int eventfd(unsigned int initval, int flags);
但在 /usr/include/sys/eventfd.h
我看到:
extern int eventfd (int __count, int __flags) __THROW;
我点击它是因为我需要将 eventfd
作为函数指针传递,当它具有联机帮助页中描述的签名时我收到了警告。这个签名是不可移植的吗?我需要在我编写的代码中意识到这一点吗?
glibc 中的签名在 2014 年更改为 this commit 到 glibc 树:
diff --git a/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h b/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
index 2d198a8..a3c340e 100644 (file)
--- a/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
+++ b/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
@@ -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);
我想就可移植性而言,如果你有旧版本的 glibc
,你能做的最好的事情就是将指向 eventfd
的指针转换为 int (*f)(unsigned int, int)
。