1 /**
2 * Copyright (C) Mellanox Technologies Ltd. 2001-2018. ALL RIGHTS RESERVED.
3 *
4 * See file LICENSE for terms.
5 */
6
7 #ifdef HAVE_CONFIG_H
8 # include "config.h"
9 #endif
10
11 #include "assert.h"
12
13 #include <ucs/config/global_opts.h>
14 #include <ucs/debug/debug.h>
15 #include <ucs/debug/log.h>
16 #include <ucs/sys/compiler.h>
17 #include <ucs/sys/string.h>
18 #include <stdarg.h>
19 #include <stdlib.h>
20 #include <string.h>
21
22
ucs_fatal_error_message(const char * file,unsigned line,const char * function,char * message_buf)23 void ucs_fatal_error_message(const char *file, unsigned line,
24 const char *function, char *message_buf)
25 {
26 char *message_line, *save_ptr = NULL;
27
28 ucs_log_flush();
29
30 message_line = (message_buf == NULL) ? NULL :
31 strtok_r(message_buf, "\n", &save_ptr);
32 while (message_line != NULL) {
33 ucs_log_fatal_error("%13s:%-4u %s", ucs_basename(file), line, message_line);
34 message_line = strtok_r(NULL, "\n", &save_ptr);
35 }
36
37 ucs_handle_error(message_buf);
38 abort();
39 }
40
ucs_fatal_error_format(const char * file,unsigned line,const char * function,const char * format,...)41 void ucs_fatal_error_format(const char *file, unsigned line,
42 const char *function, const char *format, ...)
43 {
44 size_t buffer_size = ucs_log_get_buffer_size();
45 char *buffer;
46 va_list ap;
47
48 buffer = ucs_alloca(buffer_size + 1);
49 va_start(ap, format);
50 vsnprintf(buffer, buffer_size, format, ap);
51 va_end(ap);
52
53 ucs_fatal_error_message(file, line, function, buffer);
54 }
55