diff options
Diffstat (limited to 'platform/linux-generic/include/api/odp/spinlock.h')
-rw-r--r-- | platform/linux-generic/include/api/odp/spinlock.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/platform/linux-generic/include/api/odp/spinlock.h b/platform/linux-generic/include/api/odp/spinlock.h new file mode 100644 index 000000000..504e629e2 --- /dev/null +++ b/platform/linux-generic/include/api/odp/spinlock.h @@ -0,0 +1,92 @@ +/* Copyright (c) 2013, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +/** + * @file + * + * ODP spinlock + */ + +#ifndef ODP_SPINLOCK_H_ +#define ODP_SPINLOCK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include <odp/std_types.h> + +/** @addtogroup odp_synchronizers + * Operations on spin locks. + * @{ + */ + +/** + * ODP spinlock type + */ +typedef struct odp_spinlock_t { + char lock; /**< @private lock flag, should match odp_atomic_flag_t */ +} odp_spinlock_t; + + +/** + * Initialize spin lock. + * + * @param splock Pointer to a spin lock + */ +void odp_spinlock_init(odp_spinlock_t *splock); + + +/** + * Acquire spin lock. + * + * @param splock Pointer to a spin lock + */ +void odp_spinlock_lock(odp_spinlock_t *splock); + + +/** + * Try to acquire spin lock. + * + * @param splock Pointer to a spin lock + * + * @retval 1 lock acquired + * @retval 0 lock not acquired + */ +int odp_spinlock_trylock(odp_spinlock_t *splock); + + +/** + * Release spin lock. + * + * @param splock Pointer to a spin lock + */ +void odp_spinlock_unlock(odp_spinlock_t *splock); + + +/** + * Check if spin lock is busy (locked). + * + * @param splock Pointer to a spin lock + * + * @retval 1 lock busy (locked) + * @retval 0 lock not busy. + */ +int odp_spinlock_is_locked(odp_spinlock_t *splock); + + + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif |