#include <linux/fs.h>
#include <linux/if_link.h>
#include <linux/openat2.h>
-#include <linux/sched.h>
#include <linux/types.h>
'''
__returns_twice pid_t lxc_raw_clone(unsigned long flags, int *pidfd)
{
pid_t pid;
- struct lxc_clone_args args = {
+ struct clone_args args = {
.flags = flags,
.pidfd = ptr_to_u64(pidfd),
};
#include "config.h"
-#include <linux/sched.h>
#include <sched.h>
#include <signal.h>
#include <stdbool.h>
#define u64_to_ptr(x) ((void *)(uintptr_t)x)
#endif
-struct lxc_clone_args {
+#if !HAVE_STRUCT_CLONE_ARGS
+struct clone_args {
__aligned_u64 flags;
__aligned_u64 pidfd;
__aligned_u64 child_tid;
__aligned_u64 set_tid_size;
__aligned_u64 cgroup;
};
+#endif
-__returns_twice static inline pid_t lxc_clone3(struct lxc_clone_args *args, size_t size)
+__returns_twice static inline pid_t lxc_clone3(struct clone_args *args, size_t size)
{
return syscall(__NR_clone3, args, size);
}
} else {
int cgroup_fd = -EBADF;
- struct lxc_clone_args clone_args = {
+ struct clone_args clone_args = {
.flags = handler->clone_flags,
.pidfd = ptr_to_u64(&handler->pidfd),
.exit_signal = SIGCHLD,
#include "config.h"
-#include <linux/sched.h>
#include <sched.h>
#include <signal.h>
#include <stdbool.h>
#include "namespace.h"
-#include <sched.h>
-#include <linux/sched.h>
#include <linux/reboot.h>
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ...);