From: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
To: Albert Cahalan <acahalan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Randy Dunlap
<randy.dunlap-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>,
Serge Hallyn
<serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Containers
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
Nathan Lynch <nathanl-V7BBcbaFuwjMbYB6QlFGEg@public.gmane.org>,
"H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>,
Dan Smith <danms-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
Roland McGrath <roland-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 11/11][v15]: Document sys_eclone
Date: Tue, 20 Jul 2010 15:13:57 -0700 [thread overview]
Message-ID: <20100720221357.GA2440@us.ibm.com> (raw)
In-Reply-To: <AANLkTikXDsv9CoV_EU48bunLD1wCh3w7HVdpo84rJtJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
Albert Cahalan [acahalan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org] wrote:
| On Mon, Jul 12, 2010 at 5:54 PM, Sukadev Bhattiprolu
| <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> wrote:
| > Albert Cahalan [acahalan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org] wrote:
| >
| > | Not that one couldn't cram
| > | things into the old system call, but that would involve changing
| > | the meaning of at least one parameter based on a flag. (eeew)
| >
| > My understanding was that extending eclone() in the future using a flag
| > to determine the size would get the same response.
|
| I doubt that. We extended clone via flags without trouble,
| increasing the number of parameters it took. We never had
| to change the meaning of a parameter though. Unfortunately
| we used up the last (sixth) free system call parameter.
We only use 5 args for clone() right - so the 6th (%ebp) is still
available for extension ?
sys_clone(flags, child_stack, parent_tid, tls, child_tid)
The problem we have is that we needed two more parameters, pid_t *pids
and 'struct clone_args' - again this was discussed in [v5] or [v6] of
the patchset.
But regardless, I think in the long run, it would be cleaner if we created
a new system call that is common across all architectures.
|
| > | I'm suggesting that you not copy the struct as one blob, or at
| > | least not expect to do so for future extensions to eclone. You
| > | can read the flags, use that to determine struct size, and then
| > | read the rest of the struct. Alternately you can pass 32 more flags
| > | as a 5th syscall argument.
| > |
| > | I'm not so sure we need 96 flag bits, but OK. They can all go
| > | in the struct if you like, or they can all go in the arguments.
| > | FWIW, I happen to think that both kernel and user code will
| > | be less ugly if all of the flags fit in 64 bits. C doesn't provide
| > | a 96-bit integer type.
| >
| > We wanted to leave the original 32-bits of clone-flags as the first
| > parameter to avoid confusing the application writers.
| >
| > http://lkml.org/lkml/2009/10/14/13
|
| IMHO, having multiple flags fields is far more confusing.
It is confusing but like I said, it was discussed (see
http://lkml.org/lkml/2009/10/14/6) and the conclusion was that silent
data corruption is worse. So, I am leaving the interface as defined in
this version of the patchset.
Arnd, Peter, Roland, do you have any thoughts on Albert's comments ?
Maybe we can define other API to set/clear clone flags like the sigset()
interface when we need more than 32 bit flags.
| It's easier to document the high flag case ("This flag requires
| the eclone system call.").
Hmm, with the current API, all newer flags will go into ->clone_flags_high.
so we would have to say something like:
CLONE_NEWFOO requires eclone() and must be set in ->clone_flags_high
field.
| than to document multiple sets
| of incompatible flags for one system call. I always curse
| the nasty multi-flagged mmap interface whenever I use it.
| If you're going to be concerned with flags getting truncated
| via improper use of the syscall, then you should be at least
| as concerned with flags getting passed in the wrong place.
| For example, one might pass all flags (high and low) in the
| struct. Somebody else might pass all flags in the parameters.
Maybe the sigset() like interface will help.
Sukadev
next prev parent reply other threads:[~2010-07-20 22:13 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-03 20:32 [PATCH 00/11][v15]: Implement eclone() system call Sukadev Bhattiprolu
[not found] ` <1278189164-28408-1-git-send-email-sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2010-07-03 20:32 ` [PATCH 01/11][v15]: Factor out code to allocate pidmap page Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 02/11][v15]: Have alloc_pidmap() return actual error code Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 03/11][v15]: Define set_pidmap() function Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 04/11][v15]: Add target_pids parameter to alloc_pid() Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 05/11][v15]: Add target_pids parameter to copy_process() Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 06/11][v15]: Check invalid clone flags Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 07/11][v15]: Define do_fork_with_pids() Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 08/11][v15]: Implement sys_eclone for x86 (32,64) Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 09/11][v15]: Implement sys_eclone for s390 Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 10/11][v15]: Implement sys_eclone for powerpc Sukadev Bhattiprolu
2010-07-03 20:32 ` [PATCH 11/11][v15]: Document sys_eclone Sukadev Bhattiprolu
[not found] ` <1278189164-28408-12-git-send-email-sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2010-07-03 23:41 ` Albert Cahalan
[not found] ` <AANLkTinM1jqG-9Mgbzft8bALGri7ZpzU9ZcPbMTe4fvW-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-04 23:39 ` Matt Helsley
[not found] ` <20100704233951.GK3338-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2010-07-05 0:45 ` Albert Cahalan
[not found] ` <AANLkTilTGvFTkjy8vi8N8msB7koEp0r7SnpPqJkVN4XA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-05 10:34 ` Arnd Bergmann
[not found] ` <201007051234.40943.arnd-r2nGTMty4D4@public.gmane.org>
2010-07-06 22:25 ` Sukadev Bhattiprolu
[not found] ` <20100706222554.GA7648-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-07-11 9:00 ` Albert Cahalan
[not found] ` <AANLkTilJMi8cXSlbG8towQFFAQpuuJjO9kDXWOfEu_EJ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-12 18:02 ` Matt Helsley
2010-07-12 21:54 ` Sukadev Bhattiprolu
[not found] ` <20100712215456.GA23721-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-07-13 6:48 ` Albert Cahalan
[not found] ` <AANLkTikXDsv9CoV_EU48bunLD1wCh3w7HVdpo84rJtJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-20 22:13 ` Sukadev Bhattiprolu [this message]
[not found] ` <20100720221357.GA2440-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-07-21 19:51 ` Albert Cahalan
2010-07-05 4:10 ` H. Peter Anvin
[not found] ` <4C315B42.1020201-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2010-07-06 4:11 ` Albert Cahalan
[not found] ` <AANLkTimWBFbcRyf5tvA9Lork13gAJtCAdUg_ZS3PzbI0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-06 15:14 ` Oren Laadan
2010-07-05 4:18 ` Oren Laadan
[not found] ` <4C315D2D.6000107-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2010-07-06 3:59 ` Albert Cahalan
[not found] ` <AANLkTinr_2u-_0S2UvMDc7hOE_JOVIOjGtVo9Tzuk21E-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-06 13:12 ` Serge E. Hallyn
2010-07-06 15:12 ` Oren Laadan
[not found] ` <4C3347CA.8060703-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2010-07-06 22:23 ` 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=20100720221357.GA2440@us.ibm.com \
--to=sukadev-23vcf4htsmix0ybbhkvfkdbpr1lh4cv8@public.gmane.org \
--cc=acahalan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=danms-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
--cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
--cc=nathanl-V7BBcbaFuwjMbYB6QlFGEg@public.gmane.org \
--cc=randy.dunlap-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org \
--cc=roland-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.