]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | /* SPDX-License-Identifier: BSD-3-Clause |
2 | * Copyright(c) 2010-2014 Intel Corporation | |
7c673cae FG |
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 console. | |
26 | */ | |
27 | void rte_dump_stack(void); | |
28 | ||
29 | /** | |
30 | * Dump the registers of the calling core to the console. | |
31 | * | |
32 | * Note: Not implemented in a userapp environment; use gdb instead. | |
33 | */ | |
34 | void rte_dump_registers(void); | |
35 | ||
36 | /** | |
37 | * Provide notification of a critical non-recoverable error and terminate | |
38 | * execution abnormally. | |
39 | * | |
40 | * Display the format string and its expanded arguments (printf-like). | |
41 | * | |
9f95a23c | 42 | * In a linux environment, this function dumps the stack and calls |
7c673cae FG |
43 | * abort() resulting in a core dump if enabled. |
44 | * | |
45 | * The function never returns. | |
46 | * | |
47 | * @param ... | |
48 | * The format string, followed by the variable list of arguments. | |
49 | */ | |
50 | #define rte_panic(...) rte_panic_(__func__, __VA_ARGS__, "dummy") | |
51 | #define rte_panic_(func, format, ...) __rte_panic(func, format "%.0s", __VA_ARGS__) | |
52 | ||
11fdf7f2 | 53 | #ifdef RTE_ENABLE_ASSERT |
7c673cae FG |
54 | #define RTE_ASSERT(exp) RTE_VERIFY(exp) |
55 | #else | |
56 | #define RTE_ASSERT(exp) do {} while (0) | |
57 | #endif | |
58 | #define RTE_VERIFY(exp) do { \ | |
59 | if (unlikely(!(exp))) \ | |
11fdf7f2 | 60 | rte_panic("line %d\tassert \"%s\" failed\n", __LINE__, #exp); \ |
7c673cae FG |
61 | } while (0) |
62 | ||
63 | /* | |
64 | * Provide notification of a critical non-recoverable error and stop. | |
65 | * | |
66 | * This function should not be called directly. Refer to rte_panic() macro | |
67 | * documentation. | |
68 | */ | |
69 | void __rte_panic(const char *funcname , const char *format, ...) | |
70 | #ifdef __GNUC__ | |
71 | #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) | |
72 | __attribute__((cold)) | |
73 | #endif | |
74 | #endif | |
75 | __attribute__((noreturn)) | |
76 | __attribute__((format(printf, 2, 3))); | |
77 | ||
78 | #ifdef __cplusplus | |
79 | } | |
80 | #endif | |
81 | ||
82 | #endif /* _RTE_DEBUG_H_ */ |