linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Kerrisk <mtk.manpages-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
To: Matt Helsley <matthltc-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Cc: "H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>,
	Sukadev Bhattiprolu
	<sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
	randy.dunlap-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org,
	arnd-r2nGTMty4D4@public.gmane.org,
	Containers
	<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	Nathan Lynch <nathanl-V7BBcbaFuwjMbYB6QlFGEg@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Louis.Rilling-aw0BnHfMbSpBDgjK7y7TUQ@public.gmane.org,
	"Eric W. Biederman"
	<ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>,
	kosaki.motohiro-+CUm20s59erQFUHtdCDX3A@public.gmane.org,
	mingo-X9Un+BFzKDI@public.gmane.org,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	Alexey Dobriyan
	<adobriyan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	roland-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	Pavel Emelyanov <xemul-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
Subject: Re: [RFC][v8][PATCH 9/10]: Define clone3() syscall
Date: Wed, 21 Oct 2009 06:26:16 +0200	[thread overview]
Message-ID: <cfd18e0f0910202126w1ebfa2e2u2ecbaa23b198d100@mail.gmail.com> (raw)
In-Reply-To: <20091019235012.GF27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>

On Tue, Oct 20, 2009 at 1:50 AM, Matt Helsley <matthltc-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> wrote:
> On Tue, Oct 20, 2009 at 06:31:20AM +0900, H. Peter Anvin wrote:
>> On 10/20/2009 02:44 AM, Matt Helsley wrote:
>>>> |
>>>> | I know I'm late to this discussion, but why the name clone3()? It's
>>>> | not consistent with any other convention used fo syscall naming,
>>
>> This assumption, of course, is just plain wrong.  Look at the wait
>> system calls, for example.  However, when a small integer is used like
>> that, it pretty much always reflects numbers of arguments.
>>
>>>> | AFAICS. I think a name like clone_ext() or clonex() (for extended)
>>>> | might make more sense.
>>>>
>>>> Sure, we talked about calling it clone_extended() and I can go back
>>>> to that.
>>>>
>>>> Only minor concern with that name was if this new call ever needs to
>>>> be extended, what would we call it :-). With clone3() we could add a
>>>> real/fake parameter and call it clone4() :-p
>>>
>>> Perhaps clone64 (somewhat like stat64 for example)?
>>>
>>
>> I think that doesn't exactly reflect the nature of the changes.
>
> Yes. Without adopting an impractical encoding scheme it's quite
> unlikely a small number like 3 or 64 could exactly reflect all the
> changes :). I don't think that's a realistic objection though so...
>
>> clone3() is actually pretty good.
>
> I agree.

My question here is: what does "3" actually mean? In general, system
calls have not followed any convention of numbering to indicate
successive versions -- clone2() being the one possible exception that
I know of.

