|
|
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: /*-
26: * Copyright (c) 1990, 1993
27: * The Regents of the University of California. All rights reserved.
28: *
29: * This code is derived from software contributed to Berkeley by
30: * William Jolitz.
31: *
32: * Redistribution and use in source and binary forms, with or without
33: * modification, are permitted provided that the following conditions
34: * are met:
35: * 1. Redistributions of source code must retain the above copyright
36: * notice, this list of conditions and the following disclaimer.
37: * 2. Redistributions in binary form must reproduce the above copyright
38: * notice, this list of conditions and the following disclaimer in the
39: * documentation and/or other materials provided with the distribution.
40: * 3. All advertising materials mentioning features or use of this software
41: * must display the following acknowledgement:
42: * This product includes software developed by the University of
43: * California, Berkeley and its contributors.
44: * 4. Neither the name of the University nor the names of its contributors
45: * may be used to endorse or promote products derived from this software
46: * without specific prior written permission.
47: *
48: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
49: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
51: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
52: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
53: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58: * SUCH DAMAGE.
59: *
60: * @(#)sys_machdep.c 8.1 (Berkeley) 6/11/93
61: */
62:
63: #include <sys/param.h>
64: #include <sys/systm.h>
65: #include <sys/ioctl.h>
66: #include <sys/file.h>
67: #include <sys/proc.h>
68: #include <sys/uio.h>
69: #include <sys/kernel.h>
70: #include <sys/mtio.h>
71: #include <sys/buf.h>
72: #include <sys/trace.h>
73:
74: resuba()
75: {
76: }
77:
78: #ifdef TRACE
79: int nvualarm;
80:
81: struct vtrace_args {
82: int request;
83: int value;
84: };
85: vtrace(p, uap, retval)
86: struct proc *p;
87: register struct args *uap;
88: int *retval;
89: {
90: int vdoualarm();
91:
92: switch (uap->request) {
93:
94: case VTR_DISABLE: /* disable a trace point */
95: case VTR_ENABLE: /* enable a trace point */
96: if (uap->value < 0 || uap->value >= TR_NFLAGS)
97: return (EINVAL);
98: *retval = traceflags[uap->value];
99: traceflags[uap->value] = uap->request;
100: break;
101:
102: case VTR_VALUE: /* return a trace point setting */
103: if (uap->value < 0 || uap->value >= TR_NFLAGS)
104: return (EINVAL);
105: *retval = traceflags[uap->value];
106: break;
107:
108: case VTR_UALARM: /* set a real-time ualarm, less than 1 min */
109: if (uap->value <= 0 || uap->value > 60 * hz || nvualarm > 5)
110: return (EINVAL);
111: nvualarm++;
112: timeout(vdoualarm, (caddr_t)p->p_pid, uap->value);
113: break;
114:
115: case VTR_STAMP:
116: trace(TR_STAMP, uap->value, p->p_pid);
117: break;
118: }
119: return (0);
120: }
121:
122: vdoualarm(arg)
123: int arg;
124: {
125: register struct proc *p;
126:
127: p = pfind(arg);
128: if (p)
129: psignal(p, 16);
130: nvualarm--;
131: }
132: #endif
133:
134: #ifdef COMPAT
135: /*
136: * Note: these tables are sorted by
137: * ioctl "code" (in ascending order).
138: */
139: int fctls[] = { FIOCLEX, FIONCLEX, FIOASYNC, FIONBIO, FIONREAD, 0 };
140: int tctls[] = {
141: TIOCGETD, TIOCSETD, TIOCHPCL, TIOCMODG, TIOCMODS,
142: TIOCGETP, TIOCSETP, TIOCSETN, TIOCEXCL, TIOCNXCL,
143: TIOCFLUSH,TIOCSETC, TIOCGETC, TIOCREMOTE,TIOCMGET,
144: TIOCMBIC, TIOCMBIS, TIOCMSET, TIOCSTART,TIOCSTOP,
145: TIOCPKT, TIOCNOTTY,TIOCSTI, TIOCOUTQ, TIOCGLTC,
146: TIOCSLTC, TIOCSPGRP,TIOCGPGRP,TIOCCDTR, TIOCSDTR,
147: TIOCCBRK, TIOCSBRK, TIOCLGET, TIOCLSET, TIOCLBIC,
148: TIOCLBIS, 0
149: };
150:
151: /*
152: * Map an old style ioctl command to new.
153: */
154: mapioctl(cmd)
155: int cmd;
156: {
157: register int *map, c;
158:
159: switch ((cmd >> 8) & 0xff) {
160:
161: case 'f':
162: map = fctls;
163: break;
164:
165: case 't':
166: map = tctls;
167: break;
168:
169: default:
170: return (0);
171: }
172: while ((c = *map) && (c&0xff) < (cmd&0xff))
173: map++;
174: if (c && (c&0xff) == (cmd&0xff))
175: return (c);
176: return (0);
177: }
178: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.