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