Messages in this thread | | | From | Masahiro Yamada <> | Date | Fri, 12 Mar 2021 11:48:11 +0900 | Subject | Why is the bit size different between a syscall and its wrapper? |
| |
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
| |