4 * Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
17 * * Neither the name of Intel Corporation nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 * Debug Functions in RTE
42 * This file defines a generic API for debug operations. Part of
43 * the implementation is architecture-specific.
47 #include "rte_branch_prediction.h"
54 * Dump the stack of the calling core to the console.
56 void rte_dump_stack(void);
59 * Dump the registers of the calling core to the console.
61 * Note: Not implemented in a userapp environment; use gdb instead.
63 void rte_dump_registers(void);
66 * Provide notification of a critical non-recoverable error and terminate
67 * execution abnormally.
69 * Display the format string and its expanded arguments (printf-like).
71 * In a linuxapp environment, this function dumps the stack and calls
72 * abort() resulting in a core dump if enabled.
74 * The function never returns.
77 * The format string, followed by the variable list of arguments.
79 #define rte_panic(...) rte_panic_(__func__, __VA_ARGS__, "dummy")
80 #define rte_panic_(func, format, ...) __rte_panic(func, format "%.0s", __VA_ARGS__)
82 #if RTE_LOG_LEVEL >= RTE_LOG_DEBUG
83 #define RTE_ASSERT(exp) RTE_VERIFY(exp)
85 #define RTE_ASSERT(exp) do {} while (0)
87 #define RTE_VERIFY(exp) do { \
88 if (unlikely(!(exp))) \
89 rte_panic("line %d\tassert \"" #exp "\" failed\n", __LINE__); \
93 * Provide notification of a critical non-recoverable error and stop.
95 * This function should not be called directly. Refer to rte_panic() macro
98 void __rte_panic(const char *funcname , const char *format, ...)
100 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2))
101 __attribute__((cold))
104 __attribute__((noreturn))
105 __attribute__((format(printf, 2, 3)));
111 #endif /* _RTE_DEBUG_H_ */