[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK7LNAQYMKqixm8dVbbMvgt+=MEROSg-JG_kHS8T+xmrgeLABg@mail.gmail.com>
Date: Fri, 12 Mar 2021 11:48:11 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-api@...r.kernel.org
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
Powered by blists - more mailing lists