From: Samuel Thibault Subject: [PATCH] [Mini-OS] add trydown Date: Thu, 17 Jan 2008 13:47:47 +0000 Message-ID: <20080117134747.GE11129@implementation.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org add trydown Signed-off-by: Samuel Thibault diff -r a66bdc82d8fa extras/mini-os/include/semaphore.h --- a/extras/mini-os/include/semaphore.h Wed Jan 16 11:44:41 2008 +0000 +++ b/extras/mini-os/include/semaphore.h Thu Jan 17 12:29:01 2008 +0000 @@ -49,6 +49,19 @@ static inline void init_SEMAPHORE(struct #define init_MUTEX(sem) init_SEMAPHORE(sem, 1) +static inline int trydown(struct semaphore *sem) +{ + unsigned long flags; + int ret = 0; + local_irq_save(flags); + if (sem->count > 0) { + ret = 1; + sem->count--; + } + local_irq_restore(flags); + return ret; +} + static void inline down(struct semaphore *sem) { unsigned long flags;