public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk@arm.linux.org.uk>
To: "christophe barbé" <christophe.barbe@lineo.fr>
Cc: linux-kernel@vger.kernel.org
Subject: Re: How should nano_sleep be fixed (was: ptrace(), fork(), sleep(), exit(), SIGCHLD)
Date: Thu, 16 Aug 2001 17:12:48 +0100	[thread overview]
Message-ID: <20010816171248.E30202@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20010813093116Z270036-761+611@vger.kernel.org> <20010814092849.E13892@pc8.lineo.fr> <20010814201825Z270798-760+1687@vger.kernel.org> <3B7A9953.744977A5@mvista.com> <3B7AB93D.F8B5B455@mvista.com> <3B7B1B07.A9FB293B@mvista.com> <20010816121746.A5861@pc8.lineo.fr> <20010816112905.A30202@flint.arm.linux.org.uk> <20010816180010.A9235@pc8.lineo.fr>
In-Reply-To: <20010816180010.A9235@pc8.lineo.fr>; from christophe.barbe@lineo.fr on Thu, Aug 16, 2001 at 06:00:10PM +0200

On Thu, Aug 16, 2001 at 06:00:10PM +0200, christophe barbé wrote:
> Le jeu, 16 aoû 2001 12:29:05, Russell King a écrit :
> > Note also that this is bogus as an architecture invariant.
> > 
> > On ARM, we have to pass a pt_regs pointer into any function that requires
> > it.
> 
> I'm not sure to understand your point.

Its quite simple:

int sys_foo(struct pt_regs regs)
{
}

does not reveal the user space registers on ARM.  It instead reveals crap.
Why?  The ARM procedure call standard specifies that the first 4 words
of "regs" in this case are in 4 processor registers.  The other words
are on the stack immediately above the frame created by foo.  This is
not how the stack is layed out on ARM on entry to a sys_* function
due to the requirement for these to be restartable.

Instead, we must pass a pointer thusly:

int sys_foo(struct pt_regs *regs)
{
}

and the pointer is specifically setup and passed in by a very small
assembler wrapper.

> The first sentence tell me that the "struct pt_regs ..." line is x86
> specific and this was the reason behind my proposition to not add a _signal
> macro but a  _sys_nanosleep macro to include this too.

Correct.  But the act of getting "struct pt_regs" on entry to the function
is also architecture specific.

> The second sentence seem's to indicate that this is a classic problem for
> the ARM port. So if this is correct what is the best way to solve it ?

It used to be with such functions as sys_execve.  Then, sys_execve
became an architecture specific wrapper around do_execve (not by my
hand), so I guess that its not an ARM specific problem.

--
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html


  reply	other threads:[~2001-08-16 16:12 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-13  8:29 ptrace(), fork(), sleep(), exit(), SIGCHLD Bruce Janson
2001-08-14  7:28 ` christophe barbé
2001-08-14 15:06   ` Bruce Janson
2001-08-15 15:46     ` george anzinger
2001-08-15 17:53       ` george anzinger
2001-08-15 18:02       ` george anzinger
2001-08-16  0:59         ` How should nano_sleep be fixed (was: ptrace(), fork(), sleep(), exit(), SIGCHLD) george anzinger
2001-08-16 10:17           ` christophe barbé
2001-08-16 10:29             ` Russell King
2001-08-16 14:16               ` george anzinger
2001-08-16 16:00               ` christophe barbé
2001-08-16 16:12                 ` Russell King [this message]
2001-08-16 18:17                   ` george anzinger
2001-08-17 18:25                     ` george anzinger
2001-08-17 18:57                       ` Victor Yodaiken
2001-08-17 19:56                         ` george anzinger
2001-08-22 18:40                           ` Russell King
2001-08-23 20:04                             ` george anzinger
2001-08-23 20:11                               ` Russell King
2001-08-23 21:13                                 ` george anzinger

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=20010816171248.E30202@flint.arm.linux.org.uk \
    --to=rmk@arm.linux.org.uk \
    --cc=christophe.barbe@lineo.fr \
    --cc=linux-kernel@vger.kernel.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