Thread (4 messages) 4 messages, 3 authors, 2021-03-14

Re: Why is the bit size different between a syscall and its wrapper?

flat view

From: Bhaskar Chowdhury <hidden>
Date: 2021-03-12 03:18:58
Also in: lkml

On 11:48 Fri 12 Mar 2021, Masahiro Yamada wrote:
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.
Small nit! never mind ...but eye catching, Masahiro :) ...are you typing this
on narrowed device, which allow only this much line length?? It's bloody
narrow...don't you think so?

Sorry, for the deviation.

~Bhaskar
--
Best Regards
Masahiro Yamada

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help