Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751892AbcDRCNT (ORCPT ); Sun, 17 Apr 2016 22:13:19 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:54416 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751829AbcDRCNR (ORCPT ); Sun, 17 Apr 2016 22:13:17 -0400 X-Originating-IP: 50.39.163.18 Date: Sun, 17 Apr 2016 19:12:59 -0700 From: Josh Triplett To: Greg KH Cc: "H. Peter Anvin" , "Theodore Ts'o" , Mathieu Desnoyers , "Richard W.M. Jones" , linux-kernel@vger.kernel.org, Thomas Gleixner , mingo@redhat.com, Andrew Morton , luto@kernel.org, viro@zeniv.linux.org.uk, zab , emunson@akamai.com, "Paul E. McKenney" , Andrea Arcangeli , Pavel Emelyanov , sfr@canb.auug.org.au, Milosz Tanski , rostedt , arnd@arndb.de, ebiederm@xmission.com, gorcunov , iulia manda21 , dave hansen , mguzik , adobriyan@gmail.com, Davidlohr Bueso , linux-api , gorcunov@gmail.com, fw@deneb.enyo.de, Linus Torvalds Subject: Re: [PATCH v2 0/2] vfs: Define new syscall getumask. Message-ID: <20160418021259.GB16600@x> References: <1460552272-15985-1-git-send-email-rjones@redhat.com> <2143735451.55767.1460561962122.JavaMail.zimbra@efficios.com> <1736004700.56566.1460581285951.JavaMail.zimbra@efficios.com> <20160414021348.GB16656@thunk.org> <57142C80.6070005@zytor.com> <20160418010925.GA7800@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160418010925.GA7800@kroah.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2301 Lines: 43 On Mon, Apr 18, 2016 at 10:09:25AM +0900, Greg KH wrote: > On Sun, Apr 17, 2016 at 05:38:24PM -0700, H. Peter Anvin wrote: > > On 04/13/16 19:13, Theodore Ts'o wrote: > > > > > > One other reason to suggest using a /proc file is that you're not at > > > the mercy of the glibc folks to wire up a new system call. (Glibc has > > > been refusing to wire up getrandom(2), for example. Grrrr.....) > > > > > > > This brings right back up the libinux idea. There are continued > > concerns about type compatibility, but saying "oh, use syscall(3) > > instead" has worse properties than a Linux-kernel-team maintained > > libinux. Last I heard the glibc team had (reluctantly?) agreed to do > > something to deal with linux-specific system calls, but last I heard > > nothing had happened. The last discussion I see on the glibc mailing > > list dates back to November, and that thread seems to have died from > > bikeshedding, again. > > > > There aren't a *lot* of such system calls, but even in that thread the > > "oh, only two applications need this, let them use syscall(3)" seems to > > remain. > > And only 2 applications will continue to use it because no one wants to > write syscall() wrappers for their individual applications, so it's a > vicious cycle :( > > 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.)