public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2 0/1] Linux: Add epoll ioctls
@ 2024-05-28 17:37 Joe Damato
  2024-05-28 17:37 ` [PATCH v2 1/1] " Joe Damato
  0 siblings, 1 reply; 8+ messages in thread
From: Joe Damato @ 2024-05-28 17:37 UTC (permalink / raw)
  To: libc-alpha; +Cc: adhemerval.zanella, Joe Damato

Greetings:

Welcome to v2.

Linux kernel 6.9 added support for two ioctls to get and set struct
epoll_params [1], which user programs can use to enable and control busy
polling of network sockets. This is done in Linux kernel commit
18e2bf0edf4dd ("eventpoll: Add epoll ioctl for epoll_params") [2] by
adding the ioctls and struct to the Linux kernel's
include/uapi/linux/eventpoll.h.

I also noticed that build-many-glibcs.py has been updated to use Linux
6.9 [3].

As such, I've updated the epoll.h header and added tst-epoll-ioctls.c to
test the ioctls. As you'll see, I've attempted to detect if ioctl is
supported in tst-epoll-ioctls.c before actually doing the test.

This is my first glibc contribution; please excuse me if I've made any
obvious mistakes with my submission.

Once this change is accepted, I plan on submitting a change to the
manpages to document this interface.

Thanks,
Joe

[1]: https://lore.kernel.org/netdev/20240213061652.6342-4-jdamato@fastly.com/T/
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd
[3]: https://sourceware.org/pipermail/libc-alpha/2024-May/156684.html

v1 -> v2:
  - Updated cover letter to include links to the kernel commit and
    kernel commit SHA.
  - Fixed curly brace coding style issue in
    sysdeps/unix/sysv/linux/sys/epoll.h
  - Moved ioctl tests to their own test file which returns
    EXIT_UNSUPPORTED if the ioctl is not supported instead of using
    tst-epoll.

Joe Damato (1):
  Linux: Add epoll ioctls

 NEWS                                       |  3 +
 sysdeps/unix/sysv/linux/Makefile           |  1 +
 sysdeps/unix/sysv/linux/sys/epoll.h        | 14 ++++
 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c | 92 ++++++++++++++++++++++
 4 files changed, 110 insertions(+)
 create mode 100644 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c

-- 
2.25.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/1] Linux: Add epoll ioctls
  2024-05-28 17:37 [PATCH v2 0/1] Linux: Add epoll ioctls Joe Damato
@ 2024-05-28 17:37 ` Joe Damato
  2024-05-29 14:14   ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 8+ messages in thread
From: Joe Damato @ 2024-05-28 17:37 UTC (permalink / raw)
  To: libc-alpha; +Cc: adhemerval.zanella, Joe Damato

As of Linux kernel 6.9, some ioctls and a parameters structure have been
introduced which allow user programs to control whether a particular
epoll context will busy poll.

Update the headers to include these for the convenience of user apps.

The ioctls were added in Linux kernel 6.9 commit 18e2bf0edf4dd
("eventpoll: Add epoll ioctl for epoll_params") [1] to
include/uapi/linux/eventpoll.h.

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd

Signed-off-by: Joe Damato <jdamato@fastly.com>
---
 NEWS                                       |  3 +
 sysdeps/unix/sysv/linux/Makefile           |  1 +
 sysdeps/unix/sysv/linux/sys/epoll.h        | 14 ++++
 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c | 92 ++++++++++++++++++++++
 4 files changed, 110 insertions(+)
 create mode 100644 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c

diff --git a/NEWS b/NEWS
index 84efa46df3..20e263f581 100644
--- a/NEWS
+++ b/NEWS
@@ -33,6 +33,9 @@ Major new features:
   more extensive verification tests for AT_SECURE programs and not meant to
   be a security feature.
 
+* On Linux, update epoll header to include epoll ioctl definitions and
+  related structure added in Linux kernel 6.9.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
 * Architectures which use a 32-bit seconds-since-epoch field in struct
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 415aa1f14d..ae66590e91 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -200,6 +200,7 @@ tests += \
   tst-clone2 \
   tst-clone3 \
   tst-epoll \
+  tst-epoll-ioctls \
   tst-fanotify \
   tst-fdopendir-o_path \
   tst-getauxval \
diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
index fc8dce45c8..45e546fa44 100644
--- a/sysdeps/unix/sysv/linux/sys/epoll.h
+++ b/sysdeps/unix/sysv/linux/sys/epoll.h
@@ -19,6 +19,7 @@
 #define	_SYS_EPOLL_H	1
 
 #include <stdint.h>
+#include <sys/ioctl.h>
 #include <sys/types.h>
 
 #include <bits/types/sigset_t.h>
@@ -87,6 +88,19 @@ struct epoll_event
   epoll_data_t data;	/* User data variable */
 } __EPOLL_PACKED;
 
+struct epoll_params
+{
+  uint32_t busy_poll_usecs;
+  uint16_t busy_poll_budget;
+  uint8_t prefer_busy_poll;
+
+  /* pad the struct to a multiple of 64bits */
+  uint8_t __pad;
+};
+
+#define EPOLL_IOC_TYPE 0x8A
+#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
+#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
 
 __BEGIN_DECLS
 
