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