|
|
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.