diff --git a/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
new file mode 100644
index 0000000000..618ecc4e86
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
@@ -0,0 +1,92 @@
+/* Basic tests for Linux epoll ioctls.
+   Copyright (C) 2022-2024 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
+   <https://www.gnu.org/licenses/>.  */
+
+#include <intprops.h>
+#include <stdlib.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/process_state.h>
+#include <support/support.h>
+#include <support/test-driver.h>
+#include <support/xsignal.h>
+#include <support/xunistd.h>
+#include <sys/ioctl.h>
+#include <sys/epoll.h>
+
+static void
+test_epoll_ioctl (void)
+{
+  int efd = epoll_create1 (0);
+  TEST_VERIFY_EXIT (efd != -1);
+
+  struct epoll_params params;
+
+  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
+
+  /* parameters are all 0 by default */
+  TEST_COMPARE (params.busy_poll_usecs, 0);
+  TEST_COMPARE (params.busy_poll_budget, 0);
+  TEST_COMPARE (params.prefer_busy_poll, 0);
+  TEST_COMPARE (params.__pad, 0);
+
+  /* set custom parameters */
+  params.busy_poll_usecs = 40;
+  params.busy_poll_budget = 8;
+  params.prefer_busy_poll = 1;
+  params.__pad = 0;
+
+  TEST_COMPARE (ioctl (efd, EPIOCSPARAMS, &params), 0);
+
+  memset (&params, 0, sizeof (params));
+
+  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
+
+  /* check custom values were retrieved after being set */
+  TEST_COMPARE (params.busy_poll_usecs, 40);
+  TEST_COMPARE (params.busy_poll_budget, 8);
+  TEST_COMPARE (params.prefer_busy_poll, 1);
+  TEST_COMPARE (params.__pad, 0);
+
+  xclose (efd);
+}
+
+static bool
+ioctl_supported (void)
+{
+  int efd = epoll_create1 (0);
+  TEST_VERIFY_EXIT (efd != -1);
+
+  struct epoll_params params;
+  int r = ioctl (efd, EPIOCGPARAMS, &params);
+  xclose (efd);
+
+  return (r == 0);
+}
+
+static int
+do_test (void)
+{
+  if (ioctl_supported ())
+    test_epoll_ioctl ();
+  else
+    return EXIT_UNSUPPORTED;
+
+  return 0;
+}
+
+#include <support/test-driver.c>
-- 
2.25.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Linux: Add epoll ioctls
  2024-05-28 17:37 ` [PATCH v2 1/1] " Joe Damato
@ 2024-05-29 14:14   ` Adhemerval Zanella Netto
  2024-05-31 18:59     ` Joe Damato
  0 siblings, 1 reply; 8+ messages in thread
From: Adhemerval Zanella Netto @ 2024-05-29 14:14 UTC (permalink / raw)
  To: Joe Damato, libc-alpha



On 28/05/24 14:37, Joe Damato wrote:
> As of Linux kernel 6.9, some ioctls and a parameters structure have been
> introduced which allow user programs to control whether a particular
> epoll context will busy poll.
> 
> Update the headers to include these for the convenience of user apps.
> 
> The ioctls were added in Linux kernel 6.9 commit 18e2bf0edf4dd
> ("eventpoll: Add epoll ioctl for epoll_params") [1] to
> include/uapi/linux/eventpoll.h.
> 
> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd
> 
> Signed-off-by: Joe Damato <jdamato@fastly.com>

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  NEWS                                       |  3 +
>  sysdeps/unix/sysv/linux/Makefile           |  1 +
>  sysdeps/unix/sysv/linux/sys/epoll.h        | 14 ++++
>  sysdeps/unix/sysv/linux/tst-epoll-ioctls.c | 92 ++++++++++++++++++++++
>  4 files changed, 110 insertions(+)
>  create mode 100644 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> 
> diff --git a/NEWS b/NEWS
> index 84efa46df3..20e263f581 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -33,6 +33,9 @@ Major new features:
>    more extensive verification tests for AT_SECURE programs and not meant to
>    be a security feature.
>  
> +* On Linux, update epoll header to include epoll ioctl definitions and
> +  related structure added in Linux kernel 6.9.
> +
>  Deprecated and removed features, and other changes affecting compatibility:
>  
>  * Architectures which use a 32-bit seconds-since-epoch field in struct
> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> index 415aa1f14d..ae66590e91 100644
> --- a/sysdeps/unix/sysv/linux/Makefile
> +++ b/sysdeps/unix/sysv/linux/Makefile
> @@ -200,6 +200,7 @@ tests += \
>    tst-clone2 \
>    tst-clone3 \
>    tst-epoll \
> +  tst-epoll-ioctls \
>    tst-fanotify \
>    tst-fdopendir-o_path \
>    tst-getauxval \
> diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
> index fc8dce45c8..45e546fa44 100644
> --- a/sysdeps/unix/sysv/linux/sys/epoll.h
> +++ b/sysdeps/unix/sysv/linux/sys/epoll.h
> @@ -19,6 +19,7 @@
>  #define	_SYS_EPOLL_H	1
>  
>  #include <stdint.h>
> +#include <sys/ioctl.h>
>  #include <sys/types.h>
>  
>  #include <bits/types/sigset_t.h>
> @@ -87,6 +88,19 @@ struct epoll_event
>    epoll_data_t data;	/* User data variable */
>  } __EPOLL_PACKED;
>  
> +struct epoll_params
> +{
> +  uint32_t busy_poll_usecs;
> +  uint16_t busy_poll_budget;
> +  uint8_t prefer_busy_poll;
> +
> +  /* pad the struct to a multiple of 64bits */
> +  uint8_t __pad;
> +};
> +
> +#define EPOLL_IOC_TYPE 0x8A
> +#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
> +#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
>  
>  __BEGIN_DECLS
>  
> diff --git a/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> new file mode 100644
> index 0000000000..618ecc4e86
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> @@ -0,0 +1,92 @@
> +/* Basic tests for Linux epoll ioctls.
> +   Copyright (C) 2022-2024 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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <intprops.h>
> +#include <stdlib.h>
> +#include <string.h>
> +#include <support/check.h>
> +#include <support/process_state.h>
> +#include <support/support.h>
> +#include <support/test-driver.h>
> +#include <support/xsignal.h>
> +#include <support/xunistd.h>
> +#include <sys/ioctl.h>
> +#include <sys/epoll.h>
> +
> +static void
> +test_epoll_ioctl (void)
> +{
> +  int efd = epoll_create1 (0);
> +  TEST_VERIFY_EXIT (efd != -1);
> +
> +  struct epoll_params params;
> +
> +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> +
> +  /* parameters are all 0 by default */
> +  TEST_COMPARE (params.busy_poll_usecs, 0);
> +  TEST_COMPARE (params.busy_poll_budget, 0);
> +  TEST_COMPARE (params.prefer_busy_poll, 0);
> +  TEST_COMPARE (params.__pad, 0);
> +
> +  /* set custom parameters */
> +  params.busy_poll_usecs = 40;
> +  params.busy_poll_budget = 8;
> +  params.prefer_busy_poll = 1;
> +  params.__pad = 0;
> +
> +  TEST_COMPARE (ioctl (efd, EPIOCSPARAMS, &params), 0);
> +
> +  memset (&params, 0, sizeof (params));
> +
> +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> +
> +  /* check custom values were retrieved after being set */
> +  TEST_COMPARE (params.busy_poll_usecs, 40);
> +  TEST_COMPARE (params.busy_poll_budget, 8);
> +  TEST_COMPARE (params.prefer_busy_poll, 1);
> +  TEST_COMPARE (params.__pad, 0);
> +
> +  xclose (efd);
> +}
> +
> +static bool
> +ioctl_supported (void)
> +{
> +  int efd = epoll_create1 (0);
> +  TEST_VERIFY_EXIT (efd != -1);
> +
> +  struct epoll_params params;
> +  int r = ioctl (efd, EPIOCGPARAMS, &params);
> +  xclose (efd);
> +
> +  return (r == 0);
> +}
> +
> +static int
> +do_test (void)
> +{
> +  if (ioctl_supported ())
> +    test_epoll_ioctl ();
> +  else
> +    return EXIT_UNSUPPORTED;
> +
> +  return 0;
> +}
> +
> +#include <support/test-driver.c>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Linux: Add epoll ioctls
  2024-05-29 14:14   ` Adhemerval Zanella Netto
