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: 1.2 $ 12 * $Date: 1998/01/08 11:12:20 $ 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 */ 31extern 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 */ 42extern void __rt_error(char *format, ...); 43 44/* 45 * Some macros for debugging and warning messages 46 */ 47 48typedef enum WarnLevel { 49 WL_TRACE, 50 WL_WARN, 51 WL_ERROR 52} WarnLevel; 53 54void 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 108extern 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 */ 122