1/* 2 * Copyright (c) 2011 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 29/* $NetBSD: altq_rmclass_debug.h,v 1.7 2006/10/12 19:59:08 peter Exp $ */ 30/* $KAME: altq_rmclass_debug.h,v 1.3 2002/11/29 04:36:24 kjc Exp $ */ 31 32/* 33 * Copyright (c) Sun Microsystems, Inc. 1998 All rights reserved. 34 * 35 * Redistribution and use in source and binary forms, with or without 36 * modification, are permitted provided that the following conditions 37 * are met: 38 * 39 * 1. Redistributions of source code must retain the above copyright 40 * notice, this list of conditions and the following disclaimer. 41 * 42 * 2. Redistributions in binary form must reproduce the above copyright 43 * notice, this list of conditions and the following disclaimer in the 44 * documentation and/or other materials provided with the distribution. 45 * 46 * 3. All advertising materials mentioning features or use of this software 47 * must display the following acknowledgement: 48 * This product includes software developed by the SMCC Technology 49 * Development Group at Sun Microsystems, Inc. 50 * 51 * 4. The name of the Sun Microsystems, Inc nor may not be used to endorse or 52 * promote products derived from this software without specific prior 53 * written permission. 54 * 55 * SUN MICROSYSTEMS DOES NOT CLAIM MERCHANTABILITY OF THIS SOFTWARE OR THE 56 * SUITABILITY OF THIS SOFTWARE FOR ANY PARTICULAR PURPOSE. The software is 57 * provided "as is" without express or implied warranty of any kind. 58 * 59 * These notices must be retained in any copies of any part of this software. 60 */ 61 62#ifndef _NET_PKTSCHED_PKTSCHED_RMCLASS_DEBUG_H_ 63#define _NET_PKTSCHED_PKTSCHED_RMCLASS_DEBUG_H_ 64 65/* #pragma ident "@(#)rm_class_debug.h 1.7 98/05/04 SMI" */ 66 67/* 68 * Cbq debugging macros 69 */ 70 71#ifdef __cplusplus 72extern "C" { 73#endif 74 75#ifdef BSD_KERNEL_PRIVATE 76 77#ifdef CBQ_TRACE 78#ifndef NCBQTRACE 79#define NCBQTRACE (16 * 1024) 80#endif 81 82/* 83 * To view the trace output, using adb, type: 84 * adb -k /dev/ksyms /dev/mem <cr>, then type 85 * cbqtrace_count/D to get the count, then type 86 * cbqtrace_buffer,0tcount/Dp4C" "Xn 87 * This will dump the trace buffer from 0 to count. 88 */ 89/* 90 * in ALTQ, "call cbqtrace_dump(N)" from DDB to display 20 events 91 * from Nth event in the circular buffer. 92 */ 93 94struct cbqtrace { 95 int count; 96 int function; /* address of function */ 97 int trace_action; /* descriptive 4 characters */ 98 int object; /* object operated on */ 99}; 100 101extern struct cbqtrace cbqtrace_buffer[]; 102extern struct cbqtrace *cbqtrace_ptr; 103extern int cbqtrace_count; 104 105#define CBQTRACEINIT() { \ 106 if (cbqtrace_ptr == NULL) \ 107 cbqtrace_ptr = cbqtrace_buffer; \ 108 else { \ 109 cbqtrace_ptr = cbqtrace_buffer; \ 110 bzero((void *)cbqtrace_ptr, sizeof (cbqtrace_buffer)); \ 111 cbqtrace_count = 0; \ 112 } \ 113} 114 115#define CBQTRACE(func, act, obj) { \ 116 int *_p = &cbqtrace_ptr->count; \ 117 *_p++ = ++cbqtrace_count; \ 118 *_p++ = (int)(func); \ 119 *_p++ = (int)(act); \ 120 *_p++ = (int)(obj); \ 121 if ((struct cbqtrace *)(void *)_p >= &cbqtrace_buffer[NCBQTRACE]) \ 122 cbqtrace_ptr = cbqtrace_buffer; \ 123 else \ 124 cbqtrace_ptr = (struct cbqtrace *)(void *)_p; \ 125 } 126#else 127 128/* If no tracing, define no-ops */ 129#define CBQTRACEINIT() 130#define CBQTRACE(a, b, c) 131 132#endif /* !CBQ_TRACE */ 133 134#endif /* BSD_KERNEL_PRIVATE */ 135 136#ifdef __cplusplus 137} 138#endif 139 140#endif /* _NET_PKTSCHED_PKTSCHED_RMCLASS_DEBUG_H_ */ 141