1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2010-2014 Intel Corporation
3 */
4
5 #include <stdarg.h>
6 #include <rte_eal.h>
7 #include <rte_log.h>
8 #include <rte_debug.h>
9
10 void
__rte_panic(const char * funcname,const char * format,...)11 __rte_panic(const char *funcname, const char *format, ...)
12 {
13 va_list ap;
14
15 rte_log(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, "PANIC in %s():\n", funcname);
16 va_start(ap, format);
17 rte_vlog(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, format, ap);
18 va_end(ap);
19 rte_dump_stack();
20 abort(); /* generate a coredump if enabled */
21 }
22
23 /*
24 * Like rte_panic this terminates the application. However, no traceback is
25 * provided and no core-dump is generated.
26 */
27 void
rte_exit(int exit_code,const char * format,...)28 rte_exit(int exit_code, const char *format, ...)
29 {
30 va_list ap;
31
32 if (exit_code != 0)
33 RTE_LOG(CRIT, EAL, "Error - exiting with code: %d\n"
34 " Cause: ", exit_code);
35
36 va_start(ap, format);
37 rte_vlog(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, format, ap);
38 va_end(ap);
39
40 if (rte_eal_cleanup() != 0)
41 RTE_LOG(CRIT, EAL,
42 "EAL could not release all resources\n");
43 exit(exit_code);
44 }
45