From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Mike Frysinger <vapier@gentoo.org>
Cc: John David Anglin <dave.anglin@bell.net>,
Kyle McMartin <kyle@mcmartin.ca>,
"Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>,
linux-man <linux-man@vger.kernel.org>,
Kyle McMartin <kyle@infradead.org>, Helge Deller <deller@gmx.de>,
"James E.J. Bottomley" <jejb@parisc-linux.org>,
linux-parisc@vger.kernel.org
Subject: Re: [PATCH] man2 : syscall.2 : document syscall calling conventions
Date: Fri, 12 Apr 2013 12:14:47 -0700 [thread overview]
Message-ID: <1365794087.1934.50.camel@dabdike> (raw)
In-Reply-To: <201304121445.08948.vapier@gentoo.org>
On Fri, 2013-04-12 at 14:45 -0400, Mike Frysinger wrote:
> On Friday 12 April 2013 00:45:12 James Bottomley wrote:
> > On Thu, 2013-04-11 at 23:38 -0400, Mike Frysinger wrote:
> > > what do you think of this section for vdso(7) ? i might have to split
> > > the "real" vdso arches from these others since there's a couple now
> > > (arm, bfin, parisc), and i think there might be more down the line
> > > (microblaze).
> >
> > I've got to say, I really don't think this can be classified as a vdso.
> > For a vdso, the kernel exports an ELF object that can be linked
> > dynamically into any elf binary requiring it. The ELF section
> > information provides full details and so vdso entries can be called by
> > symbol.
>
> strictly speaking, sure, a vDSO is only a vDSO if it's an ELF (since the
> acronym is literally "virtual dynamic shared object"). however, i see the
> vdso as being a bit more of a flexible concept -- it's a place of shared code
> that the kernel manages and exports for all userspace processes.
> fundamentally, the point of the vDSO is to provide services to greatly speed
> up userspace. in that regard, these mapped pages are exactly like vDSOs.
I don't entirely understand this classification. If the kernel<->user
gateway becomes classified as a vdso, that covers our syscall interface
on every archtecture. There's now no distinction between a vdso (which
may not even move to kernel mode) and a syscall.
I think the difference is that a syscall is a specific call to a known
kernel routine by number and it involves a transition to kernel mode. A
vdso is an exported link object containing certain functions which may
or may not cause a trap to kernel mode when executed. The distinction
is how you do the call. For syscalls, you have to know the number and
the arguments. For vdso you just have to know the symbol (and
obviously, the prototype for C code) and the kernel supplies the
implementation direct to the userspace binary.
> thus i think it's appropriate to document these "fixed code" regions that many
> arches export (ARM, Blackfin, Itanium, Microblaze, PA-RISC) in the same man
> page as the vdso. especially since (currently) arches do one or the other,
> but not both.
I really see these as a type of lightweight syscall. You use the
syscall prototype (call by number with known arguments) but the call may
not necessarily transition to kernel mode proper to handle the function.
> > In the parisc gateway page implementation, we have a set of "hidden"
> > primitives which the executable must know how to call (no self
> > description like a vdso). This mechanism is identical to the original
> > intent of the x86 int <n> instruction (an instruction that traps into
> > the kernel and performs some primitive action but to use it, you have to
> > know which function corresponds to which value of <n>).
>
> would it be useful to document all of them ? or just the ones that userspace
> actively uses (like syscall/cas) ? or should all of this be recorded in the
> kernel's Documentation/parisc/ subdir and just have the man page refer people
> there (like it does for ARM & Blackfin currently) ?
I'm not sure. For x86 they're in include/asm/traps.h. I think the only
ones we really use are int3 for breakpoint, int4 for overflow and int80
for legacy syscall.
James
next prev parent reply other threads:[~2013-04-12 19:14 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-27 5:11 [PATCH] man2 : syscall.2 : add notes ch0.han-Hm3cg6mZ9cc
[not found] ` <1364361092-5948-1-git-send-email-ch0.han-Hm3cg6mZ9cc@public.gmane.org>
2013-03-27 7:53 ` (unknown), Changhee Han
2013-03-27 8:25 ` [PATCH v2] man2 : syscall.2 : add notes Changhee Han
2013-03-28 9:37 ` [PATCH] " Michael Kerrisk (man-pages)
2013-04-01 5:33 ` Changhee Han
[not found] ` <1364794429-20477-1-git-send-email-ch0.han-Hm3cg6mZ9cc@public.gmane.org>
2013-04-01 6:13 ` Mike Frysinger
[not found] ` <201304010213.06056.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01 6:22 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAki_8bOsuKTJLx3iMLeSvVXHo0bZf8zSUQ08RR7+D33xgQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01 7:19 ` Mike Frysinger
[not found] ` <201304010319.45019.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01 7:36 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAkhBASGvXGfdBSjpGaMuxoJofcQvZQrX3a=uxbcKQnXOAQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01 8:29 ` Mike Frysinger
[not found] ` <201304010429.45737.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01 9:29 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAkij3zDwakWvcRkRbknmV2Hpt4HWfH4uVqmxp+7gQek-2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01 10:32 ` Mike Frysinger
[not found] ` <201304010632.41520.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-02 6:54 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAkgG2kdCC1tyZQkYU7O_nP7RB8VoCmx6eb8FcudU1s6RgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-02 23:17 ` [PATCH] man2 : syscall.2 : document syscall calling conventions Mike Frysinger
2013-04-07 10:00 ` Michael Kerrisk (man-pages)
2013-04-07 13:55 ` Kyle McMartin
2013-04-07 14:56 ` James Bottomley
2013-04-07 15:11 ` Kyle McMartin
[not found] ` <20130407151134.GX12938-PfSpb0PWhxZc2C7mugBRk2EX/6BAtgUQ@public.gmane.org>
2013-04-07 15:38 ` James Bottomley
2013-04-08 9:18 ` Michael Kerrisk (man-pages)
[not found] ` <20130407135514.GW12938-PfSpb0PWhxZc2C7mugBRk2EX/6BAtgUQ@public.gmane.org>
2013-04-07 18:39 ` Mike Frysinger
2013-04-07 18:48 ` John David Anglin
[not found] ` <BLU0-SMTP986B123D17DB8B88214F797C40-MsuGFMq8XAE@public.gmane.org>
2013-04-08 9:20 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAkhv6tovvnucoofDR-eOe4H7xeFZDam9+iaVVndEqbuoXg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-12 1:40 ` Mike Frysinger
[not found] ` <201304112140.18506.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-16 6:01 ` Michael Kerrisk (man-pages)
2013-04-12 1:55 ` Mike Frysinger
[not found] ` <201304112155.46349.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-12 2:34 ` John David Anglin
2013-04-12 3:38 ` Mike Frysinger
2013-04-12 4:45 ` James Bottomley
2013-04-12 12:17 ` John David Anglin
2013-04-12 18:45 ` Mike Frysinger
2013-04-12 19:14 ` James Bottomley [this message]
2013-04-12 19:46 ` Mike Frysinger
2013-04-12 20:25 ` James Bottomley
2013-04-12 14:01 ` Kyle McMartin
[not found] ` <CAKgNAkgODPSWSeA8ZymiAjFBqSAZQMtQe9GW84Y6QHdFEc9S-w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-07 18:43 ` Mike Frysinger
2013-04-01 8:37 ` [PATCH] man2 : syscall.2 : add notes Mike Frysinger
[not found] ` <201304010437.52901.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01 9:30 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAkit-qRPErHDzGEJ_yedA+O97bFxDsqWJMZOhCZ9DPvOtw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01 10:09 ` Mike Frysinger
2013-04-01 7:05 ` Fw : Re : " 한창희
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=1365794087.1934.50.camel@dabdike \
--to=james.bottomley@hansenpartnership.com \
--cc=dave.anglin@bell.net \
--cc=deller@gmx.de \
--cc=jejb@parisc-linux.org \
--cc=kyle@infradead.org \
--cc=kyle@mcmartin.ca \
--cc=linux-man@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
--cc=vapier@gentoo.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).