The only other conventions used for numbering new versions of system
calls relates either to arguments size (e.g., 32 versus 64) or to
their number number of arguments (dup2(), dup3(), wait3(), wait4(),
accept4(), eventfd2(), inotify_init1(), epoll_create1(), evetfd2(),
signalfd4()). The former convention makes some sense, but the latter
is rather questionable, for a couple of reasons. One is that the
number of arguments for the system call may change in the future
(several of the newer system calls have a flags argument which could
be used to indeicate the presence of an additional, optional
argument). Another reason that the latter convention is questionable
is that the number of arguments exposed to userspace by glibc may be
different from the number of arguments in the raw syscall. For
example, signafd4() has 4 arguments, but the glibc interface
(signalfd() http://www.kernel.org/doc/man-pages/online/pages/man2/signalfd.2.html)
has 3.

Using the name clone3() follows no historical convention, which is why
it seems unwise to me. Thus my suggestion of clonex() (like e.g.,
adjtimex()), though quite possibly there could be some better name.

Sukadev, you wrote "With clone3() we could add areal/fake parameter
and call it clone4()". This rasies for me the question: should
clone3() have a flags argument, so as to allow these types of
extensions (i.e., not for clone flags, but rather to indicate changes
in the system call interface). Yes, I understand there is a 64-bit
flags in 'struct clone_struct', but I wonder whether there is any
virtue in having an additional flags argument in the base signature of
the function, as per the following:
http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html
http://www.kernel.org/doc/man-pages/online/pages/man2/signalfd4.2.html
http://www.kernel.org/doc/man-pages/online/pages/man2/eventfd2.2.html
see also
http://linux-man-pages.blogspot.com/2008/10/recent-changes-in-file-descriptor.html

By the way, one further thought: why "struct clone_struct"? We know
it's a struct. Therefore, it seems pointless to include that in the
name. Something like "struct clone_args" would seem less redundant and
slightly more meaningful as a name.

Cheers,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface" http://blog.man7.org/

  parent reply	other threads:[~2009-10-21  4:26 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-13  4:49 [RFC][v8][PATCH 0/10] Implement clone3() system call Sukadev Bhattiprolu
     [not found] ` <20091013044925.GA28181-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-13  4:49   ` [RFC][v8][PATCH 1/10]: Factor out code to allocate pidmap page Sukadev Bhattiprolu
2009-10-13  4:50   ` [RFC][v8][PATCH 2/10]: Have alloc_pidmap() return actual error code Sukadev Bhattiprolu
2009-10-13  4:50   ` [RFC][v8][PATCH 3/10]: Make pid_max a pid_ns property Sukadev Bhattiprolu
     [not found]     ` <20091013045041.GC28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-13  5:19       ` Alexey Dobriyan
2009-10-13 13:09       ` Pavel Emelyanov
     [not found]         ` <4AD47C1F.7040703-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2009-10-13 15:24           ` Serge E. Hallyn
2009-10-13 16:10             ` Pavel Emelyanov
2009-10-13 16:28               ` Serge E. Hallyn
2009-10-13  4:51   ` [RFC][v8][PATCH 4/10]: Add target_pid parameter to alloc_pidmap() Sukadev Bhattiprolu
     [not found]     ` <20091013045104.GD28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-13 11:50       ` Pavel Emelyanov
     [not found]         ` <4AD46977.5020303-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2009-10-15  0:24           ` Sukadev Bhattiprolu
2009-10-13  4:51   ` [RFC][v8][PATCH 5/10]: Add target_pids parameter to alloc_pid() Sukadev Bhattiprolu
2009-10-13  4:52   ` [RFC][v8][PATCH 6/10]: Add target_pids parameter to copy_process() Sukadev Bhattiprolu
2009-10-13  4:52   ` [RFC][v8][PATCH 7/10]: Check invalid clone flags Sukadev Bhattiprolu
     [not found]     ` <20091013045234.GG28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-13 18:35       ` Oren Laadan
     [not found]         ` <4AD4C88D.7040008-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-13 23:38           ` Sukadev Bhattiprolu
2009-10-13  4:52   ` [RFC][v8][PATCH 8/10]: Define do_fork_with_pids() Sukadev Bhattiprolu
2009-10-13  4:54   ` [RFC][v8][PATCH 9/10]: Define clone3() syscall Sukadev Bhattiprolu
     [not found]     ` <20091013045439.GI28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-13 18:46       ` Oren Laadan
2009-10-16  4:20       ` Sukadev Bhattiprolu
     [not found]         ` <20091016042041.GA7220-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-16  6:25           ` Michael Kerrisk
     [not found]             ` <cfd18e0f0910152325m4a9125c2q18f36f5bd7d4a0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-16 18:06               ` Sukadev Bhattiprolu
     [not found]                 ` <20091016180631.GA31036-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-19 17:44                   ` Matt Helsley
     [not found]                     ` <20091019174405.GE27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-10-19 21:31                       ` H. Peter Anvin
     [not found]                         ` <4ADCDAA8.5080408-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-10-19 23:50                           ` Matt Helsley
     [not found]                             ` <20091019235012.GF27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-10-21  4:26                               ` Michael Kerrisk [this message]
2009-10-21 13:03                                 ` H. Peter Anvin
     [not found]                                   ` <4ADF06B7.50508-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-10-21 19:44                                     ` Sukadev Bhattiprolu
2009-10-21 22:03                                       ` H. Peter Anvin
     [not found]                                       ` <20091021194440.GA1283-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-22 10:40                                         ` Michael Kerrisk
     [not found]                                           ` <cfd18e0f0910220340n7c655daap78e395136c56f882-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-22 18:10                                             ` Sukadev Bhattiprolu
2009-10-22 10:26                                   ` Michael Kerrisk
2009-10-22 11:38                                     ` H. Peter Anvin
2009-10-22 12:14                                       ` Michael Kerrisk
     [not found]                                         ` <cfd18e0f0910220514y1bd5967aj3a04bc3f5b38948b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-22 12:19                                           ` H. Peter Anvin
2009-10-22 13:57                                           ` Matt Helsley
2009-10-13  4:55   ` [RFC][v8][PATCH 10/10]: Document " Sukadev Bhattiprolu
     [not found]     ` <20091013045556.GJ28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-14 12:26       ` Arnd Bergmann
     [not found]         ` <200910141426.35338.arnd-r2nGTMty4D4@public.gmane.org>
2009-10-14 18:39           ` Sukadev Bhattiprolu
2009-10-19 21:36       ` Pavel Machek
     [not found]         ` <20091019213636.GB1482-+ZI9xUNit7I@public.gmane.org>
2009-10-21  8:37           ` Arnd Bergmann
2009-10-21  9:33             ` Pavel Machek
     [not found]               ` <20091021093338.GA11670-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2009-10-21 13:26                 ` Arnd Bergmann
     [not found]                   ` <200910211526.50584.arnd-r2nGTMty4D4@public.gmane.org>
2009-10-21 19:09                     ` Pavel Machek
2009-10-21 18:27           ` Sukadev Bhattiprolu
2009-10-13 20:50   ` [RFC][v8][PATCH 0/10] Implement clone3() system call Roland McGrath
     [not found]     ` <20091013205015.1ED524F7-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
2009-10-13 23:27       ` Sukadev Bhattiprolu
     [not found]         ` <20091013232736.GA24392-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-13 23:53           ` Roland McGrath
     [not found]             ` <20091013235320.E90022746-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
2009-10-14  1:13               ` H. Peter Anvin
     [not found]                 ` <4AD525B3.2070906-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-10-14  4:36                   ` Sukadev Bhattiprolu
     [not found]                     ` <20091014043607.GA32114-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-14  4:38                       ` H. Peter Anvin
2009-10-14 22:36                   ` Sukadev Bhattiprolu
     [not found]                     ` <20091014223634.GB3515-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-14 22:49                       ` H. Peter Anvin
     [not found]                         ` <4AD6557D.3090501-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-10-15  0:17                           ` Sukadev Bhattiprolu
2009-10-13 23:49   ` H. Peter Anvin
     [not found]     ` <4AD511F1.7010207-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-10-14  1:39       ` Matt Helsley
     [not found]         ` <20091014013936.GC27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-10-14  2:24           ` H. Peter Anvin
     [not found]             ` <4AD5365E.5090709-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-10-14  4:40               ` Sukadev Bhattiprolu
     [not found]                 ` <20091014044035.GB32114-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-14  4:50                   ` H. Peter Anvin
2009-10-14 16:07                   ` Serge E. Hallyn
2009-10-16 19:22 ` Daniel Lezcano
     [not found]   ` <4AD8C7E4.9000903-GANU6spQydw@public.gmane.org>
2009-10-16 19:44     ` Sukadev Bhattiprolu
     [not found]       ` <20091016194451.GA28706-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-19 20:34         ` Daniel Lezcano
     [not found]           ` <4ADCCD68.9030003-GANU6spQydw@public.gmane.org>
2009-10-19 21:47             ` Oren Laadan
2009-10-20  0:51               ` Matt Helsley
     [not found]                 ` <20091020005125.GG27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-10-20  3:33                   ` Eric W. Biederman
     [not found]                     ` <m1vdiad9jd.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2009-10-20  4:03                       ` Sukadev Bhattiprolu
     [not found]                         ` <20091020040315.GA26632-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-20 10:46                           ` Eric W. Biederman
     [not found]                             ` <m1iqeauyvl.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2009-10-20 14:16                               ` Serge E. Hallyn
2009-10-20 18:33                               ` Sukadev Bhattiprolu
     [not found]                                 ` <20091020183329.GB22646-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-20 19:26                                   ` Eric W. Biederman
     [not found]                                     ` <m1r5sxsw7w.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2009-10-20 20:13                                       ` Oren Laadan
2009-10-21  6:20                                       ` Sukadev Bhattiprolu
     [not found]                                         ` <20091021062021.GA2667-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-21  9:16                                           ` Eric W. Biederman
     [not found]                                             ` <m1eioxrtsb.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2009-10-21 18:52                                               ` Sukadev Bhattiprolu
     [not found]                                                 ` <20091021185242.GB12955-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-21 21:11                                                   ` Eric W. Biederman
2009-10-23  0:42                                               ` Sukadev Bhattiprolu
     [not found]                                                 ` <20091023004253.GA7915-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-23  1:03                                                   ` Eric W. Biederman
2009-10-23  5:30                                                     ` Sukadev Bhattiprolu
     [not found]                                                       ` <20091023053001.GA24972-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-23  5:44                                                         ` Eric W. Biederman
     [not found]                                                           ` <m1ws2mpsuk.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2009-10-23 19:21                                                             ` Sukadev Bhattiprolu
     [not found]                                                               ` <20091023192124.GA11088-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-23 20:48                                                                 ` Sukadev Bhattiprolu
     [not found]                                                                   ` <20091023204812.GA26524-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-23 23:26                                                                     ` Eric W. Biederman
     [not found]                                                                       ` <m1y6n1lmk7.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2009-10-24  3:38                                                                         ` Sukadev Bhattiprolu
2009-10-23 19:16                                                         ` Oren Laadan
     [not found]                                                           ` <4AE20124.4010108-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-23 19:34                                                             ` Oren Laadan
     [not found]                                                               ` <4AE20532.6060809-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-23 23:12                                                                 ` Eric W. Biederman
2009-10-20 14:09                       ` Serge E. Hallyn
     [not found]               ` <4ADCDE7F.4090501-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-21 15:53                 ` Daniel Lezcano
     [not found]                   ` <4ADF2E75.1020801-GANU6spQydw@public.gmane.org>
2009-10-21 18:45                     ` Oren Laadan
     [not found]                       ` <4ADF56D4.8030405-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-22 11:22                         ` Daniel Lezcano

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=cfd18e0f0910202126w1ebfa2e2u2ecbaa23b198d100@mail.gmail.com \
    --to=mtk.manpages-gm/ye1e23mwn+bqq9rbeug@public.gmane.org \
    --cc=Louis.Rilling-aw0BnHfMbSpBDgjK7y7TUQ@public.gmane.org \
    --cc=adobriyan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
    --cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
    --cc=kosaki.motohiro-+CUm20s59erQFUHtdCDX3A@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=matthltc-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
    --cc=mingo-X9Un+BFzKDI@public.gmane.org \
    --cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@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=sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
    --cc=torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=xemul-GEFAQzZX7r8dnm+yROfE0A@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).