about summary refs log tree commit diff
path: root/src/sysdeps
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2024-09-12 11:53:13 +0000
committerLaurent Bercot <ska@appnovation.com>2024-09-12 11:53:13 +0000
commitf867414f4e1f8115d1c9796f8f91677673739368 (patch)
treee350efd8dff46f8f4adfc758d9f4bb292b0622ec /src/sysdeps
parenta7973043c92dc0f9d083e600142a47ce6dd1c9f6 (diff)
downloadskalibs-f867414f4e1f8115d1c9796f8f91677673739368.tar.gz
skalibs-f867414f4e1f8115d1c9796f8f91677673739368.tar.xz
skalibs-f867414f4e1f8115d1c9796f8f91677673739368.zip
Add sysdep for CLONE_NEWPID and fork_newpid function HEAD master
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/sysdeps')
-rw-r--r--src/sysdeps/tryclonenewpid.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/sysdeps/tryclonenewpid.c b/src/sysdeps/tryclonenewpid.c
new file mode 100644
index 0000000..1a1401a
--- /dev/null
+++ b/src/sysdeps/tryclonenewpid.c
@@ -0,0 +1,36 @@
+/* ISC license. */
+
+#undef _POSIX_C_SOURCE
+#undef _XOPEN_SOURCE
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <sched.h>
+#include <sys/syscall.h>
+#include <stdint.h>
+#include <unistd.h>
+
+struct clone_args
+{
+  uint64_t flags ;
+  uint64_t pidfd ;
+  uint64_t child_tid ;
+  uint64_t parent_tid ;
+  uint64_t exit_signal ;
+  uint64_t stack ;
+  uint64_t stack_size ;
+  uint64_t tls ;
+  uint64_t set_tid ;
+  uint64_t set_tid_size ;
+  uint64_t cgroup ;
+} ;
+
+int main (void)
+{
+  struct clone_args args = { 0 } ;
+  args.flags = CLONE_NEWPID ;
+  syscall(SYS_clone3, &args, sizeof(struct clone_args)) ;
+  return 0 ;
+}