[uclibc-ng-devel] xtensa: add custom bits/poll.h

Message ID 20181212150740.19432-1-jcmvbkbc@gmail.com
State New
Headers show
Series
  • [uclibc-ng-devel] xtensa: add custom bits/poll.h
Related show

Commit Message

Max Filippov Dec. 12, 2018, 3:07 p.m.
Definitions of POLLWRNORM, POLLWRBAND and POLLREMOVE in xtensa linux
kernel are non-standard. Provide bits/poll.h with correct values for
these constants.

This fixes the following strace build errors:

  In file included from xlat/pollflags.h:4:0,
                   from poll.c:34:
  ./static_assert.h:40:24: error: static assertion failed: "POLLWRBAND != 0x0100"
   # define static_assert _Static_assert
                          ^
  xlat/pollflags.h:75:1: note: in expansion of macro ‘static_assert’
   static_assert((POLLWRBAND) == (0x0100), "POLLWRBAND != 0x0100");
   ^~~~~~~~~~~~~
  ./static_assert.h:40:24: error: static assertion failed: "POLLREMOVE != 0x0800"
   # define static_assert _Static_assert
                          ^
  xlat/pollflags.h:117:1: note: in expansion of macro ‘static_assert’
   static_assert((POLLREMOVE) == (0x0800), "POLLREMOVE != 0x0800");
   ^~~~~~~~~~~~~

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 libc/sysdeps/linux/xtensa/bits/poll.h | 49 +++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 libc/sysdeps/linux/xtensa/bits/poll.h

Comments

Waldemar Brodkorb Dec. 14, 2018, 12:53 p.m. | #1
Hi Max,

thanks, applied and pushed,
 best regards
  Waldemar

Max Filippov wrote,

> Definitions of POLLWRNORM, POLLWRBAND and POLLREMOVE in xtensa linux
> kernel are non-standard. Provide bits/poll.h with correct values for
> these constants.
> 
> This fixes the following strace build errors:
> 
>   In file included from xlat/pollflags.h:4:0,
>                    from poll.c:34:
>   ./static_assert.h:40:24: error: static assertion failed: "POLLWRBAND != 0x0100"
>    # define static_assert _Static_assert
>                           ^
>   xlat/pollflags.h:75:1: note: in expansion of macro ‘static_assert’
>    static_assert((POLLWRBAND) == (0x0100), "POLLWRBAND != 0x0100");
>    ^~~~~~~~~~~~~
>   ./static_assert.h:40:24: error: static assertion failed: "POLLREMOVE != 0x0800"
>    # define static_assert _Static_assert
>                           ^
>   xlat/pollflags.h:117:1: note: in expansion of macro ‘static_assert’
>    static_assert((POLLREMOVE) == (0x0800), "POLLREMOVE != 0x0800");
>    ^~~~~~~~~~~~~
> 
> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
> ---
>  libc/sysdeps/linux/xtensa/bits/poll.h | 49 +++++++++++++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100644 libc/sysdeps/linux/xtensa/bits/poll.h
> 
> diff --git a/libc/sysdeps/linux/xtensa/bits/poll.h b/libc/sysdeps/linux/xtensa/bits/poll.h
> new file mode 100644
> index 000000000000..4588cc326006
> --- /dev/null
> +++ b/libc/sysdeps/linux/xtensa/bits/poll.h
> @@ -0,0 +1,49 @@
> +/* Copyright (C) 1997, 2001, 2006 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#ifndef _SYS_POLL_H
> +# error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
> +#endif
> +
> +/* Event types that can be polled for.  These bits may be set in `events'
> +   to indicate the interesting event types; they will appear in `revents'
> +   to indicate the status of the file descriptor.  */
> +#define POLLIN		0x001		/* There is data to read.  */
> +#define POLLPRI		0x002		/* There is urgent data to read.  */
> +#define POLLOUT		0x004		/* Writing now will not block.  */
> +
> +#ifdef __USE_XOPEN
> +/* These values are defined in XPG4.2.  */
> +# define POLLRDNORM	0x040		/* Normal data may be read.  */
> +# define POLLRDBAND	0x080		/* Priority data may be read.  */
> +# define POLLWRNORM	POLLOUT		/* Writing now will not block.  */
> +# define POLLWRBAND	0x100		/* Priority data may be written.  */
> +#endif
> +
> +#ifdef __USE_GNU
> +/* These are extensions for Linux.  */
> +# define POLLMSG	0x400
> +# define POLLREMOVE	0x800
> +# define POLLRDHUP	0x2000
> +#endif
> +
> +/* Event types always implicitly polled for.  These bits need not be set in
> +   `events', but they will appear in `revents' to indicate the status of
> +   the file descriptor.  */
> +#define POLLERR		0x008		/* Error condition.  */
> +#define POLLHUP		0x010		/* Hung up.  */
> +#define POLLNVAL	0x020		/* Invalid polling request.  */
> -- 
> 2.11.0
> 
> _______________________________________________
> linux-xtensa mailing list
> linux-xtensa@linux-xtensa.org
> http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa

Patch

diff --git a/libc/sysdeps/linux/xtensa/bits/poll.h b/libc/sysdeps/linux/xtensa/bits/poll.h
new file mode 100644
index 000000000000..4588cc326006
--- /dev/null
+++ b/libc/sysdeps/linux/xtensa/bits/poll.h
@@ -0,0 +1,49 @@ 
+/* Copyright (C) 1997, 2001, 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_POLL_H
+# error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
+#endif
+
+/* Event types that can be polled for.  These bits may be set in `events'
+   to indicate the interesting event types; they will appear in `revents'
+   to indicate the status of the file descriptor.  */
+#define POLLIN		0x001		/* There is data to read.  */
+#define POLLPRI		0x002		/* There is urgent data to read.  */
+#define POLLOUT		0x004		/* Writing now will not block.  */
+
+#ifdef __USE_XOPEN
+/* These values are defined in XPG4.2.  */
+# define POLLRDNORM	0x040		/* Normal data may be read.  */
+# define POLLRDBAND	0x080		/* Priority data may be read.  */
+# define POLLWRNORM	POLLOUT		/* Writing now will not block.  */
+# define POLLWRBAND	0x100		/* Priority data may be written.  */
+#endif
+
+#ifdef __USE_GNU
+/* These are extensions for Linux.  */
+# define POLLMSG	0x400
+# define POLLREMOVE	0x800
+# define POLLRDHUP	0x2000
+#endif
+
+/* Event types always implicitly polled for.  These bits need not be set in
+   `events', but they will appear in `revents' to indicate the status of
+   the file descriptor.  */
+#define POLLERR		0x008		/* Error condition.  */
+#define POLLHUP		0x010		/* Hung up.  */
+#define POLLNVAL	0x020		/* Invalid polling request.  */