1  /*
   2   * \brief  Semaphores
   3   * \author Christian Helmuth
   4   * \date   2008-09-15
   5   */

   6  
   7  /*
   8   * Copyright (C) 2008-2013 Genode Labs GmbH
   9   *
  10   * This file is part of the Genode OS framework, which is distributed
  11   * under the terms of the GNU General Public License version 2.
  12   */

  13  
  14  #ifndef _INCLUDE__DDE_KIT__SEMAPHORE_H_
  15  #define _INCLUDE__DDE_KIT__SEMAPHORE_H_
  16  
  17  struct dde_kit_sem;
  18  typedef struct dde_kit_sem dde_kit_sem_t;
  19  
  20  /**
  21   * Initialize DDE kit semaphore
  22   *
  23   * \param  value  initial semaphore counter
  24   *
  25   * \return        pointer to new semaphore
  26   */

  27  dde_kit_sem_t *dde_kit_sem_init(int value);

  28  
  29  /**
  30   * Deinitialize semaphore
  31   *
  32   * \param  sem  semaphore reference
  33   */

  34  void dde_kit_sem_deinit(dde_kit_sem_t *sem);

  35  
  36  /**
  37   * Acquire semaphore
  38   *
  39   * \param  sem  semaphore reference
  40   */

  41  void dde_kit_sem_down(dde_kit_sem_t *sem);

  42  
  43  /**
  44   * Acquire semaphore (non-blocking)
  45   *
  46   * \param  sem  semaphore reference
  47   *
  48   * \return      semaphore state
  49   * \retval 0    semaphore was acquired
  50   * \retval !=0  semaphore was not acquired
  51   */

  52  int dde_kit_sem_down_try(dde_kit_sem_t *sem);

  53  
  54  /**
  55   * Acquire semaphore (with timeout)
  56   *
  57   * \param  sem      semaphore reference
  58   * \param  timeout  timeout (in ms)
  59   *
  60   * \return          semaphore state
  61   * \retval 0        semaphore was acquired
  62   * \retval !=0      semaphore was not acquired
  63   */

  64  //int dde_kit_sem_down_timed(dde_kit_sem_t *sem, int timout);
  65  
  66  /**
  67   * Release semaphore
  68   *
  69   * \param  sem  semaphore reference
  70   */

  71  void dde_kit_sem_up(dde_kit_sem_t *sem);

  72  
  73  #endif /* _INCLUDE__DDE_KIT__SEMAPHORE_H_ */