2000-11-03 19:44:01

by george

[permalink] [raw]
Subject: Re: Can EINTR be handled the way BSD handles it? -- a plea from a user-land

Tim Hockin wrote:
>
> > Considering that the threading library for Linux uses signals to make it
> > work, would it be possible to change the Linux kernel to operate the way
> > BSD does--instead of returning EINTR, just restart the interrupted
> > primitive?
>
> man sigaction, look for SA_RESTART

Thanks for the info.

After looking at it, let me modify my position a bit.

My problem is that pthread_create (glibc 2.1.3, kernel 2.2.17 i686) is
failing because, deep inside glibc somewhere, nanosleep() is returning
EINTR.

My code is not using signals. The threading library is, and there is
obviously some subtle bug going on here. Ever wonder why when browsing
with Netscape and you click on a link and it says "Interrupted system
call."? This is it. I'm arguing that the default behaviour should be
SA_RESTART, and if some programmer is so studly that they actually know
what the hell they are doing by disabling SA_RESTART, then they can do
it explicitly.

I don't mean this to sound like a rant. It's just that I can't possibly
ascertain why someone in their right mind would want any behaviour
different than SA_RESTART.
--
George T. Talbot
<george at moberg dot com>