1/*
2 * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of version 2 of the GNU General Public License as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it would be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 *
12 * Further, this software is distributed without any warranty that it is
13 * free of the rightful claim of any third person regarding infringement
14 * or the like.  Any license provided herein, whether implied or
15 * otherwise, applies only to this software file.  Patent licenses, if
16 * any, provided herein do not apply to combinations of this program with
17 * other software, or any other product whatsoever.
18 *
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, write the Free Software Foundation, Inc., 59
21 * Temple Place - Suite 330, Boston MA 02111-1307, USA.
22 *
23 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
24 * Mountain View, CA  94043, or:
25 *
26 * http://www.sgi.com
27 *
28 * For further information regarding this notice, see:
29 *
30 * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
31 */
32
33
34#include <sys/param.h>
35#include <sys/proc.h>
36#include <sys/kernel.h>
37#include <sys/systm.h>
38#include <sys/sysctl.h>
39#include <machine/stdarg.h>
40
41#include <support/debug.h>
42
43static SYSCTL_NODE(_debug, OID_AUTO, xfs, CTLFLAG_RD, 0, "XFS debug options");
44
45static int verbosity = 10;
46SYSCTL_INT(_debug_xfs, OID_AUTO, verbosity, CTLFLAG_RW, &verbosity, 0, "");
47
48#ifdef DEBUG
49
50static int doass = 1;
51SYSCTL_INT(_debug_xfs, OID_AUTO, assert, CTLFLAG_RW, &doass, 0, "");
52
53void
54assfail(char *a, char *f, int l)
55{
56	if (doass == 0) return;
57	panic("XFS assertion failed: %s, file: %s, line: %d\n", a, f, l);
58}
59
60int
61get_thread_id(void)
62{
63	return curthread->td_proc->p_pid;
64}
65
66#endif
67
68void
69cmn_err(register int level, char *fmt, ...)
70{
71	char    *fp = fmt;
72	char    message[256];
73	va_list ap;
74
75	if (verbosity < level)
76		return;
77
78	va_start(ap, fmt);
79	if (*fmt == '!') fp++;
80	vsprintf(message, fp, ap);
81	printf("%s\n", message);
82	va_end(ap);
83}
84
85
86void
87icmn_err(register int level, char *fmt, va_list ap)
88{
89	char	message[256];
90
91	if (verbosity < level)
92		return;
93
94	vsprintf(message, fmt, ap);
95	printf("cmn_err level %d %s\n",level, message);
96}
97
98