From: "H. Peter Anvin" <hpa@zytor.com>
To: Zach Brown <zach.brown@oracle.com>
Cc: Ulrich Drepper <drepper@redhat.com>,
David Miller <davem@davemloft.net>,
linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
mingo@elte.hu, tglx@linutronix.de, torvalds@linux-foundation.org
Subject: Re: [PATCHv4 5/6] Allow setting O_NONBLOCK flag for new sockets
Date: Tue, 20 Nov 2007 11:12:55 -0800 [thread overview]
Message-ID: <474331B7.6020802@zytor.com> (raw)
In-Reply-To: <47432666.6070503@oracle.com>
Zach Brown wrote:
>> That's only because you're being, deliberately or accidentally, vague
>> about what your actual (as opposed to imagined) requirements are.
>
> Maybe I can help by summarizing how syslets fit in to this.
>
> Currently the syslet patches add a single submission call which includes
> an argument which is a structure which duplicates the system call ABI.
> The submission syscall in the kernel does some syslet specific work
> which amounts to verifying state and storing it in the task_struct. It
> then has to unpack the system call arguments from this submission
> syscall argument and call the specified system call.
>
> Every architecture will need helpers, then, on either side. They'll
> need to pack their arguments into the struct and then unpack and call in
> the kernel. The PPC64 guys have already expressed concern about this.
>
> It's, in effect, adding the syslet arguments to every single system call.
>
> So, instead of duplicating the system call ABI in the argument to a
> syslet submission syscall, we could pass the syslet arguments via this
> indirect parameters convention. This, hopefully, will reduce complexity
> by reducing the number of places that we have to muck around with the
> sycall ABI.
>
> That's the high level summary, anyway. I'm working on the simplest
> expression of this mechanism at the moment. We'll have code to argue
> about before the silly thanksgiving break, I hope.
>
It seems that you're doing the same thing in both cases, except you're
now extending it to include other random functionality, which means
other things than syslets are suddenly affected.
syslets are arguably a little bit different, since what you're
effectively doing there is running a miniature interpreted language in
kernel space. A higher startup overhead should be acceptable, since
you're amortizing it over a larger number of calls. Extending that
mechanism suddenly means you HAVE to use that interpreted language
message mechanism to access certain system calls, which really does not
seem like a good thing neither for performance nor for encouraging sane
design of interfaces.
Everyone who designs a multiplexer have good reasons for the expediency
that it provides, but it really isn't a good thing in the long term.
The reason I mentioned MS-DOS is that MS-DOS has tons of multiplexers,
sometimes three levels deep. Furthermore, it doesn't have any kind of
uniformity to its system calls calling convention. The end result is
hand-crafted stubs and wrappers, on both sides of the interface.
-hpa
next prev parent reply other threads:[~2007-11-20 19:15 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-20 6:53 [PATCHv4 5/6] Allow setting O_NONBLOCK flag for new sockets Ulrich Drepper
2007-11-20 7:59 ` David Miller
2007-11-20 16:04 ` Ulrich Drepper
2007-11-20 18:13 ` H. Peter Anvin
2007-11-20 18:24 ` Zach Brown
2007-11-20 19:12 ` H. Peter Anvin [this message]
2007-11-20 22:22 ` Ingo Molnar
2007-11-20 22:33 ` Davide Libenzi
2007-11-20 22:42 ` Ingo Molnar
2007-11-20 23:25 ` H. Peter Anvin
2007-11-20 23:41 ` Ingo Molnar
2007-11-20 23:57 ` H. Peter Anvin
2007-11-26 18:17 ` Linus Torvalds
2007-11-26 18:45 ` Ingo Molnar
2007-11-26 19:07 ` H. Peter Anvin
2007-11-26 19:55 ` Davide Libenzi
2007-11-26 19:20 ` H. Peter Anvin
2007-11-26 23:25 ` Ulrich Drepper
2007-11-27 0:14 ` H. Peter Anvin
2007-11-27 0:42 ` Ulrich Drepper
2007-11-27 1:23 ` H. Peter Anvin
2007-11-27 2:14 ` Linus Torvalds
2007-11-27 2:38 ` H. Peter Anvin
2007-11-20 21:48 ` David Miller
2007-11-20 21:55 ` Zach Brown
2007-11-20 22:36 ` David Miller
2007-11-20 17:54 ` Zach Brown
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=474331B7.6020802@zytor.com \
--to=hpa@zytor.com \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=drepper@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=zach.brown@oracle.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