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

Defined functions

mapioctl defined in line 117; used 1 times
resuba defined in line 27; used 2 times
vdoualarm defined in line 83; used 2 times
vtrace defined in line 38; used 2 times

Defined variables

dctls defined in line 100; used 1 times
fctls defined in line 101; used 1 times
mctls defined in line 102; used 1 times
nvualarm defined in line 36; used 3 times
tctls defined in line 103; used 1 times

Defined struct's

a defined in line 40; used 2 times
  • in line 46(2)
Last modified: 1986-06-05
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 796
Valid CSS Valid XHTML 1.0 Strict