From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH v2 6/8] kvm tools: Add rwlock wrapper Date: Mon, 30 May 2011 11:30:45 +0300 Message-ID: <1306744247-26051-6-git-send-email-levinsasha928@gmail.com> References: <1306744247-26051-1-git-send-email-levinsasha928@gmail.com> Cc: kvm@vger.kernel.org, mingo@elte.hu, asias.hejun@gmail.com, gorcunov@gmail.com, prasadjoshi124@gmail.com, Sasha Levin To: penberg@kernel.org Return-path: Received: from mail-wy0-f174.google.com ([74.125.82.174]:44843 "EHLO mail-wy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753852Ab1E3Ibq (ORCPT ); Mon, 30 May 2011 04:31:46 -0400 Received: by wya21 with SMTP id 21so2460435wya.19 for ; Mon, 30 May 2011 01:31:45 -0700 (PDT) In-Reply-To: <1306744247-26051-1-git-send-email-levinsasha928@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: Adds a rwlock wrapper which like the mutex wrapper makes rwlock calls similar to their kernel counterparts. Signed-off-by: Sasha Levin --- tools/kvm/include/kvm/rwsem.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 39 insertions(+), 0 deletions(-) create mode 100644 tools/kvm/include/kvm/rwsem.h diff --git a/tools/kvm/include/kvm/rwsem.h b/tools/kvm/include/kvm/rwsem.h new file mode 100644 index 0000000..75a22f8 --- /dev/null +++ b/tools/kvm/include/kvm/rwsem.h @@ -0,0 +1,39 @@ +#ifndef KVM__RWSEM_H +#define KVM__RWSEM_H + +#include + +#include "kvm/util.h" + +/* + * Kernel-alike rwsem API - to make it easier for kernel developers + * to write user-space code! :-) + */ + +#define DECLARE_RWSEM(sem) pthread_rwlock_t sem = PTHREAD_RWLOCK_INITIALIZER + +static inline void down_read(pthread_rwlock_t *rwsem) +{ + if (pthread_rwlock_rdlock(rwsem) != 0) + die("unexpected pthread_rwlock_rdlock() failure!"); +} + +static inline void down_write(pthread_rwlock_t *rwsem) +{ + if (pthread_rwlock_wrlock(rwsem) != 0) + die("unexpected pthread_rwlock_wrlock() failure!"); +} + +static inline void up_read(pthread_rwlock_t *rwsem) +{ + if (pthread_rwlock_unlock(rwsem) != 0) + die("unexpected pthread_rwlock_unlock() failure!"); +} + +static inline void up_write(pthread_rwlock_t *rwsem) +{ + if (pthread_rwlock_unlock(rwsem) != 0) + die("unexpected pthread_rwlock_unlock() failure!"); +} + +#endif /* KVM__RWSEM_H */ -- 1.7.5.rc3