为什么glibc不同意eventfd联机帮助页?

时间:2016-03-17 17:47:52

标签: c linux system-calls man

man 2 eventfd说:

  

概要

   #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作为函数指针传递,并且当它具有联机帮助页中描述的签名时我收到警告。这个签名不便携吗?我需要在编写的代码中注意这一点吗?

1 个答案:

答案 0 :(得分:1)

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的旧版本,你可以做的最好的事情是将你的指针指向eventfdint (*f)(unsigned int, int)