Date: Tue, 11 Mar 1997 16:41:10 +0000 From: Brian Somers <brian@shift.lan.awfulhak.org> To: Bruce Evans <bde@zeta.org.au> Cc: ache@nagual.ru, brian@awfulhak.demon.co.uk, brian@utell.co.uk, current@freebsd.org Subject: Re: ppp Message-ID: <199703111641.QAA27876@shift.lan.awfulhak.org> In-Reply-To: Your message of "Wed, 12 Mar 1997 03:16:27 %2B1100." <199703111616.DAA20223@godzilla.zeta.org.au>
next in thread | previous in thread | raw e-mail | index | archive | help
> >&= ~ isn't guaranteed atomic ? Yeuch. I'd tend to go with Andrey's > > Nothing is guaranteed to be atomic in C. The closest it gets is > objects of type sig_atomic_t, which can safely be set (but not read) > in signal handlers. Oh boy, I've written *lots* of code in the past that assumes ++ and -- to be atomic - I kinda assumed that it had to reduce to an inc or dec, but then, I've seen some of the assembler output by gcc before - and it's the best compiler I've seen. Oh well, you learn something new..... > >suggestion that I use an int array rather than a bit array. I assume > >that ++ and -- are guaranteed to be atomic (if they're not, I'm in *lots* > >of trouble). > > No, ++ and -- guaranteed to be atomic. They are good candidates for > splitting up into read/modify/write so that they can be pipelined better. > In practice, the i386 version of gcc is usually too stupid to do this. > > The kernel handles the corresponding problems for interrupts by using > assembler code to get instructions that are known to be atomic. It > could also use some form of locking, but locking tends to be slower. > Kernel locking using splhigh()/splx() corresponds exactly to > sigprocmask(SIG_BLOCK...)/sigprocmask(SIG_SETMASK...). > > Bruce I think the sigprocmask stuff is impractical. It would take a relatively long time to SIG_BLOCK all the signals before altering caused each time. I'll do without. The only thing that can happen as a result is a lost signal, and that's what I'd get on a slow machine anyway. At least the code will be handling practically all latencies introduced by the pending signal. -- Brian <brian@awfulhak.demon.co.uk> <brian@freebsd.org> <http://www.awfulhak.demon.co.uk> Don't _EVER_ lose your sense of humour !
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703111641.QAA27876>