From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53644) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZsBoD-0003Sm-LV for qemu-devel@nongnu.org; Fri, 30 Oct 2015 11:41:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZsBoA-0004ov-DA for qemu-devel@nongnu.org; Fri, 30 Oct 2015 11:41:41 -0400 Date: Fri, 30 Oct 2015 15:41:35 +0000 From: Stefan Hajnoczi Message-ID: <20151030154135.GA16864@stefanha-x1.localdomain> References: <1446044465-19312-1-git-send-email-den@openvz.org> <1446044465-19312-2-git-send-email-den@openvz.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="mP3DRpeJDSE+ciuQ" Content-Disposition: inline In-Reply-To: <1446044465-19312-2-git-send-email-den@openvz.org> Subject: Re: [Qemu-devel] [PATCH 1/4] fifolock: create rfifolock_is_locked helper List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Denis V. Lunev" Cc: Paolo Bonzini , qemu-devel@nongnu.org, qemu-stable@nongnu.org --mP3DRpeJDSE+ciuQ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Oct 28, 2015 at 06:01:02PM +0300, Denis V. Lunev wrote: > +int rfifolock_is_locked(RFifoLock *r); Please use bool instead of int. > diff --git a/util/rfifolock.c b/util/rfifolock.c > index afbf748..8ac58cb 100644 > --- a/util/rfifolock.c > +++ b/util/rfifolock.c > @@ -48,7 +48,7 @@ void rfifolock_lock(RFifoLock *r) > /* Take a ticket */ > unsigned int ticket =3D r->tail++; > =20 > - if (r->nesting > 0 && qemu_thread_is_self(&r->owner_thread)) { > + if (r->nesting > 0 && rfifolock_is_locked(r)) { > r->tail--; /* put ticket back, we're nesting */ > } else { > while (ticket !=3D r->head) { > @@ -69,10 +69,15 @@ void rfifolock_unlock(RFifoLock *r) > { > qemu_mutex_lock(&r->lock); > assert(r->nesting > 0); > - assert(qemu_thread_is_self(&r->owner_thread)); > + assert(rfifolock_is_locked(r)); > if (--r->nesting =3D=3D 0) { > r->head++; > qemu_cond_broadcast(&r->cond); > } > qemu_mutex_unlock(&r->lock); > } > + > +int rfifolock_is_locked(RFifoLock *r) > +{ > + return qemu_thread_is_self(&r->owner_thread); > +} The function name confused me since "does the current thread hold the lock?" !=3D "does anyone currently hold the lock?". I suggest: bool rfifolock_held_by_current_thread(RFifoLock *r) { return r->nesting > 0 && qemu_thread_is_self(&r->owner_thread); } Then the r->nesting > 0 testing can also be dropped by callers, which is good since rfifolock_is_locked() does not return a meaningful result when r->nesting =3D=3D 0. --mP3DRpeJDSE+ciuQ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJWM4+vAAoJEJykq7OBq3PIf7wIALtjlzfgqcqe94mYi5Lsl4uA /UwkgjNCr2+XgIjAdXOeSpTpiQcbAzUSW9DaXHPJ324stP0l6PuuHmU2AY3Ov50W k/AHBz8Uts+SQJmY3Vj3d6cqwf5rLkQ2OEbyuWshwnkOfoyOihA2vHuZ4OwEOgG2 luE7l6VqZ+frSw7PAkaHrVCM8io6YwkZKr+CbXTPQ8ShXZ7Lcx+AXO7JdQxVT/KO bvfqKM1DM8xDs4kELhRQzD2UlBukwk8yjG/meW7J3Ss6ud3ooa2L+nzI/NqqCWi9 V2jRXvmUi6ebJa5hnYfSzJB8SCAS0C6MiK6vgQ2OcPhe+cArp9n1EFcpSW692Oc= =qCXC -----END PGP SIGNATURE----- --mP3DRpeJDSE+ciuQ--