1: #
   2: /*
   3:  */
   4: 
   5: /*
   6:  *	Memory special file
   7:  *	minor device 0 is physical memory
   8:  *	minor device 1 is kernel memory
   9:  *	minor device 2 is EOF/RATHOLE
  10:  */
  11: 
  12: #include "../h/param.h"
  13: #include "../h/dir.h"
  14: #include "../h/user.h"
  15: #include "../h/conf.h"
  16: #include "../h/seg.h"
  17: 
  18: mmread(dev)
  19: {
  20:     register c, bn, on;
  21:     int a, d;
  22: 
  23:     if(minor(dev) == 2)
  24:         return;
  25:     do {
  26:         bn = u.u_offset >> 6;
  27:         on = u.u_offset & 077;
  28:         a = UISA->r[0];
  29:         d = UISD->r[0];
  30:         spl7();
  31:         UISA->r[0] = bn;
  32:         UISD->r[0] = 077406;
  33:         if(minor(dev) == 1)
  34:             UISA->r[0] = (ka6-6)->r[(bn>>7)&07] + (bn & 0177);
  35:         if ((c = fuibyte((caddr_t)on)) < 0)
  36:             u.u_error = ENXIO;
  37:         UISA->r[0] = a;
  38:         UISD->r[0] = d;
  39:         spl0();
  40:     } while(u.u_error==0 && passc(c)>=0);
  41: }
  42: 
  43: mmwrite(dev)
  44: {
  45:     register c, bn, on;
  46:     int a, d;
  47: 
  48:     if(minor(dev) == 2) {
  49:         u.u_count = 0;
  50:         return;
  51:     }
  52:     for(;;) {
  53:         bn = u.u_offset >> 6;
  54:         on = u.u_offset & 077;
  55:         if ((c=cpass())<0 || u.u_error!=0)
  56:             break;
  57:         a = UISA->r[0];
  58:         d = UISD->r[0];
  59:         spl7();
  60:         UISA->r[0] = bn;
  61:         UISD->r[0] = 077406;
  62:         if(minor(dev) == 1)
  63:             UISA->r[0] = (ka6-6)->r[(bn>>7)&07] + (bn & 0177);
  64:         if (suibyte((caddr_t)on, c) < 0)
  65:             u.u_error = ENXIO;
  66:         UISA->r[0] = a;
  67:         UISD->r[0] = d;
  68:         spl0();
  69:     }
  70: }

Defined functions

mmread defined in line 18; used 2 times
mmwrite defined in line 43; used 2 times
Last modified: 1979-05-12
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 621
Valid CSS Valid XHTML 1.0 Strict