public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Josh Triplett <josh@joshtriplett.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Greg KH <gregkh@linuxfoundation.org>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	"Richard W.M. Jones" <rjones@redhat.com>,
	linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	mingo@redhat.com, Andrew Morton <akpm@linux-foundation.org>,
	luto@kernel.org, viro@zeniv.linux.org.uk, zab <zab@redhat.com>,
	emunson@akamai.com,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Pavel Emelyanov <xemul@parallels.com>,
	sfr@canb.auug.org.au, Milosz Tanski <milosz@adfin.com>,
	rostedt <rostedt@goodmis.org>,
	arnd@arndb.de, ebiederm@xmission.com,
	gorcunov <gorcunov@openvz.org>,
	iulia manda21 <iulia.manda21@gmail.com>,
	dave hansen <dave.hansen@linux.intel.com>,
	mguzik <mguzik@redhat.com>,
	adobriyan@gmail.com, Davidlohr Bueso <dave@stgolabs.net>,
	linux-api <linux-api@vger.kernel.org>,
	gorcunov@gmail.com, fw@deneb.enyo.de,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH v2 0/2] vfs: Define new syscall getumask.
Date: Sun, 17 Apr 2016 19:37:22 -0700	[thread overview]
Message-ID: <20160418023721.GA17282@x> (raw)
In-Reply-To: <57144343.4090402@zytor.com>

On Sun, Apr 17, 2016 at 07:15:31PM -0700, H. Peter Anvin wrote:
> On 04/17/16 19:12, Josh Triplett wrote:
> >>
> >> I really like the 'libinux' idea, did anyone every hack up a first-pass
> >> at this?  And I'm guessing we have more syscalls now that would need to
> >> be added (like getrandom(), but that shouldn't be too difficult.
> > 
> > Personally, I'd suggest that libinux should wire up *all* (non-obsolete)
> > syscalls, not just those that haven't already been exposed via any
> > particular libc implementation.  Each such syscall function would have
> > minimal overhead, since unlike libc these wrappers would not have any
> > special handling (other than use of the vdso) and would directly map to
> > the kernel syscall signature.  Given a standard prefix like sys_ or
> > linux_, that would provide a clear distinction between direct-syscall
> > functions and libc functions, and avoid any future conflict if libc adds
> > a function named the same as the syscall.
> > 
> > As a random example, sys_getpid() would *always* call the getpid
> > syscall, rather than reading a cache within the library.  (And
> > sys_gettid would call the gettid syscall, rather than failing to exist.)
> 
> I'm not so sure this is a good idea.  It has definite pros and cons.  In
> some ways it pushes it more to be like syscall(3).

It seems like one of the main problems with syscall() is that it forces
userspace to handle weird ABI issues, such as syscall numbers varying by
architecture, encoding of 64-bit arguments on 32-bit platforms (see the
example in the syscall manpage), and other subtleties that will break on
architectures other than the one the developer is most likely to be
running.  libinux bindings would eliminate those issues.

What cases do you have in mind where the libinux binding should look
different than the C API of the SYSCALL_DEFINE'd function in the kernel?

Users can still call the libc syscall when they want libc's behavior;
for syscalls that have a libc binding, most users will want that
version.  But I've often needed to call the underlying syscall even for
syscalls that *do* have a libc binding, for various purposes, and having
a standard way to do that while still having safe type signatures seems
helpful.

This would also make it much easier to write an alternative libc, or a
language standard library that doesn't want to depend on libc.

- Josh Triplett

  reply	other threads:[~2016-04-18  3:00 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-13 12:57 [PATCH v2 0/2] vfs: Define new syscall getumask Richard W.M. Jones
2016-04-13 12:57 ` [PATCH v2 1/2] " Richard W.M. Jones
2016-04-13 13:20   ` Cyrill Gorcunov
2016-04-13 13:57     ` Richard W.M. Jones
2016-04-13 14:02       ` Christoph Hellwig
2016-04-13 15:27       ` Mathieu Desnoyers
2016-04-13 12:57 ` [PATCH v2 2/2] x86: Wire up new getumask system call on x86 Richard W.M. Jones
2016-04-13 13:59 ` [PATCH v2 0/2] vfs: Define new syscall getumask Greg KH
2016-04-14  3:47   ` Steven Rostedt
2016-04-14 19:26     ` Greg KH
2016-04-13 15:39 ` Mathieu Desnoyers
2016-04-13 21:01   ` Mathieu Desnoyers
2016-04-14  2:13     ` Theodore Ts'o
2016-04-18  0:38       ` H. Peter Anvin
2016-04-18  1:09         ` Greg KH
2016-04-18  2:02           ` H. Peter Anvin
2016-04-18  2:12           ` Josh Triplett
2016-04-18  2:15             ` H. Peter Anvin
2016-04-18  2:37               ` Josh Triplett [this message]
2016-04-18  3:00                 ` H. Peter Anvin
2016-04-18 11:39                   ` Theodore Ts'o
2016-04-14 17:56     ` Andy Lutomirski
2016-04-13 15:41 ` Colin Walters
2016-04-13 16:03   ` Richard W.M. Jones
2016-04-18  1:42   ` H. Peter Anvin
2016-04-18  1:57     ` Josh Triplett
2016-04-18  9:14       ` Richard W.M. Jones
2016-04-18 10:04         ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160418023721.GA17282@x \
    --to=josh@joshtriplett.org \
    --cc=aarcange@redhat.com \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=dave@stgolabs.net \
    --cc=ebiederm@xmission.com \
    --cc=emunson@akamai.com \
    --cc=fw@deneb.enyo.de \
    --cc=gorcunov@gmail.com \
    --cc=gorcunov@openvz.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=iulia.manda21@gmail.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mguzik@redhat.com \
    --cc=milosz@adfin.com \
    --cc=mingo@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=rjones@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=sfr@canb.auug.org.au \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xemul@parallels.com \
    --cc=zab@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox