Date: Fri, 08 Sep 2000 16:33:01 -0700 From: Jake Burkholder <jburkhol@home.com> To: Daniel Eischen <eischen@vigrid.com> Cc: Alfred Perlstein <bright@wintelcom.net>, smp@FreeBSD.ORG Subject: Re: SMPng: catching signals and mutexes. Message-ID: <20000908233301.D27EBBA6D@io.yi.org> In-Reply-To: Message from Daniel Eischen <eischen@vigrid.com> of "Fri, 08 Sep 2000 15:48:18 EDT." <Pine.SUN.3.91.1000908154525.10025A@pcnet1.pcnet.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Fri, 8 Sep 2000, Alfred Perlstein wrote: > > There seems to be no way to specify that a signal is to interrupt > > a wait on a mutex, I'm wondering if we should make it possible to > > do so. > > [...] > > > I'm not sure I like this at all, shouldn't there be an > > mtx_enter with some option to return an error if a signal > > arrives? > > IMHO, yes. Solaris has cv_wait_sig() for just that. > Mutexes are meant to serve a different purpose than tsleep or condition variables. The next thing in line is to add a mutex argument to tsleep, which will be atomicly released and re-acquired upon resume. The code in question might then look like: mtx_enter(&sb->sb_mtx, MTX_DEF); while (sb->sb_flags & SB_LOCK) { sb->sb_flags |= SB_WANT; error = tsleep((caddr_t)&sb->sb_flags, sb->sb_mtx, (sb->sb_flags & SB_NOINTR) ? PSOCK : PSOCK|PCATCH, "sblock", 0); if (error) { mtx_exit(sb->sb_mtx, MTX_DEF); return (error); } } sb->sb_flags |= SB_LOCK; mtx_exit(sb->sb_mtx, MTX_DEF); Jake To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000908233301.D27EBBA6D>