/* trace.h 04/04/2016 D.J.Whale * * Simple trace output. * * On some platforms this is just printf. * On others it might write to a serial port * On others it might write to a trace buffer viewed in an emulator * It could be configured to do nothing. */ #ifndef _TRACE_H #define _TRACE_H //#define TRACE_POSIX /* POSIX IMPLEMENTATION */ /* Printf is not available on some platforms, or not very efficient. * These macros make it possible to re-map I/O to more efficient functions. */ #if defined(TRACE_POSIX) #include <stdio.h> #include <stdlib.h> #define TRACE #define TRACE_OUTS(S) do{printf("%s", S);fflush(stdout);} while (0) #define TRACE_OUTN(N) do{printf("%d", (unsigned int)N);fflush(stdout);} while (0) #define TRACE_OUTC(C) putc(C, stdout) #define TRACE_NL() do{TRACE_OUTC('\n');fflush(stdout);} while (0) #define TRACE_FAIL(msg) do{fprintf(stderr, "%s", msg);exit(-1);} while (0) #else // no trace defined #define TRACE_OUTS(S) #define TRACE_OUTN(N) #define TRACE_OUTC(C) #define TRACE_NL() #define TRACE_FAIL(M) #endif #endif /***** END OF FILE *****/