bring up to revision 7 for tahoe release
[unix-history] / usr / src / sys / tahoe / tahoe / sys_machdep.c
CommitLineData
430f81c3
MK
1/*
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved. The Berkeley software License Agreement
4 * specifies the terms and conditions for redistribution.
5 *
6 * @(#)sys_machdep.c 7.1 (Berkeley) %G%
7 */
90114b15 8
430f81c3
MK
9#include "param.h"
10#include "systm.h"
11#include "dir.h"
12#include "user.h"
13#include "ioctl.h"
14#include "file.h"
15#include "proc.h"
16#include "uio.h"
17#include "kernel.h"
18#include "mtio.h"
19#include "buf.h"
90114b15 20
430f81c3 21#include "pte.h"
90114b15
SL
22
23#ifdef TRACE
24int nvualarm;
25
26vtrace()
27{
28 register struct a {
29 int request;
30 int value;
31 } *uap;
32 int vdoualarm();
33
34 uap = (struct a *)u.u_ap;
35 switch (uap->request) {
36
37 case VTR_DISABLE: /* disable a trace point */
38 case VTR_ENABLE: /* enable a trace point */
39 if (uap->value < 0 || uap->value >= TR_NFLAGS)
40 u.u_error = EINVAL;
41 else {
42 u.u_r.r_val1 = traceflags[uap->value];
43 traceflags[uap->value] = uap->request;
44 }
45 break;
46
47 case VTR_VALUE: /* return a trace point setting */
48 if (uap->value < 0 || uap->value >= TR_NFLAGS)
49 u.u_error = EINVAL;
50 else
51 u.u_r.r_val1 = traceflags[uap->value];
52 break;
53
54 case VTR_UALARM: /* set a real-time ualarm, less than 1 min */
55 if (uap->value <= 0 || uap->value > 60 * hz ||
56 nvualarm > 5)
57 u.u_error = EINVAL;
58 else {
59 nvualarm++;
60 timeout(vdoualarm, (caddr_t)u.u_procp->p_pid,
61 uap->value);
62 }
63 break;
64
65 case VTR_STAMP:
66 trace(TR_STAMP, uap->value, u.u_procp->p_pid);
67 break;
68 }
69}
70
71vdoualarm(arg)
72 int arg;
73{
74 register struct proc *p;
75
76 p = pfind(arg);
77 if (p)
78 psignal(p, 16);
79 nvualarm--;
80}
81#endif
82
83#ifdef COMPAT
84/*
85 * Note: these tables are sorted by
86 * ioctl "code" (in ascending order).
87 */
88int dctls[] = { DKIOCHDR, 0 };
89int fctls[] = { FIOCLEX, FIONCLEX, FIOASYNC, FIONBIO, FIONREAD, 0 };
90int mctls[] = { MTIOCTOP, MTIOCGET, 0 };
91int tctls[] = {
92 TIOCGETD, TIOCSETD, TIOCHPCL, TIOCMODG, TIOCMODS,
93 TIOCGETP, TIOCSETP, TIOCSETN, TIOCEXCL, TIOCNXCL,
94 TIOCFLUSH,TIOCSETC, TIOCGETC, TIOCREMOTE,TIOCMGET,
95 TIOCMBIC, TIOCMBIS, TIOCMSET, TIOCSTART,TIOCSTOP,
96 TIOCPKT, TIOCNOTTY,TIOCSTI, TIOCOUTQ, TIOCGLTC,
97 TIOCSLTC, TIOCSPGRP,TIOCGPGRP,TIOCCDTR, TIOCSDTR,
98 TIOCCBRK, TIOCSBRK, TIOCLGET, TIOCLSET, TIOCLBIC,
99 TIOCLBIS, 0
100};
101
102/*
103 * Map an old style ioctl command to new.
104 */
105mapioctl(cmd)
106 int cmd;
107{
108 register int *map, c;
109
110 switch ((cmd >> 8) & 0xff) {
111
112 case 'd':
113 map = dctls;
114 break;
115
116 case 'f':
117 map = fctls;
118 break;
119
120 case 'm':
121 map = mctls;
122 break;
123
124 case 't':
125 map = tctls;
126 break;
127
128 default:
129 return (0);
130 }
131 while ((c = *map) && (c&0xff) < (cmd&0xff))
132 map++;
133 if (c && (c&0xff) == (cmd&0xff))
134 return (c);
135 return (0);
136}
137#endif