Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!lll-lcc!unisoft!cerebus!fai!wjvax!brett
From: brett@wjvax.UUCP (Brett Galloway)
Newsgroups: comp.unix.wizards
Subject: Re: No more signals
Message-ID: <967@wjvax.wjvax.UUCP>
Date: Thu, 9-Jul-87 22:14:12 EDT
Article-I.D.: wjvax.967
Posted: Thu Jul  9 22:14:12 1987
Date-Received: Tue, 14-Jul-87 01:47:37 EDT
References: <48300005@hcx1> <1714@munnari.oz> <492@its63b.ed.ac.uk> <1216@ius2.cs.cmu.edu>
Reply-To: brett@wjvax.UUCP (Brett Galloway)
Organization: Watkins-Johnson Co., San Jose, Calif.
Lines: 30

In article <1216@ius2.cs.cmu.edu> edw@ius2.cs.cmu.edu (Eddie Wyatt) writes:
>In article <492@its63b.ed.ac.uk>, simon@its63b.ed.ac.uk (Simon Brown) writes:
>> ... If I send 5 SIGINT signals to a
>> process, there is no guarentee that that process will receive them all - ok,
>> it will certainly receive at least one, but whether it receives 2,3,4 or 5
>> is pretty much left to chance!
>  This really isn't a bug as far as I know.  The documentation for signal
>and sigvec specifically say that the interrupt causing the interrupt
>handler to be called is mask out during the time the interrupt handler
>is executing and then restored  at the end of the call.  If any of
>those interrupts come during the time the interrupt handler is
>called then they are lost, simple is that ...

I was under the impression that signals were *blocked*, not
ignored, during the signal handler.  Thus, if a signal arrives
during the time the interrupt handler is called, it is blocked
until the handler returns, at which time the handler is invoked
*again*.  Signal blocking is what makes Berkeley signals
"reliable".

However, Berekely signals are not queued (unlike, as I understand
it, SIGCLD in SYSV).  This is why the user often needs a secondary
mechanism (such as wait3(2) for SIGCHLD or select(2) for SIGIO)
to process a signal.  As is evident, Berkeley signals operate
conceptually just like hardware interrupts.

-- 
-------------
Brett Galloway
{pesnta,twg,ios,qubix,turtlevax,tymix,vecpyr,certes,isi}!wjvax!brett