genode/os/include/dde_kit/spin_lock.h
Stefan Kalkowski 319813a59b Merge spin-lock implementations
Separate spin-lock implementation from lock-implementation and put it into a
non-public header, so it can be re-used by the DDE kit's and Fiasco.OC's
capability-allocator spin lock. Fixes issue #123.
2012-02-29 15:41:17 +01:00

48 lines
971 B
C

/*
* \brief Spin lock
* \author Norman Feske
* \date 2012-01-27
*/
/*
* Copyright (C) 2012 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#ifndef _INCLUDE__DDE_KIT__SPIN_LOCK_H_
#define _INCLUDE__DDE_KIT__SPIN_LOCK_H_
/**
* Private spin lock type
*/
typedef volatile int dde_kit_spin_lock;
/**
* Initialize spin lock
*
* \param out_lock lock handle (output parameter)
*
* The created lock is free (not acquired) after initialization.
*/
void dde_kit_spin_lock_init(dde_kit_spin_lock *spin_lock);
/**
* Acquire spin lock
*/
void dde_kit_spin_lock_lock(dde_kit_spin_lock *spin_lock);
/**
* Try to acquire a lock (non-blocking)
*/
int dde_kit_spin_lock_try_lock(dde_kit_spin_lock *spin_lock);
/**
* Release spin lock
*/
void dde_kit_spin_lock_unlock(dde_kit_spin_lock *spin_lock);
#endif /* _INCLUDE__DDE_KIT__SPIN_LOCK_H_ */