|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ ! 26: /* ! 27: * Copyright (c) 1988, 1993 ! 28: * The Regents of the University of California. All rights reserved. ! 29: * ! 30: * Redistribution and use in source and binary forms, with or without ! 31: * modification, are permitted provided that the following conditions ! 32: * are met: ! 33: * 1. Redistributions of source code must retain the above copyright ! 34: * notice, this list of conditions and the following disclaimer. ! 35: * 2. Redistributions in binary form must reproduce the above copyright ! 36: * notice, this list of conditions and the following disclaimer in the ! 37: * documentation and/or other materials provided with the distribution. ! 38: * 3. All advertising materials mentioning features or use of this software ! 39: * must display the following acknowledgement: ! 40: * This product includes software developed by the University of ! 41: * California, Berkeley and its contributors. ! 42: * 4. Neither the name of the University nor the names of its contributors ! 43: * may be used to endorse or promote products derived from this software ! 44: * without specific prior written permission. ! 45: * ! 46: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 47: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 48: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 49: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 50: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 51: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 52: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 53: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 54: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 55: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 56: * SUCH DAMAGE. ! 57: * ! 58: * @(#)ktrace.h 8.2 (Berkeley) 2/19/95 ! 59: */ ! 60: ! 61: #ifndef _SYS_KTRACE_H_ ! 62: #define _SYS_KTRACE_H_ ! 63: ! 64: /* ! 65: * operations to ktrace system call (KTROP(op)) ! 66: */ ! 67: #define KTROP_SET 0 /* set trace points */ ! 68: #define KTROP_CLEAR 1 /* clear trace points */ ! 69: #define KTROP_CLEARFILE 2 /* stop all tracing to file */ ! 70: #define KTROP(o) ((o)&3) /* macro to extract operation */ ! 71: /* ! 72: * flags (ORed in with operation) ! 73: */ ! 74: #define KTRFLAG_DESCEND 4 /* perform op on all children too */ ! 75: ! 76: /* ! 77: * ktrace record header ! 78: */ ! 79: struct ktr_header { ! 80: int ktr_len; /* length of buf */ ! 81: short ktr_type; /* trace record type */ ! 82: pid_t ktr_pid; /* process id */ ! 83: char ktr_comm[MAXCOMLEN+1]; /* command name */ ! 84: struct timeval ktr_time; /* timestamp */ ! 85: caddr_t ktr_buf; ! 86: }; ! 87: ! 88: /* ! 89: * Test for kernel trace point ! 90: */ ! 91: #define KTRPOINT(p, type) \ ! 92: (((p)->p_traceflag & ((1<<(type))|KTRFAC_ACTIVE)) == (1<<(type))) ! 93: ! 94: /* ! 95: * ktrace record types ! 96: */ ! 97: ! 98: /* ! 99: * KTR_SYSCALL - system call record ! 100: */ ! 101: #define KTR_SYSCALL 1 ! 102: struct ktr_syscall { ! 103: int ktr_code; /* syscall number */ ! 104: int ktr_argsize; /* size of arguments */ ! 105: /* ! 106: * followed by ktr_argsize/sizeof(register_t) "register_t"s ! 107: */ ! 108: }; ! 109: ! 110: /* ! 111: * KTR_SYSRET - return from system call record ! 112: */ ! 113: #define KTR_SYSRET 2 ! 114: struct ktr_sysret { ! 115: short ktr_code; ! 116: short ktr_eosys; ! 117: int ktr_error; ! 118: int ktr_retval; ! 119: }; ! 120: ! 121: /* ! 122: * KTR_NAMEI - namei record ! 123: */ ! 124: #define KTR_NAMEI 3 ! 125: /* record contains pathname */ ! 126: ! 127: /* ! 128: * KTR_GENIO - trace generic process i/o ! 129: */ ! 130: #define KTR_GENIO 4 ! 131: struct ktr_genio { ! 132: int ktr_fd; ! 133: enum uio_rw ktr_rw; ! 134: /* ! 135: * followed by data successfully read/written ! 136: */ ! 137: }; ! 138: ! 139: /* ! 140: * KTR_PSIG - trace processed signal ! 141: */ ! 142: #define KTR_PSIG 5 ! 143: struct ktr_psig { ! 144: int signo; ! 145: sig_t action; ! 146: int mask; ! 147: int code; ! 148: }; ! 149: ! 150: /* ! 151: * KTR_CSW - trace context switches ! 152: */ ! 153: #define KTR_CSW 6 ! 154: struct ktr_csw { ! 155: int out; /* 1 if switch out, 0 if switch in */ ! 156: int user; /* 1 if usermode (ivcsw), 0 if kernel (vcsw) */ ! 157: }; ! 158: ! 159: /* ! 160: * kernel trace points (in p_traceflag) ! 161: */ ! 162: #define KTRFAC_MASK 0x00ffffff ! 163: #define KTRFAC_SYSCALL (1<<KTR_SYSCALL) ! 164: #define KTRFAC_SYSRET (1<<KTR_SYSRET) ! 165: #define KTRFAC_NAMEI (1<<KTR_NAMEI) ! 166: #define KTRFAC_GENIO (1<<KTR_GENIO) ! 167: #define KTRFAC_PSIG (1<<KTR_PSIG) ! 168: #define KTRFAC_CSW (1<<KTR_CSW) ! 169: /* ! 170: * trace flags (also in p_traceflags) ! 171: */ ! 172: #define KTRFAC_ROOT 0x80000000 /* root set this trace */ ! 173: #define KTRFAC_INHERIT 0x40000000 /* pass trace flags to children */ ! 174: #define KTRFAC_ACTIVE 0x20000000 /* ktrace logging in progress, ignore */ ! 175: ! 176: #ifndef _KERNEL ! 177: ! 178: #include <sys/cdefs.h> ! 179: ! 180: __BEGIN_DECLS ! 181: int ktrace __P((const char *, int, int, pid_t)); ! 182: __END_DECLS ! 183: ! 184: #endif /* !_KERNEL */ ! 185: #endif /* !_SYS_KTRACE_H_ */ ! 186:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.