bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 09/15] Hurd signals: implement global signal dispositions


From: Samuel Thibault
Subject: Re: [PATCH 09/15] Hurd signals: implement global signal dispositions
Date: Wed, 6 Jul 2011 01:09:27 +0200
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

Jeremie Koenig, le Tue 05 Jul 2011 05:15:28 +0200, a écrit :
> > These should probably be made extern inline.
> 
> I agree as far as internal libc usage is concerned.

Yes.  I wasn't meaning extern inline to outside libc. "extern inline"
precisely means that we also provide the symbol, for those who don't
have the definition :)

>   - sigstate_is_global_rcv and sigstate_clear_pending are static
>     functions, which I think gcc will inline if appropriate;

Yes for sigstate_clear_pending, sigstate_is_global_rcv is used in other
"to be inlined?" functions.

>   - _hurd_sigstate_actions is not actually exported by hurd/Versions.
>   - _hurd_sigstate_lock/unlock use _hurd_global_sigstate, which is not
>     exported either.

Not a problem, we can still add an internal extern inline definition.

It doesn't matter much anyway, it's just an optimization.

> > > @@ -210,7 +211,7 @@ set_int (int which, int value)
> > >        /* These are pretty odd things to do.  But you asked for it.  */
> > >      case INIT_SIGMASK:
> > >        {
> > > - struct hurd_sigstate *ss = _hurd_thread_sigstate (_hurd_sigthread);
> > > + struct hurd_sigstate *ss = _hurd_global_sigstate;
> > >   __spin_lock (&ss->lock);
> > >   ss->blocked = value;
> > >   __spin_unlock (&ss->lock);
> > 
> > Likewise.
> 
> The only straightforward way to fix this that I can see would be to
> reinstate _hurd_sigthread (maybe as "_hurd_mainthread"), so that we can
> distinguish the main thread from other global signal receivers (in the
> libpthread case).
> 
> Or maybe we could drop this and let them return EINVAL?

I've never seen it used actually. Roland?

> > The SA_ONSTACK logic remains the same.  I believe this is right.  In
> > the Hurd semantic case your patch does not change the behavior.  In the
> > POSIX semantic all threads share the SA_ONSTACK logic.  This is what
> > POSIX says for signals.  I don't think it is a problem for preemptors.
> 
> I was worried about a case where the user would install a minuscule
> stack, sufficient for their own handler, but not for a preemptor's one.

I believe the user is not supposed to know how much the kernel & libc
will need on the stack to handle signals.

Samuel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]