Parcourir la source

qcacmn: Add qdf_list static initializer macros

In order to use qdf_list in situations where static initialization is
preferable, add a number of macros for statically initializing the
qdf_list structures.

Change-Id: I9a1291d495e7940b57d8519da0e3d62a0dfd2064
CRs-Fixed: 2222980
Dustin Brown il y a 7 ans
Parent
commit
cb94e45a0e
2 fichiers modifiés avec 34 ajouts et 5 suppressions
  1. 13 3
      qdf/inc/qdf_list.h
  2. 21 2
      qdf/linux/src/i_qdf_list.h

+ 13 - 3
qdf/inc/qdf_list.h

@@ -1,9 +1,8 @@
 /*
- * Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2018 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
- *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
  * above copyright notice and this permission notice appear in all
@@ -25,7 +24,6 @@
  * to the Linux Foundation.
  */
 
-
 /**
  *  DOC: qdf_list.h
  *  QCA driver framework (QDF) list APIs
@@ -99,6 +97,18 @@ static inline void qdf_list_create(__qdf_list_t *list, uint32_t max_size)
 	__qdf_list_create(list, max_size);
 }
 
+#define QDF_LIST_ANCHOR(list) __QDF_LIST_ANCHOR(list)
+
+#define QDF_LIST_NODE_INIT(prev, next) __QDF_LIST_NODE_INIT(prev, next)
+#define QDF_LIST_NODE_INIT_SINGLE(node) __QDF_LIST_NODE_INIT_SINGLE(node)
+
+#define QDF_LIST_INIT(tail, head) __QDF_LIST_INIT(tail, head)
+#define QDF_LIST_INIT_SINGLE(node) __QDF_LIST_INIT_SINGLE(node)
+#define QDF_LIST_INIT_EMPTY(list) __QDF_LIST_INIT_EMPTY(list)
+
+#define qdf_list_for_each(list_ptr, cursor, node_field) \
+	__qdf_list_for_each(list_ptr, cursor, node_field)
+
 /**
  * qdf_init_list_head() - initialize list head
  * @list_head: pointer to list head

+ 21 - 2
qdf/linux/src/i_qdf_list.h

@@ -1,9 +1,8 @@
 /*
- * Copyright (c) 2014-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2016, 2018 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
- *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
  * above copyright notice and this permission notice appear in all
@@ -60,6 +59,26 @@ static inline void __qdf_list_create(__qdf_list_t *list, uint32_t max_size)
 	list->max_size = max_size;
 }
 
+#define __QDF_LIST_ANCHOR(list) ((list).anchor)
+
+#define __QDF_LIST_NODE_INIT(prev_node, next_node) \
+	{ .prev = &(prev_node), .next = &(next_node), }
+
+#define __QDF_LIST_NODE_INIT_SINGLE(node) \
+	__QDF_LIST_NODE_INIT(node, node)
+
+#define __QDF_LIST_INIT(tail, head) \
+	{ .anchor = __QDF_LIST_NODE_INIT(tail, head), }
+
+#define __QDF_LIST_INIT_SINGLE(node) \
+	__QDF_LIST_INIT(node, node)
+
+#define __QDF_LIST_INIT_EMPTY(list) \
+	__QDF_LIST_INIT_SINGLE(list.anchor)
+
+#define __qdf_list_for_each(list_ptr, cursor, node_field) \
+	list_for_each_entry(cursor, &(list_ptr)->anchor, node_field)
+
 /**
  * __qdf_init_list_head() - initialize list head
  * @list_head: pointer to list head