1 /* 2 * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. 3 * All Rights Reserved. 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it would be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write the Free Software Foundation, 16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 #ifndef __XFS_SUPPORT_KTRACE_H__ 19 #define __XFS_SUPPORT_KTRACE_H__ 20 21 /* 22 * Trace buffer entry structure. 23 */ 24 typedef struct ktrace_entry { 25 void *val[16]; 26 } ktrace_entry_t; 27 28 /* 29 * Trace buffer header structure. 30 */ 31 typedef struct ktrace { 32 int kt_nentries; /* number of entries in trace buf */ 33 atomic_t kt_index; /* current index in entries */ 34 unsigned int kt_index_mask; 35 int kt_rollover; 36 ktrace_entry_t *kt_entries; /* buffer of entries */ 37 } ktrace_t; 38 39 /* 40 * Trace buffer snapshot structure. 41 */ 42 typedef struct ktrace_snap { 43 int ks_start; /* kt_index at time of snap */ 44 int ks_index; /* current index */ 45 } ktrace_snap_t; 46 47 48 #ifdef CONFIG_XFS_TRACE 49 50 extern void ktrace_init(int zentries); 51 extern void ktrace_uninit(void); 52 53 extern ktrace_t *ktrace_alloc(int, unsigned int __nocast); 54 extern void ktrace_free(ktrace_t *); 55 56 extern void ktrace_enter( 57 ktrace_t *, 58 void *, 59 void *, 60 void *, 61 void *, 62 void *, 63 void *, 64 void *, 65 void *, 66 void *, 67 void *, 68 void *, 69 void *, 70 void *, 71 void *, 72 void *, 73 void *); 74 75 extern ktrace_entry_t *ktrace_first(ktrace_t *, ktrace_snap_t *); 76 extern int ktrace_nentries(ktrace_t *); 77 extern ktrace_entry_t *ktrace_next(ktrace_t *, ktrace_snap_t *); 78 extern ktrace_entry_t *ktrace_skip(ktrace_t *, int, ktrace_snap_t *); 79 80 #else 81 #define ktrace_init(x) do { } while (0) 82 #define ktrace_uninit() do { } while (0) 83 #endif /* CONFIG_XFS_TRACE */ 84 85 #endif /* __XFS_SUPPORT_KTRACE_H__ */ 86