mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
356 lines
15 KiB
356 lines
15 KiB
/*[
|
|
* Name: msw_dbg.h
|
|
*
|
|
* Derived From: debug.h
|
|
*
|
|
* Author: P. Ivimey-Cook
|
|
*
|
|
* Created On: 7/6/94
|
|
*
|
|
* SCCS ID: @(#)msw_dbg.h 1.4 08/19/94
|
|
*
|
|
* Coding Stds: 2.0
|
|
*
|
|
* Purpose:
|
|
*
|
|
*
|
|
* Copyright Insignia Solutions Limited 1994. All rights reserved.
|
|
*
|
|
]*/
|
|
|
|
#ifndef MSW_DBG_H
|
|
#define MSW_DBG_H
|
|
|
|
#include <stdio.h>
|
|
#include "trace.h"
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Error & debug entry points for display driver low level functions
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef PROD
|
|
|
|
#define msw_error0(p1) { fputs("MSWDVR ERROR: ", trace_file); fprintf(trace_file,p1); fputc('\n', trace_file); }
|
|
#define msw_error1(p1,p2) { fputs("MSWDVR ERROR: ", trace_file); fprintf(trace_file,p1,p2); fputc('\n', trace_file); }
|
|
#define msw_error2(p1,p2,p3) { fputs("MSWDVR ERROR: ", trace_file); fprintf(trace_file,p1,p2,p3); fputc('\n', trace_file); }
|
|
#define msw_error3(p1,p2,p3,p4) { fputs("MSWDVR ERROR: ", trace_file); fprintf(trace_file,p1,p2,p3,p4); fputc('\n', trace_file); }
|
|
|
|
#else
|
|
|
|
#define msw_error0(p1)
|
|
#define msw_error1(pl,p2)
|
|
#define msw_error2(pl,p2,p3)
|
|
#define msw_error3(pl,p2,p3,p4)
|
|
|
|
#endif
|
|
|
|
#if !defined(PROD) && defined(MSWDVR_DEBUG)
|
|
|
|
#ifndef newline
|
|
#define newline fprintf(trace_file, "\n")
|
|
#endif
|
|
|
|
extern IU32 msw_verbose; /* general trace flags */
|
|
extern IU32 msw_enterexit; /* enter / leave trace flags */
|
|
extern int mswdvr_debug;
|
|
|
|
/*
|
|
* Debug levels. Higher levels get more output. Controlled by
|
|
* variable 'mswdvr_debug'.
|
|
*/
|
|
#define MSWDLEV_SILENT 0
|
|
#define MSWDLEV_MIN 1
|
|
#define MSWDLEV_AVG 2
|
|
#define MSWDLEV_MAX 3
|
|
|
|
/* cf: unused?? I think so. PIC
|
|
* #define QUIET 1
|
|
* #define MILD (QUIET + 1)
|
|
* #define VERBOSE (MILD + 1)
|
|
*/
|
|
|
|
/*
|
|
* Functional Unit flags: Basically the frontend API calls.
|
|
*/
|
|
#define MSW_MISC_VERBOSE 0x00000001 /* Any Functional unit not otherwise covered */
|
|
#define MSW_BITBLT_VERBOSE 0x00000002 /* BitBlt call */
|
|
#define MSW_COLOUR_VERBOSE 0x00000004 /* ColorInfo call */
|
|
#define MSW_CONTROL_VERBOSE 0x00000008 /* Control call */
|
|
#define MSW_ENAB_DISAB_VERBOSE 0x00000010 /* Enable and Disable calls */
|
|
#define MSW_ENUM_VERBOSE 0x00000020 /* EnumDFonts and EnumObj calls */
|
|
#define MSW_OUTPUT_VERBOSE 0x00000040 /* Output call */
|
|
#define MSW_PIXEL_VERBOSE 0x00000080 /* Pixel call */
|
|
#define MSW_BITMAP_VERBOSE 0x00000100 /* Bitmap, BitmapBits calls */
|
|
#define MSW_REALIZEOBJECT_VERBOSE 0x00000200 /* RealizeObject call */
|
|
#define MSW_SCANLR_VERBOSE 0x00000400 /* ScanLR call */
|
|
#define MSW_DEVICEMODE_VERBOSE 0x00000800 /* DeviceMode call */
|
|
#define MSW_INQUIRE_VERBOSE 0x00001000 /* Inquire call */
|
|
#define MSW_CURSOR_VERBOSE 0x00002000 /* {Set,Move,Check}Cursor calls */
|
|
#define MSW_TEXT_VERBOSE 0x00004000 /* StrBlt, ExtTextOut, GetCharWidth calls */
|
|
#define MSW_DEVICEBITMAP_VERBOSE 0x00008000 /* DeviceBitmap, DeviceBitmapBits, SetDIBits, SaveScreenBitmap calls */
|
|
#define MSW_FASTBORDER_VERBOSE 0x00010000 /* FastBorder call */
|
|
#define MSW_ATTRIBUTE_VERBOSE 0x00020000 /* SetAttribute call */
|
|
#define MSW_PALETTE_VERBOSE 0x00040000 /* {Get,Set} Palette call */
|
|
|
|
/*
|
|
* Other (lower-level) Verbose flags
|
|
*/
|
|
#define MSW_MEMTOMEM_VERBOSE 0x00080000 /* Code dealing with memory bitmaps specifically */
|
|
#define MSW_LOWLEVEL_VERBOSE 0x00100000 /* Code performing low level ops - e.g. XLib calls */
|
|
#define MSW_CONVERT_VERBOSE 0x00200000 /* (Bitmap) Conversion code */
|
|
#define MSW_INTELIO_VERBOSE 0x00400000 /* Code dealing with reading/writing M */
|
|
#define MSW_OBJECT_VERBOSE 0x00800000 /* Object routines (e.g. ObjPBrushAccess() */
|
|
#define MSW_RESOURCE_VERBOSE 0x01000000 /* Resource routines (e.g. ResAllocateXXX() */
|
|
#define MSW_WINDOW_VERBOSE 0x02000000 /* Routines dealing with windows e.g. WinOpen(), WinUMap() */
|
|
#define MSW_CACHE_VERBOSE 0x04000000 /* Routines dealing with GDI brush/pen cache */
|
|
|
|
/*
|
|
* Generic tracing stuff to avoid nasty defines everywhere
|
|
*/
|
|
|
|
#define msw_cond(bit) ((msw_verbose & (bit)) != 0)
|
|
#define msw_cond_lev(bit, lev) (((msw_verbose & (bit)) != 0) && (mswdvr_debug >= (lev)))
|
|
#define msw_cond_enter(bit) ((msw_enterexit & (bit)) != 0)
|
|
#define msw_cond_leave(bit) ((msw_enterexit & (bit)) != 0)
|
|
#define msw_entering_msg(fn) fprintf(trace_file, "Entering: %s ", fn)
|
|
#define msw_exiting_msg(fn) fprintf(trace_file, "Exiting : %s ", fn)
|
|
|
|
#define msw_do_trace(trace_bit, call) if (msw_cond(trace_bit)) { call; }
|
|
#define msw_do_lev_trace(trace_bit, lev,call) if (msw_cond_lev(trace_bit,lev)) { call; }
|
|
|
|
#define msw_trace_enter(trace_bit,fnname) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter0(trace_bit,fnname,str) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter1(trace_bit,fnname,str,p0) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter2(trace_bit,fnname,str,p0,p1) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter3(trace_bit,fnname,str,p0,p1,p2) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter4(trace_bit,fnname,str,p0,p1,p2,p3) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter5(trace_bit,fnname,str,p0,p1,p2,p3,p4) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter6(trace_bit,fnname,str,p0,p1,p2,p3,p4,p5) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4,p5); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter7(trace_bit,fnname,str,p0,p1,p2,p3,p4,p5,p6) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4,p5,p6); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter8(trace_bit,fnname,str,p0,p1,p2,p3,p4,p5,p6,p7) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4,p5,p6,p7); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter9(trace_bit,fnname,str,p0,p1,p2,p3,p4,p5,p6,p7,p8) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4,p5,p6,p7,p8); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter10(trace_bit,fnname,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter11(trace_bit,fnname,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10); \
|
|
newline; \
|
|
}
|
|
#define msw_trace_enter12(trace_bit,fnname,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11) \
|
|
if (msw_cond_enter(trace_bit)) { \
|
|
msw_entering_msg(fnname); \
|
|
fprintf(trace_file,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11); \
|
|
newline; \
|
|
}
|
|
|
|
#define msw_trace_leave(trace_bit,fnname) if (msw_cond_leave(trace_bit)) { msw_exiting_msg(fnname);newline; }
|
|
#define msw_trace_leave0(trace_bit,fnname,str) if (msw_cond_leave(trace_bit)) { msw_exiting_msg(fnname);fprintf(trace_file,str); newline;}
|
|
#define msw_trace_leave1(trace_bit,fnname,str, r0) if (msw_cond_leave(trace_bit)) { msw_exiting_msg(fnname);fprintf(trace_file,str, r0); newline;}
|
|
|
|
#define msw_trace0(trace_bit,str) if (msw_cond(trace_bit)) { fprintf(trace_file, str); newline; }
|
|
#define msw_trace1(trace_bit,str,p0) if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0);newline; }
|
|
#define msw_trace2(trace_bit,str,p0,p1) if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1);newline; }
|
|
#define msw_trace3(trace_bit,str,p0,p1,p2) if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1,p2);newline; }
|
|
#define msw_trace4(trace_bit,str,p0,p1,p2,p3) if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1,p2,p3);newline; }
|
|
#define msw_trace5(trace_bit,str,p0,p1,p2,p3,p4) if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1,p2,p3,p4);newline; }
|
|
#define msw_trace6(trace_bit,str,p0,p1,p2,p3,p4,p5) if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5);newline; }
|
|
#define msw_trace7(trace_bit,str,p0,p1,p2,p3,p4,p5,p6) if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5,p6);newline; }
|
|
#define msw_trace8(trace_bit,str,p0,p1,p2,p3,p4,p5,p6,p7) \
|
|
if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5,p6,p7); newline; }
|
|
#define msw_trace9(trace_bit,str,p0,p1,p2,p3,p4,p5,p6,p7,p8) \
|
|
if (msw_cond(trace_bit)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5,p6,p7,p8); newline; }
|
|
|
|
#define msw_lev_trace0(trace_bit,lev,str) if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str); newline; }
|
|
#define msw_lev_trace1(trace_bit,lev,str,p0) if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0);newline; }
|
|
#define msw_lev_trace2(trace_bit,lev,str,p0,p1) if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1);newline; }
|
|
#define msw_lev_trace3(trace_bit,lev,str,p0,p1,p2) if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1,p2);newline; }
|
|
#define msw_lev_trace4(trace_bit,lev,str,p0,p1,p2,p3) if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1,p2,p3);newline; }
|
|
#define msw_lev_trace5(trace_bit,lev,str,p0,p1,p2,p3,p4) \
|
|
if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1,p2,p3,p4);newline; }
|
|
#define msw_lev_trace6(trace_bit,lev,str,p0,p1,p2,p3,p4,p5) \
|
|
if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5);newline; }
|
|
#define msw_lev_trace7(trace_bit,lev,str,p0,p1,p2,p3,p4,p5,p6) \
|
|
if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5,p6);newline; }
|
|
#define msw_lev_trace8(trace_bit,lev,str,p0,p1,p2,p3,p4,p5,p6,p7) \
|
|
if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5,p6,p7); newline; }
|
|
#define msw_lev_trace9(trace_bit,lev,str,p0,p1,p2,p3,p4,p5,p6,p7,p8) \
|
|
if (msw_cond_lev(trace_bit,lev)) { fprintf(trace_file, str,p0,p1,p2,p3,p4,p5,p6,p7,p8); newline; }
|
|
|
|
|
|
/*
|
|
** The _no_nl macros also print messages when appropriate, but they do
|
|
** not put a new line afterwards.
|
|
*/
|
|
#define msw_trace0_no_nl(trace_bit, str) \
|
|
if (msw_cond(trace_bit)){ \
|
|
fprintf(trace_file, str); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_trace1_no_nl(trace_bit, str, p0) \
|
|
if (msw_cond(trace_bit)){ \
|
|
fprintf(trace_file, str, p0); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_trace2_no_nl(trace_bit, str, p0, p1) \
|
|
if (msw_cond(trace_bit)){ \
|
|
fprintf(trace_file, str, p0, p1); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_trace3_no_nl(trace_bit, str, p0, p1, p2) \
|
|
if (msw_cond(trace_bit)){ \
|
|
fprintf(trace_file, str, p0, p1, p2); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_trace4_no_nl(trace_bit, str, p0, p1, p2, p3) \
|
|
if (msw_cond(trace_bit)){ \
|
|
fprintf(trace_file, str, p0, p1, p2, p3); \
|
|
fflush( trace_file ); \
|
|
}
|
|
|
|
#define msw_lev_trace0_no_nl(trace_bit, lev, str) \
|
|
if (msw_cond(trace_bit,lev)){ \
|
|
fprintf(trace_file, str); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_lev_trace1_no_nl(trace_bit, lev, str, p0) \
|
|
if (msw_cond(trace_bit,lev)){ \
|
|
fprintf(trace_file, str, p0); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_lev_trace2_no_nl(trace_bit, lev, str, p0, p1) \
|
|
if (msw_cond(trace_bit,lev)){ \
|
|
fprintf(trace_file, str, p0, p1); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_lev_trace3_no_nl(trace_bit, lev, str, p0, p1, p2) \
|
|
if (msw_cond(trace_bit,lev)){ \
|
|
fprintf(trace_file, str, p0, p1, p2); \
|
|
fflush( trace_file ); \
|
|
}
|
|
#define msw_lev_trace4_no_nl(trace_bit, lev, str, p0, p1, p2, p3) \
|
|
if (msw_cond(trace_bit,lev)){ \
|
|
fprintf(trace_file, str, p0, p1, p2, p3); \
|
|
fflush( trace_file ); \
|
|
}
|
|
|
|
#else /* !defined(PROD) && !defined(MSWDVR_DEBUG) */
|
|
|
|
/*
|
|
* PROD or non_MSWDVR-debug flags.
|
|
*/
|
|
#define msw_trace_enter(trace_bit,nm)
|
|
#define msw_trace_enter0(trace_bit,nm,str)
|
|
#define msw_trace_enter1(trace_bit,nm,str,p0)
|
|
#define msw_trace_enter2(trace_bit,nm,str,p0,p1)
|
|
#define msw_trace_enter3(trace_bit,nm,str,p0,p1,p2)
|
|
#define msw_trace_enter4(trace_bit,nm,str,p0,p1,p2,p3)
|
|
#define msw_trace_enter5(trace_bit,nm,str,p0,p1,p2,p3,p4)
|
|
#define msw_trace_enter6(trace_bit,nm,str,p0,p1,p2,p3,p4,p5)
|
|
#define msw_trace_enter7(trace_bit,nm,str,p0,p1,p2,p3,p4,p5,p6)
|
|
#define msw_trace_enter8(trace_bit,nm,str,p0,p1,p2,p3,p4,p5,p6,p7)
|
|
#define msw_trace_enter9(trace_bit,nm,str,p0,p1,p2,p3,p4,p5,p6,p7,p8)
|
|
#define msw_trace_enter10(trace_bit,nm,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9)
|
|
#define msw_trace_enter11(trace_bit,nm,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10)
|
|
#define msw_trace_enter12(trace_bit,nm,str,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11)
|
|
#define msw_trace_leave(trace_bit,nm)
|
|
#define msw_trace_leave0(trace_bit,nm,str)
|
|
#define msw_trace_leave1(trace_bit,nm,str,p0)
|
|
|
|
#define msw_do_trace(trace_bit,call)
|
|
#define msw_do_lev_trace(trace_bit,lev,call)
|
|
|
|
#define msw_trace0(trace_bit,str)
|
|
#define msw_trace1(trace_bit,str,p0)
|
|
#define msw_trace2(trace_bit,str,p0,p1)
|
|
#define msw_trace3(trace_bit,str,p0,p1,p2)
|
|
#define msw_trace4(trace_bit,str,p0,p1,p2,p3)
|
|
#define msw_trace5(trace_bit,str,p0,p1,p2,p3,p4)
|
|
#define msw_trace6(trace_bit,str,p0,p1,p2,p3,p4,p5)
|
|
#define msw_trace7(trace_bit,str,p0,p1,p2,p3,p4,p5,p6)
|
|
#define msw_trace8(trace_bit,str,p0,p1,p2,p3,p4,p5,p6,p7)
|
|
#define msw_trace9(trace_bit,str,p0,p1,p2,p3,p4,p5,p6,p7,p8)
|
|
#define msw_trace0_no_nl(trace_bit,str)
|
|
#define msw_trace1_no_nl(trace_bit,str,p0)
|
|
#define msw_trace2_no_nl(trace_bit,str,p0,p1)
|
|
#define msw_trace3_no_nl(trace_bit,str,p0,p1,p2)
|
|
#define msw_trace4_no_nl(trace_bit,str,p0,p1,p2,p3)
|
|
#define msw_lev_trace0(trace_bit,lev,str)
|
|
#define msw_lev_trace1(trace_bit,lev,str,p0)
|
|
#define msw_lev_trace2(trace_bit,lev,str,p0,p1)
|
|
#define msw_lev_trace3(trace_bit,lev,str,p0,p1,p2)
|
|
#define msw_lev_trace4(trace_bit,lev,str,p0,p1,p2,p3)
|
|
#define msw_lev_trace5(trace_bit,lev,str,p0,p1,p2,p3,p4)
|
|
#define msw_lev_trace6(trace_bit,lev,str,p0,p1,p2,p3,p4,p5)
|
|
#define msw_lev_trace7(trace_bit,lev,str,p0,p1,p2,p3,p4,p5,p6)
|
|
#define msw_lev_trace8(trace_bit,lev,str,p0,p1,p2,p3,p4,p5,p6,p7)
|
|
#define msw_lev_trace9(trace_bit,lev,str,p0,p1,p2,p3,p4,p5,p6,p7,p8)
|
|
#define msw_lev_trace0_no_nl(trace_bit,lev,str)
|
|
#define msw_lev_trace1_no_nl(trace_bit,lev,str,p0)
|
|
#define msw_lev_trace2_no_nl(trace_bit,lev,str,p0,p1)
|
|
#define msw_lev_trace3_no_nl(trace_bit,lev,str,p0,p1,p2)
|
|
#define msw_lev_trace4_no_nl(trace_bit,lev,str,p0,p1,p2,p3)
|
|
|
|
#endif /* !defined(PROD) && !defined(MSWDVR_DEBUG) */
|
|
|
|
#endif /* MSW_DBG_H */
|