lkml.org 
[lkml]   [1998]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: sleep ignore sigchld


On Mon, 16 Nov 1998, H. J. Lu wrote:
>
> That is a kernel bug. SIGCHLD is a special one. Usually it cannot
> be ignored. The older libc. Solaris and Hp-UX use alarm/pause to
> implement sleep. It goes back to sleep when SIGCHLD arrives if
> SIGCHLD is ignored. The problem is glibc uses nanosleep to implement
> sleep. The bug is in nanosleep in kernel. I don't think nanosleep
> should wake up when SIGCHLD arrives if SIGCHLD is ignored. We have
> to treat SIGCHLD specially for nanosleep.

No can do.

"nanosleep()" is implemented in a bad way that makes it impossible to
restart it cleanly. It was done that way because glibc wanted it that way,
not because it's a good idea.

In order to handle ignored interrupts without breaking out, the system
call has to be restartable - which means that any timeouts are updated
correctly in the source or in registers. "nanosleep()" doesn't do that.

This is an example of a bad interface, and I would suggest glibc just
revert to the old code for sleep which _is_ restartable.

Linus


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:45    [W:0.024 / U:0.172 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site