xref: /dpdk/lib/eal/include/rte_debug.h (revision ada2839c1c4d7b338538ce56f8292c4f7a0c70b6)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4 
5 #ifndef _RTE_DEBUG_H_
6 #define _RTE_DEBUG_H_
7 
8 /**
9  * @file
10  *
11  * Debug Functions in RTE
12  *
13  * This file defines a generic API for debug operations. Part of
14  * the implementation is architecture-specific.
15  */
16 
17 #include "rte_log.h"
18 #include "rte_branch_prediction.h"
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 /**
25  * Dump the stack of the calling core to the standard error.
26  */
27 void rte_dump_stack(void);
28 
29 /**
30  * Provide notification of a critical non-recoverable error and terminate
31  * execution abnormally.
32  *
33  * Display the format string and its expanded arguments (printf-like).
34  *
35  * In a linux environment, this function dumps the stack and calls
36  * abort() resulting in a core dump if enabled.
37  *
38  * The function never returns.
39  *
40  * @param ...
41  *   The format string, followed by the variable list of arguments.
42  */
43 #define rte_panic(...) rte_panic_(__func__, __VA_ARGS__, "dummy")
44 #define rte_panic_(func, format, ...) __rte_panic(func, format "%.0s", __VA_ARGS__)
45 
46 #ifdef RTE_ENABLE_ASSERT
47 #define RTE_ASSERT(exp)	RTE_VERIFY(exp)
48 #else
49 #define RTE_ASSERT(exp) do {} while (0)
50 #endif
51 #define	RTE_VERIFY(exp)	do {                                                  \
52 	if (unlikely(!(exp)))                                                           \
53 		rte_panic("line %d\tassert \"%s\" failed\n", __LINE__, #exp); \
54 } while (0)
55 
56 /*
57  * Provide notification of a critical non-recoverable error and stop.
58  *
59  * This function should not be called directly. Refer to rte_panic() macro
60  * documentation.
61  */
62 void __rte_panic(const char *funcname , const char *format, ...)
63 	__rte_cold
64 	__rte_noreturn
65 	__rte_format_printf(2, 3);
66 
67 #ifdef __cplusplus
68 }
69 #endif
70 
71 #endif /* _RTE_DEBUG_H_ */
72