qcacmn: Add QDF wrappers for kernel atomic bit operations APIs
Add QDF wrappers for kernel atomic bit operations APIs.
Change-Id: If00b8434e60c516e89c6781eea459bc1931872df
CRs-Fixed: 2033255
diff --git a/qdf/inc/qdf_atomic.h b/qdf/inc/qdf_atomic.h
index 02fd28b..39c09d1 100644
--- a/qdf/inc/qdf_atomic.h
+++ b/qdf/inc/qdf_atomic.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -151,4 +151,94 @@
return __qdf_atomic_inc_return(v);
}
+/**
+ * qdf_atomic_set_bit - Atomically set a bit in memory
+ * @nr: bit to set
+ * @addr: the address to start counting from
+ *
+ * Return: none
+ */
+static inline void qdf_atomic_set_bit(int nr, volatile unsigned long *addr)
+{
+ __qdf_atomic_set_bit(nr, addr);
+}
+
+/**
+ * qdf_atomic_clear_bit - Atomically clear a bit in memory
+ * @nr: bit to clear
+ * @addr: the address to start counting from
+ *
+ * Return: none
+ */
+static inline void qdf_atomic_clear_bit(int nr, volatile unsigned long *addr)
+{
+ __qdf_atomic_clear_bit(nr, addr);
+}
+
+/**
+ * qdf_atomic_change_bit - Atomically toggle a bit in memory
+ * from addr
+ * @nr: bit to change
+ * @addr: the address to start counting from
+ *
+ * Return: none
+ */
+static inline void qdf_atomic_change_bit(int nr, volatile unsigned long *addr)
+{
+ __qdf_atomic_change_bit(nr, addr);
+}
+
+/**
+ * qdf_atomic_test_and_set_bit - Atomically set a bit and return its old value
+ * @nr: Bit to set
+ * @addr: the address to start counting from
+ *
+ * Return: return nr bit old value
+ */
+static inline int qdf_atomic_test_and_set_bit(int nr,
+ volatile unsigned long *addr)
+{
+ return __qdf_atomic_test_and_set_bit(nr, addr);
+}
+
+/**
+ * qdf_atomic_test_and_clear_bit - Atomically clear a bit and return its old
+ * value
+ * @nr: bit to clear
+ * @addr: the address to start counting from
+ *
+ * Return: return nr bit old value
+ */
+static inline int qdf_atomic_test_and_clear_bit(int nr,
+ volatile unsigned long *addr)
+{
+ return __qdf_atomic_test_and_clear_bit(nr, addr);
+}
+
+/**
+ * qdf_atomic_test_and_change_bit - Atomically toggle a bit and return its old
+ * value
+ * @nr: bit to change
+ * @addr: the address to start counting from
+ *
+ * Return: return nr bit old value
+ */
+static inline int qdf_atomic_test_and_change_bit(int nr,
+ volatile unsigned long *addr)
+{
+ return __qdf_atomic_test_and_change_bit(nr, addr);
+}
+
+/**
+ * qdf_atomic_test_bit - Atomically get the nr-th bit value starting from addr
+ * @nr: bit to get
+ * @addr: the address to start counting from
+ *
+ * Return: return nr bit value
+ */
+static inline int qdf_atomic_test_bit(int nr, volatile unsigned long *addr)
+{
+ return __qdf_atomic_test_bit(nr, addr);
+}
+
#endif