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