Commit | Line | Data |
---|---|---|
c906108c SS |
1 | /* |
2 | * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved. | |
3 | * | |
4 | * This software may be freely used, copied, modified, and distributed | |
5 | * provided that the above copyright notice is preserved in all copies of the | |
6 | * software. | |
7 | */ | |
8 | ||
9 | /* -*-C-*- | |
10 | * | |
11 | * $Revision$ | |
12 | * $Date$ | |
13 | * | |
14 | * | |
15 | * logging.h - methods for logging warnings, errors and trace info | |
16 | */ | |
17 | ||
18 | #ifndef angel_logging_h | |
19 | #define angel_logging_h | |
20 | ||
21 | #include <stdarg.h> | |
22 | ||
23 | /* | |
24 | * __rt_warning | |
25 | * ------------ | |
26 | * Provides a standard method of generating run-time system | |
27 | * warnings. The actual action taken by this code can be board or | |
28 | * target application specific, e.g. internal logging, debug message, | |
29 | * etc. | |
30 | */ | |
31 | extern void __rt_warning(char *format, ...); | |
32 | ||
33 | /*---------------------------------------------------------------------------*/ | |
34 | ||
35 | /* | |
36 | * __rt_error | |
37 | * ---------- | |
38 | * Raise an internal Angel error. The parameters are passed directly | |
39 | * to "__rt_warning" for display, and the code then raises a debugger | |
40 | * event and stops the target processing. | |
41 | */ | |
42 | extern void __rt_error(char *format, ...); | |
43 | ||
44 | /* | |
45 | * Some macros for debugging and warning messages | |
46 | */ | |
47 | ||
48 | typedef enum WarnLevel { | |
49 | WL_TRACE, | |
50 | WL_WARN, | |
51 | WL_ERROR | |
52 | } WarnLevel; | |
53 | ||
54 | void va_warn(WarnLevel level, char *format, va_list args); | |
55 | ||
56 | #ifdef _WINGDI_ | |
57 | /* stupidity in MSVC <wingdi.h> (in <windows.h> in <winsock.h>) */ | |
58 | # undef ERROR | |
59 | #endif | |
60 | ||
61 | #ifndef ERROR | |
62 | # define ERROR_FORMAT "Error \"%s\" in %s at line %d\n" | |
63 | # define ERROR(e) __rt_error(ERROR_FORMAT, (e), __FILE__, __LINE__) | |
64 | #endif | |
65 | ||
66 | #ifndef ASSERT | |
67 | # ifdef ASSERTIONS_ENABLED | |
68 | # define ASSERT(x, y) ((x) ? (void)(0) : ERROR((y))) | |
69 | # else | |
70 | # define ASSERT(x, y) ((void)(0)) | |
71 | # endif | |
72 | #endif | |
73 | ||
74 | #ifndef WARN | |
75 | # ifdef ASSERTIONS_ENABLED | |
76 | # define WARN_FORMAT "Warning \"%s\" in %s at line %d\n" | |
77 | # define WARN(w) __rt_warning(WARN_FORMAT, (w), __FILE__, __LINE__) | |
78 | # else | |
79 | # define WARN(w) ((void)(0)) | |
80 | # endif | |
81 | #endif | |
82 | ||
83 | ||
84 | #ifdef NO_INFO_MESSAGES | |
85 | # define __rt_info (void) | |
86 | # ifndef INFO | |
87 | # define INFO(w) | |
88 | # endif | |
89 | #else | |
90 | # define __rt_info __rt_warning | |
91 | # ifndef INFO | |
92 | # ifdef DEBUG | |
93 | # define INFO(w) __rt_warning("%s\n", (w)) | |
94 | # else | |
95 | # define INFO(w) ((void)(0)) | |
96 | # endif | |
97 | # endif | |
98 | #endif | |
99 | ||
100 | ||
101 | #if defined(DEBUG) && !defined(NO_IDLE_CHITCHAT) | |
102 | # ifndef DO_TRACE | |
103 | # define DO_TRACE (1) | |
104 | # endif | |
105 | #endif | |
106 | ||
107 | #ifdef DO_TRACE | |
108 | extern void __rt_trace(char *format, ...); | |
109 | #endif | |
110 | ||
111 | #ifndef TRACE | |
112 | # ifdef DO_TRACE | |
113 | # define TRACE(w) __rt_trace("%s ", (w)) | |
114 | # else | |
115 | # define TRACE(w) ((void)(0)) | |
116 | # endif | |
117 | #endif | |
118 | ||
119 | #endif /* ndef angel_logging_h */ | |
120 | ||
121 | /* EOF logging.h */ |