Date: Tue, 8 Oct 2002 15:03:24 -0700 From: Juli Mallett <jmallett@FreeBSD.org> To: Garrett Wollman <wollman@lcs.mit.edu> Cc: arch@FreeBSD.ORG Subject: Re: [jmallett@FreeBSD.org: [PATCH] Reliable signal queues, etc., [for review]] Message-ID: <20021008150324.A47084@FreeBSD.org> In-Reply-To: <200210051816.g95IGu7K026880@khavrinen.lcs.mit.edu>; from wollman@lcs.mit.edu on Sat, Oct 05, 2002 at 02:16:56PM -0400 References: <20021005002021.A14635@FreeBSD.org> <200210051816.g95IGu7K026880@khavrinen.lcs.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
* De: Garrett Wollman <wollman@lcs.mit.edu> [ Data: 2002-10-05 ] [ Subjecte: Re: [jmallett@FreeBSD.org: [PATCH] Reliable signal queues, etc., [for review]] ] > >The most notable change is that the most recently sent && lowest > >numbered signal is sent, in the normal course of events, rather than > >simply the lowest numbered or most recently sent. > > This still isn't right. Real-time signals are QUEUED -- i.e., signals > of the same species are delivered in FIFO, not LIFO, order. POSIX > further specifies that signal N will be delivered before signal N+k, > for SIGRTMIN <= N <= N+k <= SIGRTMAX. The relative delivery order of > any signals outside of this range is unspecified beyond the special > behavior of SIGCONT, SIGSTOP, and SIGKILL. OK, I'm reading through this stuff extensively. There's a number of kernel interfaces that I'd like to add, related to them, but first thing is to get the queueing in there, IMHO, so that the base functionality is there to be built on. sigqueue() for example is about 10LOC with this stuff, and adding 'si_errno' stuff (which I'll love to have around) is just a matter of 4 lines of code wherever it can be used, once I've added a supportable in-kernel abstraction of psignal that takes a ksi, and does the normal sanity checks. That will make psignal about 12LOC, given that there's about 2LOC more than sigqueue() needed, as most of that is allocation and filling out a structure. So assuming the FIFO behaviour is fixed, and that I also deliver the lowest available signal, and given that I plan to implement the above, do you have ny further objections? Other than the issue of the bitmask, which I see no easy and reliable method for getting around cleanly... And the failure cases. Would you settle for me using subr_sigq.c as my abstraction, and making actual queues optional, and having it use sigset_t under certain circumstances? It will add about 8LOC to every sendsig() to support pulling out the information when no ksiginfo is around. Thanks, juli. -- Juli Mallett <jmallett@FreeBSD.org> | FreeBSD: The Power To Serve Will break world for fulltime employment. | finger jmallett@FreeBSD.org http://people.FreeBSD.org/~jmallett/ | Support my FreeBSD hacking! To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021008150324.A47084>