| /* |
| * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved. |
| * |
| * This software may be freely used, copied, modified, and distributed |
| * provided that the above copyright notice is preserved in all copies of the |
| * software. |
| */ |
| |
| /* -*-C-*- |
| * |
| * $Revision$ |
| * $Date$ |
| * |
| * |
| * logging.h - methods for logging warnings, errors and trace info |
| */ |
| |
| #ifndef angel_logging_h |
| #define angel_logging_h |
| |
| #include <stdarg.h> |
| |
| /* |
| * __rt_warning |
| * ------------ |
| * Provides a standard method of generating run-time system |
| * warnings. The actual action taken by this code can be board or |
| * target application specific, e.g. internal logging, debug message, |
| * etc. |
| */ |
| extern void __rt_warning(char *format, ...); |
| |
| /*---------------------------------------------------------------------------*/ |
| |
| /* |
| * __rt_error |
| * ---------- |
| * Raise an internal Angel error. The parameters are passed directly |
| * to "__rt_warning" for display, and the code then raises a debugger |
| * event and stops the target processing. |
| */ |
| extern void __rt_error(char *format, ...); |
| |
| /* |
| * Some macros for debugging and warning messages |
| */ |
| |
| typedef enum WarnLevel { |
| WL_TRACE, |
| WL_WARN, |
| WL_ERROR |
| } WarnLevel; |
| |
| void va_warn(WarnLevel level, char *format, va_list args); |
| |
| #ifdef _WINGDI_ |
| /* stupidity in MSVC <wingdi.h> (in <windows.h> in <winsock.h>) */ |
| # undef ERROR |
| #endif |
| |
| #ifndef ERROR |
| # define ERROR_FORMAT "Error \"%s\" in %s at line %d\n" |
| # define ERROR(e) __rt_error(ERROR_FORMAT, (e), __FILE__, __LINE__) |
| #endif |
| |
| #ifndef ASSERT |
| # ifdef ASSERTIONS_ENABLED |
| # define ASSERT(x, y) ((x) ? (void)(0) : ERROR((y))) |
| # else |
| # define ASSERT(x, y) ((void)(0)) |
| # endif |
| #endif |
| |
| #ifndef WARN |
| # ifdef ASSERTIONS_ENABLED |
| # define WARN_FORMAT "Warning \"%s\" in %s at line %d\n" |
| # define WARN(w) __rt_warning(WARN_FORMAT, (w), __FILE__, __LINE__) |
| # else |
| # define WARN(w) ((void)(0)) |
| # endif |
| #endif |
| |
| |
| #ifdef NO_INFO_MESSAGES |
| # define __rt_info (void) |
| # ifndef INFO |
| # define INFO(w) |
| # endif |
| #else |
| # define __rt_info __rt_warning |
| # ifndef INFO |
| # ifdef DEBUG |
| # define INFO(w) __rt_warning("%s\n", (w)) |
| # else |
| # define INFO(w) ((void)(0)) |
| # endif |
| # endif |
| #endif |
| |
| |
| #if defined(DEBUG) && !defined(NO_IDLE_CHITCHAT) |
| # ifndef DO_TRACE |
| # define DO_TRACE (1) |
| # endif |
| #endif |
| |
| #ifdef DO_TRACE |
| extern void __rt_trace(char *format, ...); |
| #endif |
| |
| #ifndef TRACE |
| # ifdef DO_TRACE |
| # define TRACE(w) __rt_trace("%s ", (w)) |
| # else |
| # define TRACE(w) ((void)(0)) |
| # endif |
| #endif |
| |
| #endif /* ndef angel_logging_h */ |
| |
| /* EOF logging.h */ |