Message ID | 20230803163558.991832-4-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | Add pidfd and cgroupv2 support for process creation | expand |
* Adhemerval Zanella via Libc-alpha: > Not all architectures added clone3 syscall. > --- > .../unix/sysv/linux/alpha/kernel-features.h | 3 +++ > .../unix/sysv/linux/ia64/kernel-features.h | 3 +++ > .../unix/sysv/linux/nios2/kernel-features.h | 23 +++++++++++++++++++ > sysdeps/unix/sysv/linux/sh/kernel-features.h | 3 +++ > .../unix/sysv/linux/sparc/kernel-features.h | 3 +++ > 5 files changed, 35 insertions(+) > create mode 100644 sysdeps/unix/sysv/linux/nios2/kernel-features.h > > diff --git a/sysdeps/unix/sysv/linux/alpha/kernel-features.h b/sysdeps/unix/sysv/linux/alpha/kernel-features.h > index 3151e75449..e298bf2bcc 100644 > --- a/sysdeps/unix/sysv/linux/alpha/kernel-features.h > +++ b/sysdeps/unix/sysv/linux/alpha/kernel-features.h > @@ -50,4 +50,7 @@ > /* Alpha requires old sysvipc even being a 64-bit architecture. */ > #undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 > > +/* Alpha does not provide clone3. */ > +#undef __ASSUME_CLONE3 This is inconsistent with sysdeps/unix/sysv/linux/kernel-features.h, which I think uses 0 to indicate no support: /* The clone3 system call was introduced across on most architectures in Linux 5.3. Not all ports implements it, so it should be used along HAVE_CLONE3_WRAPPER define. */ #if __LINUX_KERNEL_VERSION >= 0x050300 # define __ASSUME_CLONE3 1 #else # define __ASSUME_CLONE3 0 Maybe that comment needs updating in this series, too? Thanks, Florian
On 11/08/23 07:34, Florian Weimer wrote: > * Adhemerval Zanella via Libc-alpha: > >> Not all architectures added clone3 syscall. >> --- >> .../unix/sysv/linux/alpha/kernel-features.h | 3 +++ >> .../unix/sysv/linux/ia64/kernel-features.h | 3 +++ >> .../unix/sysv/linux/nios2/kernel-features.h | 23 +++++++++++++++++++ >> sysdeps/unix/sysv/linux/sh/kernel-features.h | 3 +++ >> .../unix/sysv/linux/sparc/kernel-features.h | 3 +++ >> 5 files changed, 35 insertions(+) >> create mode 100644 sysdeps/unix/sysv/linux/nios2/kernel-features.h >> >> diff --git a/sysdeps/unix/sysv/linux/alpha/kernel-features.h b/sysdeps/unix/sysv/linux/alpha/kernel-features.h >> index 3151e75449..e298bf2bcc 100644 >> --- a/sysdeps/unix/sysv/linux/alpha/kernel-features.h >> +++ b/sysdeps/unix/sysv/linux/alpha/kernel-features.h >> @@ -50,4 +50,7 @@ >> /* Alpha requires old sysvipc even being a 64-bit architecture. */ >> #undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 >> >> +/* Alpha does not provide clone3. */ >> +#undef __ASSUME_CLONE3 > > This is inconsistent with sysdeps/unix/sysv/linux/kernel-features.h, > which I think uses 0 to indicate no support: > > /* The clone3 system call was introduced across on most architectures in > Linux 5.3. Not all ports implements it, so it should be used along > HAVE_CLONE3_WRAPPER define. */ > #if __LINUX_KERNEL_VERSION >= 0x050300 > # define __ASSUME_CLONE3 1 > #else > # define __ASSUME_CLONE3 0 > > Maybe that comment needs updating in this series, too? Are you sure? It follow what __ASSUME_FACCESSAT2, __ASSUME_CLOSE_RANGE, and __ASSUME_FUTEX_LOCK_PI2 do. We really should eventually refactor kernel-features.h to avoid the defined/undef way which is error-prone and always have the __ASSUME define to either 1 or 0.
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel-features.h b/sysdeps/unix/sysv/linux/alpha/kernel-features.h index 3151e75449..e298bf2bcc 100644 --- a/sysdeps/unix/sysv/linux/alpha/kernel-features.h +++ b/sysdeps/unix/sysv/linux/alpha/kernel-features.h @@ -50,4 +50,7 @@ /* Alpha requires old sysvipc even being a 64-bit architecture. */ #undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 +/* Alpha does not provide clone3. */ +#undef __ASSUME_CLONE3 + #endif /* _KERNEL_FEATURES_H */ diff --git a/sysdeps/unix/sysv/linux/ia64/kernel-features.h b/sysdeps/unix/sysv/linux/ia64/kernel-features.h index 98ebfb74bf..6580ec20fe 100644 --- a/sysdeps/unix/sysv/linux/ia64/kernel-features.h +++ b/sysdeps/unix/sysv/linux/ia64/kernel-features.h @@ -34,4 +34,7 @@ #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE2 +/* ia64 does not provide clone3. */ +#undef __ASSUME_CLONE3 + #endif /* _KERNEL_FEATURES_H */ diff --git a/sysdeps/unix/sysv/linux/nios2/kernel-features.h b/sysdeps/unix/sysv/linux/nios2/kernel-features.h new file mode 100644 index 0000000000..bb2d887dd5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/nios2/kernel-features.h @@ -0,0 +1,23 @@ +/* Set flags signalling availability of kernel features based on given + kernel version number. NIOS2 version. + Copyright (C) 2023 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_next <kernel-features.h> + +/* nios2 does not provide clone3. */ +#undef __ASSUME_CLONE3 diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index 953fa8dff0..80a90d05bb 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -55,4 +55,7 @@ # undef __ASSUME_STATX #endif +/* sh does not provide clone3. */ +#undef __ASSUME_CLONE3 + #endif diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h index 98c938c16d..fa9383081f 100644 --- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h @@ -87,3 +87,6 @@ (INLINE_CLONE_SYSCALL). */ #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS 1 + +/* sparc does not provide clone3. */ +#undef __ASSUME_CLONE3