1158115Sume/*-
2158115Sume * Copyright (c) 2004 Michael Bushkov <bushman@rsu.ru>
3158115Sume * All rights reserved.
4158115Sume *
5158115Sume * Redistribution and use in source and binary forms, with or without
6158115Sume * modification, are permitted provided that the following conditions
7158115Sume * are met:
8158115Sume * 1. Redistributions of source code must retain the above copyright
9158115Sume *    notice, this list of conditions and the following disclaimer.
10158115Sume * 2. Redistributions in binary form must reproduce the above copyright
11158115Sume *    notice, this list of conditions and the following disclaimer in the
12158115Sume *    documentation and/or other materials provided with the distribution.
13158115Sume *
14158115Sume * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15158115Sume * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16158115Sume * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17158115Sume * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18158115Sume * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19158115Sume * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20158115Sume * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21158115Sume * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22158115Sume * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23158115Sume * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24158115Sume * SUCH DAMAGE.
25158115Sume *
26158115Sume */
27158115Sume
28158115Sume#include <sys/cdefs.h>
29158115Sume__FBSDID("$FreeBSD$");
30158115Sume
31158115Sume#include <stdio.h>
32194093Sdes
33158115Sume#include "debug.h"
34158115Sume
35158115Sumestatic	int	trace_level = 0;
36158115Sumestatic	int	trace_level_bk = 0;
37158115Sume
38158115Sumevoid
39194091Sdesnscd_trace_in(const char *s, const char *f, int l)
40158115Sume{
41158115Sume	int i;
42158115Sume	if (trace_level < TRACE_WANTED)
43158115Sume	{
44158115Sume		for (i = 0; i < trace_level; ++i)
45158115Sume			printf("\t");
46158115Sume
47158115Sume		printf("=> %s\n", s);
48158115Sume	}
49158115Sume
50158115Sume	++trace_level;
51158115Sume}
52158115Sume
53158115Sumevoid
54194091Sdesnscd_trace_point(const char *f, int l)
55158115Sume{
56158115Sume	int i;
57158115Sume
58158115Sume	if (trace_level < TRACE_WANTED)
59158115Sume	{
60158115Sume		for (i = 0; i < trace_level - 1; ++i)
61158115Sume			printf("\t");
62158115Sume
63158115Sume		printf("= %s: %d\n", f, l);
64158115Sume	}
65158115Sume}
66158115Sume
67158115Sumevoid
68194091Sdesnscd_trace_msg(const char *msg, const char *f, int l)
69158115Sume{
70158115Sume	int i;
71158115Sume
72158115Sume	if (trace_level < TRACE_WANTED)
73158115Sume	{
74158115Sume		for (i = 0; i < trace_level - 1; ++i)
75158115Sume			printf("\t");
76158115Sume
77158115Sume		printf("= MSG %s, %s: %d\n", msg, f, l);
78158115Sume	}
79158115Sume}
80158115Sume
81158115Sumevoid
82194091Sdesnscd_trace_ptr(const char *desc, const void *p, const char *f, int l)
83158115Sume{
84158115Sume	int i;
85158115Sume
86158115Sume	if (trace_level < TRACE_WANTED)
87158115Sume	{
88158115Sume		for (i = 0; i < trace_level - 1; ++i)
89158115Sume			printf("\t");
90158115Sume
91158115Sume		printf("= PTR %s: %p, %s: %d\n", desc, p, f, l);
92158115Sume	}
93158115Sume}
94158115Sume
95158115Sumevoid
96194091Sdesnscd_trace_int(const char *desc, int i, const char *f, int l)
97158115Sume{
98158115Sume	int j;
99158115Sume
100158115Sume	if (trace_level < TRACE_WANTED)
101158115Sume	{
102158115Sume		for (j = 0; j < trace_level - 1; ++j)
103158115Sume			printf("\t");
104158115Sume
105158115Sume		printf("= INT %s: %i, %s: %d\n",desc, i, f, l);
106158115Sume	}
107158115Sume}
108158115Sume
109158115Sumevoid
110194091Sdesnscd_trace_str(const char *desc, const char *s, const char *f, int l)
111158115Sume{
112158115Sume	int i;
113158115Sume
114158115Sume	if (trace_level < TRACE_WANTED)
115158115Sume	{
116158115Sume		for (i = 0; i < trace_level - 1; ++i)
117158115Sume			printf("\t");
118158115Sume
119158115Sume		printf("= STR %s: '%s', %s: %d\n", desc, s, f, l);
120158115Sume	}
121158115Sume}
122158115Sume
123158115Sumevoid
124194091Sdesnscd_trace_out(const char *s, const char *f, int l)
125158115Sume{
126158115Sume	int i;
127158115Sume
128158115Sume	--trace_level;
129158115Sume	if (trace_level < TRACE_WANTED)
130158115Sume	{
131158115Sume		for (i = 0; i < trace_level; ++i)
132158115Sume			printf("\t");
133158115Sume
134158115Sume		printf("<= %s\n", s);
135158115Sume	}
136158115Sume}
137158115Sume
138158115Sumevoid
139194091Sdesnscd_trace_on(void)
140158115Sume{
141158115Sume	trace_level = trace_level_bk;
142158115Sume	trace_level_bk = 0;
143158115Sume}
144158115Sume
145158115Sumevoid
146194091Sdesnscd_trace_off(void)
147158115Sume{
148158115Sume	trace_level_bk = trace_level;
149158115Sume	trace_level = 1024;
150158115Sume}
151