blob: 92d1a1a5d04b643d021a05d40b1107201a6eb5fa [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * Copyright (c) 2000-2003 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#ifndef __XFS_SUPPORT_KTRACE_H__
33#define __XFS_SUPPORT_KTRACE_H__
34
35#include <spin.h>
36
37/*
38 * Trace buffer entry structure.
39 */
40typedef struct ktrace_entry {
41 void *val[16];
42} ktrace_entry_t;
43
44/*
45 * Trace buffer header structure.
46 */
47typedef 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;
54
55/*
56 * Trace buffer snapshot structure.
57 */
58typedef struct ktrace_snap {
59 int ks_start; /* kt_index at time of snap */
60 int ks_index; /* current index */
61} ktrace_snap_t;
62
63
64#ifdef CONFIG_XFS_TRACE
65
66extern void ktrace_init(int zentries);
67extern void ktrace_uninit(void);
68
69extern ktrace_t *ktrace_alloc(int, int);
70extern void ktrace_free(ktrace_t *);
71
72extern 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 *);
90
91extern ktrace_entry_t *ktrace_first(ktrace_t *, ktrace_snap_t *);
92extern int ktrace_nentries(ktrace_t *);
93extern ktrace_entry_t *ktrace_next(ktrace_t *, ktrace_snap_t *);
94extern ktrace_entry_t *ktrace_skip(ktrace_t *, int, ktrace_snap_t *);
95
96#else
97#define ktrace_init(x) do { } while (0)
98#define ktrace_uninit() do { } while (0)
99#endif /* CONFIG_XFS_TRACE */
100
101#endif /* __XFS_SUPPORT_KTRACE_H__ */