public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: monstr@seznam.cz
Cc: microblaze-uclinux@itee.uq.edu.au,
	Matthew Wilcox <matthew@wil.cx>,
	Will Newton <will.newton@gmail.com>,
	Linux Kernel list <linux-kernel@vger.kernel.org>,
	linux-arch@vger.kernel.org, git@xilinx.com,
	John Williams <john.williams@petalogix.com>,
	Stephen Neuendorffer <stephen.neuendorffer@xilinx.com>,
	John Linn <John.Linn@xilinx.com>
Subject: Re: microblaze syscall list
Date: Sun, 27 Apr 2008 22:15:31 +0200	[thread overview]
Message-ID: <200804272215.32862.arnd@arndb.de> (raw)
In-Reply-To: <4814A153.3040600@seznam.cz>

On Sunday 27 April 2008, Michal Simek wrote:
> Arnd commented current syscall table and send me long email about(Thanks again).
> On the base on this email I did converted table for future use - for porting old
> application to new version. Below is my table with syscalls and there is a short
> description. (or http://www.monstr.eu/wiki/doku.php?id=kernel:syscall)
> 
> I counted how big impact will be syscall change to programs which are in John W
> distribution
> all programs
> mknod - 174
> rmdir - 488
> mkdir - 1128
> symlink - 404
> rename - 1536
> access - 1664
> chmod -  1122
> open - 22583 (crazy)
> ipc - 26
> 
> Only busybox
> open - 667
> chmod 44
> access 52
> rename 32
> symlink 8
> mkdir 19
> rmdir 9
> mknod 16
> 
> I thing you understand that we can't change all application per night. This is
> not possible. But we have to start with change this.

Note that the only thing you should need to change is the libc implementation
(any version of it: glibc, uclibc, klibc, ...), but not any application source
code, as the applications just call the functions that are defined in the libc.
If you have binaries that are statically linked with their libc, you'd have
to recompile or at least relink them. If you redefine data structures or
types that are used in application code, like struct stat or off_t, you
also need to recompile all user code.

Of course, as Alan and others have mentioned, even without changing any
application source code, the amount of work for that is significantly more 
than just changing the kernel.

I think you have three options here:

1. Keep the old syscall interface and just add new syscalls for the stuff
that you are currently missing. Don't change userspace at all, but live
with somewhat bloated kernels and libc forever and maintain a larger
code base in the kernel.

2. Change the syscall interface in the kernel in the way we have discussed,
and adapt the libc code along with it. Break all backwards compatibility
and start out with a new leaner ABI. Old applications can still use
your old out-of-tree kernels, or forks of that.

3. Merge only the ABI as in 2. into the mainline kernel, but use new
syscall numbers for that. Maintain an out-of-tree patch that adds the
old ABI for backwards compatibility so you can run old and new code
on one kernel if you build with that patch, but eventually phase
out the old ABI.

I won't try to force you to go either route, it's your own decision,
but you should understand the tradeoffs. I don't think there is any
value in trying to deprecate just part of the ABI and break some
binaries but not others, this will only cause hard to find bugs. Make
sure that if you decide to break backwards compatibility, you break it
in an obvious way and get the most benefit out of it.

	Arnd <><

  parent reply	other threads:[~2008-04-27 20:16 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-22 12:13 [RFC] Introduce __ARCH_WANT_SYS_SYSFS Will Newton
2008-04-22 13:15 ` Arnd Bergmann
2008-04-23 21:16   ` Michal Simek
2008-04-23 21:38     ` Mike Frysinger
2008-04-24 11:11     ` microblaze syscall list Arnd Bergmann
2008-04-24 18:42       ` Michal Simek
2008-04-24 21:21         ` Arnd Bergmann
2008-04-25  9:36         ` [microblaze-uclinux] " John Williams
2008-04-25 10:06           ` Matthew Wilcox
2008-04-25 11:32             ` Geert Uytterhoeven
2008-04-27  2:04             ` John Williams
2008-04-27 15:52               ` Michal Simek
2008-04-27 16:50                 ` Alan Cox
2008-04-27 20:15                 ` Arnd Bergmann [this message]
2008-04-28  0:15                   ` John Williams
2008-04-28 12:31                     ` Arnd Bergmann
2008-05-01 19:17                       ` Arnd Bergmann
2008-05-02  5:38                         ` John Williams
2008-05-02  8:18                           ` Michal Simek
2008-05-03  3:49                             ` John Williams
2008-05-03  9:16                               ` Arnd Bergmann
2008-05-03 15:56                                 ` Ulrich Drepper
2008-05-03 21:14                                   ` Arnd Bergmann
2008-05-05  1:09                                 ` John Williams
2008-05-05 14:08                                   ` Arnd Bergmann
2008-05-03 21:57                 ` Arnd Bergmann
2008-05-04  9:12                   ` Michal Simek
2008-05-04 19:37                     ` Arnd Bergmann
2008-05-05  6:18                       ` Michal Simek
2008-05-04 22:09                     ` H. Peter Anvin
2008-05-04 22:54                       ` Arnd Bergmann
2008-05-04 22:53                         ` H. Peter Anvin
2008-05-06  8:33                       ` Michal Simek
2008-04-24 20:51       ` Michal Simek
2008-04-24 21:37         ` Arnd Bergmann
2008-04-22 15:12 ` [RFC] Introduce __ARCH_WANT_SYS_SYSFS Randy Dunlap
2008-04-22 15:16   ` Will Newton
2008-04-22 15:24     ` Kyle McMartin
2008-04-22 15:34       ` Will Newton
2008-04-22 15:38         ` Kyle McMartin
2008-04-23 14:36           ` Will Newton
2008-04-23 14:59             ` Arnd Bergmann
2008-04-23 15:40             ` Kyle McMartin
2008-04-23 15:50               ` Will Newton
2008-04-23 16:05                 ` Mike Frysinger
2008-04-23 17:59                   ` Mike Frysinger
2008-04-24  9:18                     ` Will Newton
2008-04-23 18:44             ` Sam Ravnborg
2008-04-24 14:51   ` Adrian Bunk
2008-04-22 15:21 ` Kyle McMartin
2008-04-22 15:38   ` Arnd Bergmann
2008-04-22 15:42     ` Kyle McMartin

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=200804272215.32862.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=John.Linn@xilinx.com \
    --cc=git@xilinx.com \
    --cc=john.williams@petalogix.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=microblaze-uclinux@itee.uq.edu.au \
    --cc=monstr@seznam.cz \
    --cc=stephen.neuendorffer@xilinx.com \
    --cc=will.newton@gmail.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