1: /*
   2:  * Copyright (c) 1982 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	6.4 (Berkeley) 6/8/85
   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: #include "enetfilter.h"
 114: #if NENETFILTER > 0
 115: #include "../vaxif/enet.h"
 116: int Ectls[] = {     /* CMU enet driver compatibility */
 117:     EIOCSETP, EIOCGETP, EIOCSETF, EIOCENBS, EIOCINHS,
 118:     EIOCSETW, EIOCFLUSH, EIOCALLOCP, EIOCDEALLOCP, EIOCMBIS,
 119:     EIOCMBIC, 0
 120: };
 121: #endif	NENETFILTER
 122: 
 123: /*
 124:  * Map an old style ioctl command to new.
 125:  */
 126: mapioctl(cmd)
 127:     int cmd;
 128: {
 129:     register int *map, c;
 130: 
 131:     switch ((cmd >> 8) & 0xff) {
 132: 
 133:     case 'd':
 134:         map = dctls;
 135:         break;
 136: 
 137:     case 'f':
 138:         map = fctls;
 139:         break;
 140: 
 141:     case 'm':
 142:         map = mctls;
 143:         break;
 144: 
 145:     case 't':
 146:         map = tctls;
 147:         break;
 148: 
 149: #if NENETFILTER > 0
 150:     case 'E':
 151:         map = Ectls;
 152:         break;
 153: #endif	NENETFILTER
 154: 
 155:     default:
 156:         return (0);
 157:     }
 158:     while ((c = *map) && (c&0xff) < (cmd&0xff))
 159:         map++;
 160:     if (c && (c&0xff) == (cmd&0xff))
 161:         return (c);
 162:     return (0);
 163: }
 164: #endif

Defined functions

mapioctl defined in line 126; never used
resuba defined in line 27; never used
vdoualarm defined in line 83; used 2 times
vtrace defined in line 38; never used

Defined variables

Ectls defined in line 116; used 1 times
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: 1985-11-11
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 697
Valid CSS Valid XHTML 1.0 Strict