initial commit with v2.6.9
[linux-2.6.9-moxart.git] / fs / xfs / support / ktrace.h
blob92d1a1a5d04b643d021a05d40b1107201a6eb5fa
1 /*
2 * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved.
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.
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.
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.
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.
23 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
24 * Mountain View, CA 94043, or:
26 * http://www.sgi.com
28 * For further information regarding this notice, see:
30 * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
32 #ifndef __XFS_SUPPORT_KTRACE_H__
33 #define __XFS_SUPPORT_KTRACE_H__
35 #include <spin.h>
38 * Trace buffer entry structure.
40 typedef struct ktrace_entry {
41 void *val[16];
42 } ktrace_entry_t;
45 * Trace buffer header structure.
47 typedef struct ktrace {
48 lock_t kt_lock; /* mutex to guard counters */
49 int kt_nentries; /* number of entries in trace buf */
50 int kt_index; /* current index in entries */
51 int kt_rollover;
52 ktrace_entry_t *kt_entries; /* buffer of entries */
53 } ktrace_t;
56 * Trace buffer snapshot structure.
58 typedef struct ktrace_snap {
59 int ks_start; /* kt_index at time of snap */
60 int ks_index; /* current index */
61 } ktrace_snap_t;
64 #ifdef CONFIG_XFS_TRACE
66 extern void ktrace_init(int zentries);
67 extern void ktrace_uninit(void);
69 extern ktrace_t *ktrace_alloc(int, int);
70 extern void ktrace_free(ktrace_t *);
72 extern void ktrace_enter(
73 ktrace_t *,
74 void *,
75 void *,
76 void *,
77 void *,
78 void *,
79 void *,
80 void *,
81 void *,
82 void *,
83 void *,
84 void *,
85 void *,
86 void *,
87 void *,
88 void *,
89 void *);
91 extern ktrace_entry_t *ktrace_first(ktrace_t *, ktrace_snap_t *);
92 extern int ktrace_nentries(ktrace_t *);
93 extern ktrace_entry_t *ktrace_next(ktrace_t *, ktrace_snap_t *);
94 extern ktrace_entry_t *ktrace_skip(ktrace_t *, int, ktrace_snap_t *);
96 #else
97 #define ktrace_init(x) do { } while (0)
98 #define ktrace_uninit() do { } while (0)
99 #endif /* CONFIG_XFS_TRACE */
101 #endif /* __XFS_SUPPORT_KTRACE_H__ */