@ 2024-05-31 18:59     ` Joe Damato
  2024-06-04 15:36       ` Joe Damato
  0 siblings, 1 reply; 8+ messages in thread
From: Joe Damato @ 2024-05-31 18:59 UTC (permalink / raw)
  To: Adhemerval Zanella Netto; +Cc: libc-alpha

On Wed, May 29, 2024 at 11:14:32AM -0300, Adhemerval Zanella Netto wrote:
> 
> 
> On 28/05/24 14:37, Joe Damato wrote:
> > As of Linux kernel 6.9, some ioctls and a parameters structure have been
> > introduced which allow user programs to control whether a particular
> > epoll context will busy poll.
> > 
> > Update the headers to include these for the convenience of user apps.
> > 
> > The ioctls were added in Linux kernel 6.9 commit 18e2bf0edf4dd
> > ("eventpoll: Add epoll ioctl for epoll_params") [1] to
> > include/uapi/linux/eventpoll.h.
> > 
> > [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd
> > 
> > Signed-off-by: Joe Damato <jdamato@fastly.com>
> 
> LGTM, thanks.
> 
> Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

Thanks for the review!

Do I need to do anything to get this pushed? Not sure what the libc
process is, but AFAIK I don't have (nor do I want) write access to
the repo to push.

> > ---
> >  NEWS                                       |  3 +
> >  sysdeps/unix/sysv/linux/Makefile           |  1 +
> >  sysdeps/unix/sysv/linux/sys/epoll.h        | 14 ++++
> >  sysdeps/unix/sysv/linux/tst-epoll-ioctls.c | 92 ++++++++++++++++++++++
> >  4 files changed, 110 insertions(+)
> >  create mode 100644 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > 
> > diff --git a/NEWS b/NEWS
> > index 84efa46df3..20e263f581 100644
> > --- a/NEWS
> > +++ b/NEWS
> > @@ -33,6 +33,9 @@ Major new features:
> >    more extensive verification tests for AT_SECURE programs and not meant to
> >    be a security feature.
> >  
> > +* On Linux, update epoll header to include epoll ioctl definitions and
> > +  related structure added in Linux kernel 6.9.
> > +
> >  Deprecated and removed features, and other changes affecting compatibility:
> >  
> >  * Architectures which use a 32-bit seconds-since-epoch field in struct
> > diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> > index 415aa1f14d..ae66590e91 100644
> > --- a/sysdeps/unix/sysv/linux/Makefile
> > +++ b/sysdeps/unix/sysv/linux/Makefile
> > @@ -200,6 +200,7 @@ tests += \
> >    tst-clone2 \
> >    tst-clone3 \
> >    tst-epoll \
> > +  tst-epoll-ioctls \
> >    tst-fanotify \
> >    tst-fdopendir-o_path \
> >    tst-getauxval \
> > diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
> > index fc8dce45c8..45e546fa44 100644
> > --- a/sysdeps/unix/sysv/linux/sys/epoll.h
> > +++ b/sysdeps/unix/sysv/linux/sys/epoll.h
> > @@ -19,6 +19,7 @@
> >  #define	_SYS_EPOLL_H	1
> >  
> >  #include <stdint.h>
> > +#include <sys/ioctl.h>
> >  #include <sys/types.h>
> >  
> >  #include <bits/types/sigset_t.h>
> > @@ -87,6 +88,19 @@ struct epoll_event
> >    epoll_data_t data;	/* User data variable */
> >  } __EPOLL_PACKED;
> >  
> > +struct epoll_params
> > +{
> > +  uint32_t busy_poll_usecs;
> > +  uint16_t busy_poll_budget;
> > +  uint8_t prefer_busy_poll;
> > +
> > +  /* pad the struct to a multiple of 64bits */
> > +  uint8_t __pad;
> > +};
> > +
> > +#define EPOLL_IOC_TYPE 0x8A
> > +#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
> > +#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
> >  
> >  __BEGIN_DECLS
> >  
> > diff --git a/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > new file mode 100644
> > index 0000000000..618ecc4e86
> > --- /dev/null
> > +++ b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > @@ -0,0 +1,92 @@
> > +/* Basic tests for Linux epoll ioctls.
> > +   Copyright (C) 2022-2024 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
> > +   <https://www.gnu.org/licenses/>.  */
> > +
> > +#include <intprops.h>
> > +#include <stdlib.h>
> > +#include <string.h>
> > +#include <support/check.h>
> > +#include <support/process_state.h>
> > +#include <support/support.h>
> > +#include <support/test-driver.h>
> > +#include <support/xsignal.h>
> > +#include <support/xunistd.h>
> > +#include <sys/ioctl.h>
> > +#include <sys/epoll.h>
> > +
> > +static void
> > +test_epoll_ioctl (void)
> > +{
> > +  int efd = epoll_create1 (0);
> > +  TEST_VERIFY_EXIT (efd != -1);
> > +
> > +  struct epoll_params params;
> > +
> > +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> > +
> > +  /* parameters are all 0 by default */
> > +  TEST_COMPARE (params.busy_poll_usecs, 0);
> > +  TEST_COMPARE (params.busy_poll_budget, 0);
> > +  TEST_COMPARE (params.prefer_busy_poll, 0);
> > +  TEST_COMPARE (params.__pad, 0);
> > +
> > +  /* set custom parameters */
> > +  params.busy_poll_usecs = 40;
> > +  params.busy_poll_budget = 8;
> > +  params.prefer_busy_poll = 1;
> > +  params.__pad = 0;
> > +
> > +  TEST_COMPARE (ioctl (efd, EPIOCSPARAMS, &params), 0);
> > +
> > +  memset (&params, 0, sizeof (params));
> > +
> > +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> > +
> > +  /* check custom values were retrieved after being set */
> > +  TEST_COMPARE (params.busy_poll_usecs, 40);
> > +  TEST_COMPARE (params.busy_poll_budget, 8);
> > +  TEST_COMPARE (params.prefer_busy_poll, 1);
> > +  TEST_COMPARE (params.__pad, 0);
> > +
> > +  xclose (efd);
> > +}
> > +
> > +static bool
> > +ioctl_supported (void)
> > +{
> > +  int efd = epoll_create1 (0);
> > +  TEST_VERIFY_EXIT (efd != -1);
> > +
> > +  struct epoll_params params;
> > +  int r = ioctl (efd, EPIOCGPARAMS, &params);
> > +  xclose (efd);
> > +
> > +  return (r == 0);
> > +}
> > +
> > +static int
> > +do_test (void)
> > +{
> > +  if (ioctl_supported ())
> > +    test_epoll_ioctl ();
> > +  else
> > +    return EXIT_UNSUPPORTED;
> > +
> > +  return 0;
> > +}
> > +
> > +#include <support/test-driver.c>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Linux: Add epoll ioctls
  2024-05-31 18:59     ` Joe Damato
@ 2024-06-04 15:36       ` Joe Damato
  2024-06-04 15:50         ` Noah Goldstein
  0 siblings, 1 reply; 8+ messages in thread
From: Joe Damato @ 2024-06-04 15:36 UTC (permalink / raw)
  To: Adhemerval Zanella Netto; +Cc: libc-alpha, goldstein.w.n

On Fri, May 31, 2024 at 11:59:19AM -0700, Joe Damato wrote:
> On Wed, May 29, 2024 at 11:14:32AM -0300, Adhemerval Zanella Netto wrote:
> > 
> > 
> > On 28/05/24 14:37, Joe Damato wrote:
> > > As of Linux kernel 6.9, some ioctls and a parameters structure have been
> > > introduced which allow user programs to control whether a particular
> > > epoll context will busy poll.
> > > 
> > > Update the headers to include these for the convenience of user apps.
> > > 
> > > The ioctls were added in Linux kernel 6.9 commit 18e2bf0edf4dd
> > > ("eventpoll: Add epoll ioctl for epoll_params") [1] to
> > > include/uapi/linux/eventpoll.h.
> > > 
> > > [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd
> > > 
> > > Signed-off-by: Joe Damato <jdamato@fastly.com>
> > 
> > LGTM, thanks.
> > 
> > Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
> 
> Thanks for the review!
> 
> Do I need to do anything to get this pushed? Not sure what the libc
> process is, but AFAIK I don't have (nor do I want) write access to
> the repo to push.

I noticed in patchwork that this is set to "Committed" but it does
appear in the shortlong for glibc.

Maybe I am looking in the wrong place?

Patchwork: https://patchwork.sourceware.org/project/glibc/patch/20240528173706.511391-2-jdamato@fastly.com/
shortlog: https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/master

If some one could let me know what, if anything, I need to do to get
this pushed that would super helpful.

Thanks,
Joe
 
> > > ---
> > >  NEWS                                       |  3 +
> > >  sysdeps/unix/sysv/linux/Makefile           |  1 +
> > >  sysdeps/unix/sysv/linux/sys/epoll.h        | 14 ++++
> > >  sysdeps/unix/sysv/linux/tst-epoll-ioctls.c | 92 ++++++++++++++++++++++
> > >  4 files changed, 110 insertions(+)
> > >  create mode 100644 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > > 
> > > diff --git a/NEWS b/NEWS
> > > index 84efa46df3..20e263f581 100644
> > > --- a/NEWS
> > > +++ b/NEWS
> > > @@ -33,6 +33,9 @@ Major new features:
> > >    more extensive verification tests for AT_SECURE programs and not meant to
> > >    be a security feature.
> > >  
> > > +* On Linux, update epoll header to include epoll ioctl definitions and
> > > +  related structure added in Linux kernel 6.9.
> > > +
> > >  Deprecated and removed features, and other changes affecting compatibility:
> > >  
> > >  * Architectures which use a 32-bit seconds-since-epoch field in struct
> > > diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> > > index 415aa1f14d..ae66590e91 100644
> > > --- a/sysdeps/unix/sysv/linux/Makefile
> > > +++ b/sysdeps/unix/sysv/linux/Makefile
> > > @@ -200,6 +200,7 @@ tests += \
> > >    tst-clone2 \
> > >    tst-clone3 \
> > >    tst-epoll \
> > > +  tst-epoll-ioctls \
> > >    tst-fanotify \
> > >    tst-fdopendir-o_path \
> > >    tst-getauxval \
> > > diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
> > > index fc8dce45c8..45e546fa44 100644
> > > --- a/sysdeps/unix/sysv/linux/sys/epoll.h
> > > +++ b/sysdeps/unix/sysv/linux/sys/epoll.h
> > > @@ -19,6 +19,7 @@
> > >  #define	_SYS_EPOLL_H	1
> > >  
> > >  #include <stdint.h>
> > > +#include <sys/ioctl.h>
> > >  #include <sys/types.h>
> > >  
> > >  #include <bits/types/sigset_t.h>
> > > @@ -87,6 +88,19 @@ struct epoll_event
> > >    epoll_data_t data;	/* User data variable */
> > >  } __EPOLL_PACKED;
> > >  
> > > +struct epoll_params
> > > +{
> > > +  uint32_t busy_poll_usecs;
> > > +  uint16_t busy_poll_budget;
> > > +  uint8_t prefer_busy_poll;
> > > +
> > > +  /* pad the struct to a multiple of 64bits */
> > > +  uint8_t __pad;
> > > +};
> > > +
> > > +#define EPOLL_IOC_TYPE 0x8A
> > > +#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
> > > +#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
> > >  
> > >  __BEGIN_DECLS
> > >  
> > > diff --git a/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > > new file mode 100644
> > > index 0000000000..618ecc4e86
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > > @@ -0,0 +1,92 @@
> > > +/* Basic tests for Linux epoll ioctls.
> > > +   Copyright (C) 2022-2024 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
> > > +   <https://www.gnu.org/licenses/>.  */
> > > +
> > > +#include <intprops.h>
> > > +#include <stdlib.h>
> > > +#include <string.h>
> > > +#include <support/check.h>
> > > +#include <support/process_state.h>
> > > +#include <support/support.h>
> > > +#include <support/test-driver.h>
> > > +#include <support/xsignal.h>
> > > +#include <support/xunistd.h>
> > > +#include <sys/ioctl.h>
> > > +#include <sys/epoll.h>
> > > +
> > > +static void
> > > +test_epoll_ioctl (void)
> > > +{
> > > +  int efd = epoll_create1 (0);
> > > +  TEST_VERIFY_EXIT (efd != -1);
> > > +
> > > +  struct epoll_params params;
> > > +
> > > +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> > > +
> > > +  /* parameters are all 0 by default */
> > > +  TEST_COMPARE (params.busy_poll_usecs, 0);
> > > +  TEST_COMPARE (params.busy_poll_budget, 0);
> > > +  TEST_COMPARE (params.prefer_busy_poll, 0);
> > > +  TEST_COMPARE (params.__pad, 0);
> > > +
> > > +  /* set custom parameters */
> > > +  params.busy_poll_usecs = 40;
> > > +  params.busy_poll_budget = 8;
> > > +  params.prefer_busy_poll = 1;
> > > +  params.__pad = 0;
> > > +
> > > +  TEST_COMPARE (ioctl (efd, EPIOCSPARAMS, &params), 0);
> > > +
> > > +  memset (&params, 0, sizeof (params));
> > > +
> > > +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> > > +
> > > +  /* check custom values were retrieved after being set */
> > > +  TEST_COMPARE (params.busy_poll_usecs, 40);
> > > +  TEST_COMPARE (params.busy_poll_budget, 8);
> > > +  TEST_COMPARE (params.prefer_busy_poll, 1);
> > > +  TEST_COMPARE (params.__pad, 0);
> > > +
> > > +  xclose (efd);
> > > +}
> > > +
> > > +static bool
> > > +ioctl_supported (void)
> > > +{
> > > +  int efd = epoll_create1 (0);
> > > +  TEST_VERIFY_EXIT (efd != -1);
> > > +
> > > +  struct epoll_params params;
> > > +  int r = ioctl (efd, EPIOCGPARAMS, &params);
> > > +  xclose (efd);
> > > +
> > > +  return (r == 0);
> > > +}
> > > +
> > > +static int
> > > +do_test (void)
> > > +{
> > > +  if (ioctl_supported ())
> > > +    test_epoll_ioctl ();
> > > +  else
> > > +    return EXIT_UNSUPPORTED;
> > > +
> > > +  return 0;
> > > +}
> > > +
> > > +#include <support/test-driver.c>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Linux: Add epoll ioctls
  2024-06-04 15:36       ` Joe Damato
