|
|
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.