Hi. I think I am missing something, but is there any particular reason to use a different bit size between a syscall and its userspace wrapper? For example, for the unshare syscall, unshare(2) says the parameter is int. SYNOPSIS #define _GNU_SOURCE #include <sched.h> int unshare(int flags); In the kernel, it is unsigned long. SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) { return ksys_unshare(unshare_flags); } I guess the upper 32-bit will be zeroed out in the c library when sizeof(int) != sizeof(unsigned long) (i.e. 64-bit system), but I'd like to know why we do it this way. -- Best Regards Masahiro Yamada