@ 2024-06-04 15:50         ` Noah Goldstein
  2024-06-04 15:51           ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 8+ messages in thread
From: Noah Goldstein @ 2024-06-04 15:50 UTC (permalink / raw)
  To: Joe Damato; +Cc: Adhemerval Zanella Netto, libc-alpha

On Tue, Jun 4, 2024 at 10:36 AM Joe Damato <jdamato@fastly.com> wrote:
>
> On Fri, May 31, 2024 at 11:59:19AM -0700, Joe Damato wrote:
> > On Wed, May 29, 2024 at 11:14:32AM -0300, Adhemerval Zanella Netto wrote:
> > >
> > >
> > > On 28/05/24 14:37, Joe Damato wrote:
> > > > As of Linux kernel 6.9, some ioctls and a parameters structure have been
> > > > introduced which allow user programs to control whether a particular
> > > > epoll context will busy poll.
> > > >
> > > > Update the headers to include these for the convenience of user apps.
> > > >
> > > > The ioctls were added in Linux kernel 6.9 commit 18e2bf0edf4dd
> > > > ("eventpoll: Add epoll ioctl for epoll_params") [1] to
> > > > include/uapi/linux/eventpoll.h.
> > > >
> > > > [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd
> > > >
> > > > Signed-off-by: Joe Damato <jdamato@fastly.com>
> > >
> > > LGTM, thanks.
> > >
> > > Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
> >
> > Thanks for the review!
> >
> > Do I need to do anything to get this pushed? Not sure what the libc
> > process is, but AFAIK I don't have (nor do I want) write access to
> > the repo to push.
>
> I noticed in patchwork that this is set to "Committed" but it does
> appear in the shortlong for glibc.
>
> Maybe I am looking in the wrong place?
>
> Patchwork: https://patchwork.sourceware.org/project/glibc/patch/20240528173706.511391-2-jdamato@fastly.com/
> shortlog: https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/master
>
> If some one could let me know what, if anything, I need to do to get
> this pushed that would super helpful.
>
> Thanks,
> Joe
>

Doesn't appear to have been pushed.

I'll push this now.
> > > > ---
> > > >  NEWS                                       |  3 +
> > > >  sysdeps/unix/sysv/linux/Makefile           |  1 +
> > > >  sysdeps/unix/sysv/linux/sys/epoll.h        | 14 ++++
> > > >  sysdeps/unix/sysv/linux/tst-epoll-ioctls.c | 92 ++++++++++++++++++++++
> > > >  4 files changed, 110 insertions(+)
> > > >  create mode 100644 sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > > >
> > > > diff --git a/NEWS b/NEWS
> > > > index 84efa46df3..20e263f581 100644
> > > > --- a/NEWS
> > > > +++ b/NEWS
> > > > @@ -33,6 +33,9 @@ Major new features:
> > > >    more extensive verification tests for AT_SECURE programs and not meant to
> > > >    be a security feature.
> > > >
> > > > +* On Linux, update epoll header to include epoll ioctl definitions and
> > > > +  related structure added in Linux kernel 6.9.
> > > > +
> > > >  Deprecated and removed features, and other changes affecting compatibility:
> > > >
> > > >  * Architectures which use a 32-bit seconds-since-epoch field in struct
> > > > diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> > > > index 415aa1f14d..ae66590e91 100644
> > > > --- a/sysdeps/unix/sysv/linux/Makefile
> > > > +++ b/sysdeps/unix/sysv/linux/Makefile
> > > > @@ -200,6 +200,7 @@ tests += \
> > > >    tst-clone2 \
> > > >    tst-clone3 \
> > > >    tst-epoll \
> > > > +  tst-epoll-ioctls \
> > > >    tst-fanotify \
> > > >    tst-fdopendir-o_path \
> > > >    tst-getauxval \
> > > > diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
> > > > index fc8dce45c8..45e546fa44 100644
> > > > --- a/sysdeps/unix/sysv/linux/sys/epoll.h
> > > > +++ b/sysdeps/unix/sysv/linux/sys/epoll.h
> > > > @@ -19,6 +19,7 @@
> > > >  #define  _SYS_EPOLL_H    1
> > > >
> > > >  #include <stdint.h>
> > > > +#include <sys/ioctl.h>
> > > >  #include <sys/types.h>
> > > >
> > > >  #include <bits/types/sigset_t.h>
> > > > @@ -87,6 +88,19 @@ struct epoll_event
> > > >    epoll_data_t data;     /* User data variable */
> > > >  } __EPOLL_PACKED;
> > > >
> > > > +struct epoll_params
> > > > +{
> > > > +  uint32_t busy_poll_usecs;
> > > > +  uint16_t busy_poll_budget;
> > > > +  uint8_t prefer_busy_poll;
> > > > +
> > > > +  /* pad the struct to a multiple of 64bits */
> > > > +  uint8_t __pad;
> > > > +};
> > > > +
> > > > +#define EPOLL_IOC_TYPE 0x8A
> > > > +#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
> > > > +#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
> > > >
> > > >  __BEGIN_DECLS
> > > >
> > > > diff --git a/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > > > new file mode 100644
> > > > index 0000000000..618ecc4e86
> > > > --- /dev/null
> > > > +++ b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c
> > > > @@ -0,0 +1,92 @@
> > > > +/* Basic tests for Linux epoll ioctls.
> > > > +   Copyright (C) 2022-2024 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
> > > > +   <https://www.gnu.org/licenses/>.  */
> > > > +
> > > > +#include <intprops.h>
> > > > +#include <stdlib.h>
> > > > +#include <string.h>
> > > > +#include <support/check.h>
> > > > +#include <support/process_state.h>
> > > > +#include <support/support.h>
> > > > +#include <support/test-driver.h>
> > > > +#include <support/xsignal.h>
> > > > +#include <support/xunistd.h>
> > > > +#include <sys/ioctl.h>
> > > > +#include <sys/epoll.h>
> > > > +
> > > > +static void
> > > > +test_epoll_ioctl (void)
> > > > +{
> > > > +  int efd = epoll_create1 (0);
> > > > +  TEST_VERIFY_EXIT (efd != -1);
> > > > +
> > > > +  struct epoll_params params;
> > > > +
> > > > +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> > > > +
> > > > +  /* parameters are all 0 by default */
> > > > +  TEST_COMPARE (params.busy_poll_usecs, 0);
> > > > +  TEST_COMPARE (params.busy_poll_budget, 0);
> > > > +  TEST_COMPARE (params.prefer_busy_poll, 0);
> > > > +  TEST_COMPARE (params.__pad, 0);
> > > > +
> > > > +  /* set custom parameters */
> > > > +  params.busy_poll_usecs = 40;
> > > > +  params.busy_poll_budget = 8;
> > > > +  params.prefer_busy_poll = 1;
> > > > +  params.__pad = 0;
> > > > +
> > > > +  TEST_COMPARE (ioctl (efd, EPIOCSPARAMS, &params), 0);
> > > > +
> > > > +  memset (&params, 0, sizeof (params));
> > > > +
> > > > +  TEST_COMPARE (ioctl (efd, EPIOCGPARAMS, &params), 0);
> > > > +
> > > > +  /* check custom values were retrieved after being set */
> > > > +  TEST_COMPARE (params.busy_poll_usecs, 40);
> > > > +  TEST_COMPARE (params.busy_poll_budget, 8);
> > > > +  TEST_COMPARE (params.prefer_busy_poll, 1);
> > > > +  TEST_COMPARE (params.__pad, 0);
> > > > +
> > > > +  xclose (efd);
> > > > +}
> > > > +
> > > > +static bool
> > > > +ioctl_supported (void)
> > > > +{
> > > > +  int efd = epoll_create1 (0);
> > > > +  TEST_VERIFY_EXIT (efd != -1);
> > > > +
> > > > +  struct epoll_params params;
> > > > +  int r = ioctl (efd, EPIOCGPARAMS, &params);
> > > > +  xclose (efd);
> > > > +
> > > > +  return (r == 0);
> > > > +}
> > > > +
> > > > +static int
> > > > +do_test (void)
> > > > +{
> > > > +  if (ioctl_supported ())
> > > > +    test_epoll_ioctl ();
> > > > +  else
> > > > +    return EXIT_UNSUPPORTED;
> > > > +
> > > > +  return 0;
> > > > +}
> > > > +
> > > > +#include <support/test-driver.c>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Linux: Add epoll ioctls
  2024-06-04 15:50         ` Noah Goldstein
