瀏覽代碼

qcacmn: Add support to invoke debug function before assert

qdf assert always, assert without debug information.
Added support to dump needed information before assert.

Change-Id: I2b53b7fa6a600b2a1aafdbc608b95b75feb2133d
CRs-Fixed: 3464724
Nobel Sharanyan Jeganathan 2 年之前
父節點
當前提交
bb213216f3
共有 1 個文件被更改,包括 17 次插入0 次删除
  1. 17 0
      qdf/inc/qdf_util.h

+ 17 - 0
qdf/inc/qdf_util.h

@@ -91,6 +91,23 @@ typedef __qdf_wait_queue_head_t qdf_wait_queue_head_t;
  */
 #define qdf_assert_always(expr)  __qdf_assert(expr)
 
+/**
+ * qdf_assert_always_func - invoke function to dump needed info before assert
+ * @expr: expression to test
+ * @debug_fp: function pointer to be invoked for debugging
+ */
+#define qdf_assert_always_func(expr, debug_fp, ...)			\
+	do {								\
+		typeof(debug_fp) _debug_fp = debug_fp;			\
+		if (unlikely(!(expr))) {				\
+			pr_err("Assertion failed! %s:%s %s:%d\n",	\
+			       # expr, __func__, __FILE__, __LINE__);	\
+			if (_debug_fp)					\
+				_debug_fp(__VA_ARGS__);			\
+			QDF_BUG_ON_ASSERT(0);				\
+		}							\
+	} while (0)
+
 /**
  * qdf_target_assert_always - always target assert "expr" evaluates to false.
  * @expr: expression to test