2011-12-22 15:19:25 +00:00
|
|
|
/*
|
|
|
|
* \brief Locks (i.e., mutex)
|
|
|
|
* \author Christian Helmuth
|
|
|
|
* \date 2008-08-15
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
2013-01-10 20:44:47 +00:00
|
|
|
* Copyright (C) 2008-2013 Genode Labs GmbH
|
2011-12-22 15:19:25 +00:00
|
|
|
*
|
|
|
|
* 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__LOCK_H_
|
|
|
|
#define _INCLUDE__DDE_KIT__LOCK_H_
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Private lock type
|
|
|
|
*/
|
|
|
|
struct dde_kit_lock;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Initialize lock
|
|
|
|
*
|
|
|
|
* \param out_lock lock handle (output parameter)
|
|
|
|
*
|
|
|
|
* The created lock is free (not acquired) after initialization.
|
|
|
|
*/
|
|
|
|
void dde_kit_lock_init(struct dde_kit_lock **out_lock);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Destroy lock
|
|
|
|
*
|
|
|
|
* \param lock lock handle
|
|
|
|
*
|
|
|
|
* The old lock handle is invalidated.
|
|
|
|
*/
|
|
|
|
void dde_kit_lock_deinit(struct dde_kit_lock *lock);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Acquire lock
|
|
|
|
*
|
|
|
|
* \param lock lock handle
|
|
|
|
*/
|
|
|
|
void dde_kit_lock_lock(struct dde_kit_lock *lock);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Acquire a lock (non-blocking)
|
|
|
|
*
|
|
|
|
* \param lock lock handle
|
|
|
|
*
|
|
|
|
* \return lock state
|
|
|
|
* \retval 0 lock was aquired
|
|
|
|
* \retval 1 lock was not aquired
|
|
|
|
*/
|
|
|
|
int dde_kit_lock_try_lock(struct dde_kit_lock *lock);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Release lock
|
|
|
|
*
|
|
|
|
* \param lock lock handle
|
|
|
|
*/
|
|
|
|
void dde_kit_lock_unlock(struct dde_kit_lock *lock);
|
|
|
|
|
|
|
|
#endif /* _INCLUDE__DDE_KIT__LOCK_H_ */
|