@ 2024-06-04 15:51           ` Adhemerval Zanella Netto
  2024-06-04 16:06             ` Joe Damato
  0 siblings, 1 reply; 8+ messages in thread
From: Adhemerval Zanella Netto @ 2024-06-04 15:51 UTC (permalink / raw)
  To: Noah Goldstein, Joe Damato; +Cc: libc-alpha



On 04/06/24 12:50, Noah Goldstein wrote:
> On Tue, Jun 4, 2024 at 10:36 AM Joe Damato <jdamato@fastly.com> wrote:
>>
>> On Fri, May 31, 2024 at 11:59:19AM -0700, Joe Damato wrote:
>>> On Wed, May 29, 2024 at 11:14:32AM -0300, Adhemerval Zanella Netto wrote:
>>>>
>>>>
>>>> On 28/05/24 14:37, Joe Damato wrote:
>>>>> As of Linux kernel 6.9, some ioctls and a parameters structure have been
>>>>> introduced which allow user programs to control whether a particular
>>>>> epoll context will busy poll.
>>>>>
>>>>> Update the headers to include these for the convenience of user apps.
>>>>>
>>>>> The ioctls were added in Linux kernel 6.9 commit 18e2bf0edf4dd
>>>>> ("eventpoll: Add epoll ioctl for epoll_params") [1] to
>>>>> include/uapi/linux/eventpoll.h.
>>>>>
>>>>> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd
>>>>>
>>>>> Signed-off-by: Joe Damato <jdamato@fastly.com>
>>>>
>>>> LGTM, thanks.
>>>>
>>>> Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
>>>
>>> Thanks for the review!
>>>
>>> Do I need to do anything to get this pushed? Not sure what the libc
>>> process is, but AFAIK I don't have (nor do I want) write access to
>>> the repo to push.
>>
>> I noticed in patchwork that this is set to "Committed" but it does
>> appear in the shortlong for glibc.
>>
>> Maybe I am looking in the wrong place?
>>
>> Patchwork: https://patchwork.sourceware.org/project/glibc/patch/20240528173706.511391-2-jdamato@fastly.com/
>> shortlog: https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/master
>>
>> If some one could let me know what, if anything, I need to do to get
>> this pushed that would super helpful.
>>
>> Thanks,
>> Joe
>>
> 
> Doesn't appear to have been pushed.
> 
> I'll push this now.

