/* * \brief Semaphores * \author Christian Helmuth * \date 2008-09-15 */ /* * Copyright (C) 2008-2013 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__SEMAPHORE_H_ #define _INCLUDE__DDE_KIT__SEMAPHORE_H_ struct dde_kit_sem; typedef struct dde_kit_sem dde_kit_sem_t; /** * Initialize DDE kit semaphore * * \param value initial semaphore counter * * \return pointer to new semaphore */ dde_kit_sem_t *dde_kit_sem_init(int value); /** * Deinitialize semaphore * * \param sem semaphore reference */ void dde_kit_sem_deinit(dde_kit_sem_t *sem); /** * Acquire semaphore * * \param sem semaphore reference */ void dde_kit_sem_down(dde_kit_sem_t *sem); /** * Acquire semaphore (non-blocking) * * \param sem semaphore reference * * \return semaphore state * \retval 0 semaphore was acquired * \retval !=0 semaphore was not acquired */ int dde_kit_sem_down_try(dde_kit_sem_t *sem); /** * Acquire semaphore (with timeout) * * \param sem semaphore reference * \param timeout timeout (in ms) * * \return semaphore state * \retval 0 semaphore was acquired * \retval !=0 semaphore was not acquired */ //int dde_kit_sem_down_timed(dde_kit_sem_t *sem, int timout); /** * Release semaphore * * \param sem semaphore reference */ void dde_kit_sem_up(dde_kit_sem_t *sem); #endif /* _INCLUDE__DDE_KIT__SEMAPHORE_H_ */