1  /*
   2   * \brief   Locks (i.e., mutex)
   3   * \author  Christian Helmuth
   4   * \date    2008-08-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__LOCK_H_
  15  #define _INCLUDE__DDE_KIT__LOCK_H_
  16  
  17  /**
  18   * Private lock type
  19   */

  20  struct dde_kit_lock;
  21  
  22  /**
  23   * Initialize lock
  24   *
  25   * \param   out_lock  lock handle (output parameter)
  26   *
  27   * The created lock is free (not acquired) after initialization.
  28   */

  29  void dde_kit_lock_init(struct dde_kit_lock **out_lock);

  30  
  31  /**
  32   * Destroy lock
  33   *
  34   * \param   lock  lock handle
  35   *
  36   * The old lock handle is invalidated.
  37   */

  38  void dde_kit_lock_deinit(struct dde_kit_lock *lock);

  39  
  40  /**
  41   * Acquire lock
  42   *
  43   * \param   lock  lock handle
  44   */

  45  void dde_kit_lock_lock(struct dde_kit_lock *lock);

  46  
  47  /**
  48   * Acquire a lock (non-blocking)
  49   *
  50   * \param   lock  lock handle
  51   *
  52   * \return  lock state
  53   *   \retval 0    lock was aquired
  54   *   \retval 1    lock was not aquired
  55   */

  56  int dde_kit_lock_try_lock(struct dde_kit_lock *lock);

  57  
  58  /**
  59   * Release lock
  60   *
  61   * \param   lock  lock handle
  62   */

  63  void dde_kit_lock_unlock(struct dde_kit_lock *lock);

  64  
  65  #endif /* _INCLUDE__DDE_KIT__LOCK_H_ */