Sorry about that, I though I had it installed we I marked it Commited but I 
forgot to do so.

Thanks Noah.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Linux: Add epoll ioctls
  2024-06-04 15:51           ` Adhemerval Zanella Netto
@ 2024-06-04 16:06             ` Joe Damato
  0 siblings, 0 replies; 8+ messages in thread
From: Joe Damato @ 2024-06-04 16:06 UTC (permalink / raw)
  To: Adhemerval Zanella Netto; +Cc: Noah Goldstein, libc-alpha

On Tue, Jun 04, 2024 at 12:51:39PM -0300, Adhemerval Zanella Netto wrote:
> 
> 
> On 04/06/24 12:50, Noah Goldstein wrote:
> > On Tue, Jun 4, 2024 at 10:36 AM Joe Damato <jdamato@fastly.com> wrote:
> >>
> >> On Fri, May 31, 2024 at 11:59:19AM -0700, Joe Damato wrote:
> >>> On Wed, May 29, 2024 at 11:14:32AM -0300, Adhemerval Zanella Netto wrote:
> >>>>
> >>>>
> >>>> On 28/05/24 14:37, Joe Damato wrote:
> >>>>> As of Linux kernel 6.9, some ioctls and a parameters structure have been
> >>>>> introduced which allow user programs to control whether a particular
> >>>>> epoll context will busy poll.
> >>>>>
> >>>>> Update the headers to include these for the convenience of user apps.
> >>>>>
> >>>>> The ioctls were added in Linux kernel 6.9 commit 18e2bf0edf4dd
> >>>>> ("eventpoll: Add epoll ioctl for epoll_params") [1] to
> >>>>> include/uapi/linux/eventpoll.h.
> >>>>>
> >>>>> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?h=v6.9&id=18e2bf0edf4dd
> >>>>>
> >>>>> Signed-off-by: Joe Damato <jdamato@fastly.com>
> >>>>
> >>>> LGTM, thanks.
> >>>>
> >>>> Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
> >>>
> >>> Thanks for the review!
> >>>
> >>> Do I need to do anything to get this pushed? Not sure what the libc
> >>> process is, but AFAIK I don't have (nor do I want) write access to
> >>> the repo to push.
> >>
> >> I noticed in patchwork that this is set to "Committed" but it does
> >> appear in the shortlong for glibc.
> >>
> >> Maybe I am looking in the wrong place?
> >>
> >> Patchwork: https://patchwork.sourceware.org/project/glibc/patch/20240528173706.511391-2-jdamato@fastly.com/
> >> shortlog: https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/master
> >>
> >> If some one could let me know what, if anything, I need to do to get
> >> this pushed that would super helpful.
> >>
> >> Thanks,
> >> Joe
> >>
> > 
> > Doesn't appear to have been pushed.
> > 
> > I'll push this now.
> 
> Sorry about that, I though I had it installed we I marked it Commited but I 
> forgot to do so.
> 
> Thanks Noah.

Thanks Adhemerval for confirming and Noah for offering to push.

I'll keep an eye on glibc's git for the commit to come through.

Thank you,
Joe

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-06-04 16:06 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-28 17:37 [PATCH v2 0/1] Linux: Add epoll ioctls Joe Damato
2024-05-28 17:37 ` [PATCH v2 1/1] " Joe Damato
2024-05-29 14:14   ` Adhemerval Zanella Netto
2024-05-31 18:59     ` Joe Damato
2024-06-04 15:36       ` Joe Damato
2024-06-04 15:50         ` Noah Goldstein
2024-06-04 15:51           ` Adhemerval Zanella Netto
2024-06-04 16:06             ` Joe Damato

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).