aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/api/odp/spinlock.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-generic/include/api/odp/spinlock.h')
-rw-r--r--platform/linux-generic/include/api/odp/spinlock.h92
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