From: Carsten Langgaard <carstenl@mips.com>
To: "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>
Cc: Ralf Baechle <ralf@oss.sgi.com>,
"linux-mips@oss.sgi.com" <linux-mips@oss.sgi.com>
Subject: Re: LTP testing
Date: Tue, 25 Jun 2002 16:18:48 +0200 [thread overview]
Message-ID: <3D187BC8.17765700@mips.com> (raw)
In-Reply-To: Pine.GSO.3.96.1020625154306.29623G-100000@delta.ds2.pg.gda.pl
"Maciej W. Rozycki" wrote:
> On Tue, 25 Jun 2002, Carsten Langgaard wrote:
>
> > The next LTP failure line is:
> > pipe05 1 BROK : Unexpected signal 11 received.
> >
> > For this one I haven't got a fix, because the failure is due to the way
> > the pipe syscall is implemented for MIPS (so we need a fix in both the
> > kernel and glibc).
> >
> > The glibc code look like this
> > SYSCALL__ (pipe, 1)
> > /* Plop in the two descriptors. */
> > sw v0, 0(a0)
> > sw v1, 4(a0)
> >
> > /* Go out with a clean status. */
> > move v0, zero
> > j ra
> > .end __pipe
> >
> > The problem is that the code is called with $a0 = 0. So the 'sw v0,
> > 0(a0)' after the syscall generates a segmentation fault.
>
> The test is broken and it's what should be fixed, instead -- several
> Linux platforms do it this way, e.g. Alpha and IA-64. A SIGSEGV is a
> valid response for an invalid address. Remember you test pipe(3) and not
> pipe(2).
I'm not sure that you mean by pipe(2) and pipe(3), but according to my man
page, pipe should return with EFAULT in this case.
ERRORS
EMFILE Too many file descriptors are in use by the pro
cess.
ENFILE The system file table is full.
EFAULT filedes is not valid.
>
>
> > Why are the pipe syscall implemented this way, where we return the two
> > descriptors in v0 and v1 ?
>
> For performance reasons. Also it's safer to do such actions from the
> userland.
>
> > Why doesn't the kernel do these stores (this way we can do an access
> > check, like i386 does) ?
>
> I suppose i386 does these stores in the kernel due to historical reasons.
> There is also the problem of a permanent lack of registers in i386 -- I
> haven't investigated it, but it may simply be unable to afford a second
> result register.
>
> --
> + Maciej W. Rozycki, Technical University of Gdansk, Poland +
> +--------------------------------------------------------------+
> + e-mail: macro@ds2.pg.gda.pl, PGP key available +
--
_ _ ____ ___ Carsten Langgaard Mailto:carstenl@mips.com
|\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527
| \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555
TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556
Denmark http://www.mips.com
next prev parent reply other threads:[~2002-06-25 14:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-25 13:21 LTP testing Carsten Langgaard
2002-06-25 13:53 ` Maciej W. Rozycki
2002-06-25 14:18 ` Carsten Langgaard [this message]
2002-06-25 14:56 ` Maciej W. Rozycki
2002-06-25 15:06 ` Carsten Langgaard
2002-06-25 15:28 ` Ralf Baechle
2002-06-25 14:28 ` Johannes Stezenbach
2002-06-25 14:39 ` Ralf Baechle
-- strict thread matches above, loose matches on Subject: below --
2002-06-25 10:47 Carsten Langgaard
2002-06-25 9:59 Carsten Langgaard
2002-06-25 12:07 ` Maciej W. Rozycki
2002-06-25 7:15 Carsten Langgaard
2002-06-25 13:59 ` Ralf Baechle
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=3D187BC8.17765700@mips.com \
--to=carstenl@mips.com \
--cc=linux-mips@oss.sgi.com \
--cc=macro@ds2.pg.gda.pl \
--cc=ralf@oss.sgi.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