|
|
1.1 root 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.5 (Berkeley) 6/28/90
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:
19: #include "pte.h"
20:
21: #ifdef TRACE
22: int nvualarm;
23:
24: /* ARGSUSED */
25: vtrace(p, uap, retval)
26: register struct proc *p;
27: register struct args {
28: int request;
29: int value;
30: } *uap;
31: int *retval;
32: {
33: int vdoualarm();
34:
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: return (EINVAL);
41: *retval = traceflags[uap->value];
42: traceflags[uap->value] = uap->request;
43: break;
44:
45: case VTR_VALUE: /* return a trace point setting */
46: if (uap->value < 0 || uap->value >= TR_NFLAGS)
47: return (EINVAL);
48: *retval = traceflags[uap->value];
49: break;
50:
51: case VTR_UALARM: /* set a real-time ualarm, less than 1 min */
52: if (uap->value <= 0 || uap->value > 60 * hz || nvualarm > 5)
53: return (EINVAL);
54: nvualarm++;
55: timeout(vdoualarm, (caddr_t)p->p_pid, uap->value);
56: break;
57:
58: case VTR_STAMP:
59: trace(TR_STAMP, uap->value, p->p_pid);
60: break;
61: }
62: return (0);
63: }
64:
65: vdoualarm(arg)
66: int arg;
67: {
68: register struct proc *p;
69:
70: p = pfind(arg);
71: if (p)
72: psignal(p, 16);
73: nvualarm--;
74: }
75: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.