1 /* 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 */ 40 typedef struct ktrace_entry { 41 void *val[16]; 42 } ktrace_entry_t; 43 44 /* 45 * Trace buffer header structure. 46 */ 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; 54 55 /* 56 * Trace buffer snapshot structure. 57 */ 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; 62 63 64 #ifdef CONFIG_XFS_TRACE 65 66 extern void ktrace_init(int zentries); 67 extern void ktrace_uninit(void); 68 69 extern ktrace_t *ktrace_alloc(int, int); 70 extern void ktrace_free(ktrace_t *); 71 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 *); 90 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 *); 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__ */ 102