1: #
   2: /*
   3:  */
   4: 
   5: /*
   6:  * GP DR11C driver used for C/A/T
   7:  */
   8: 
   9: #include "../h/param.h"
  10: #include "../h/dir.h"
  11: #include "../h/user.h"
  12: #include "../h/tty.h"
  13: 
  14: #define CATADDR ((struct catdev *)0167770)
  15: #define PCAT    (PZERO+9)
  16: #define CATHIWAT    100
  17: #define CATLOWAT    30
  18: 
  19: struct {
  20:     int catlock;
  21:     struct  clist   oq;
  22: } cat;
  23: 
  24: struct catdev {
  25:     int catcsr;
  26:     int catbuf;
  27: };
  28: 
  29: ctopen(dev)
  30: {
  31:     if (cat.catlock==0) {
  32:         cat.catlock++;
  33:         CATADDR->catcsr |= IENABLE;
  34:     } else
  35:         u.u_error = ENXIO;
  36: }
  37: 
  38: ctclose()
  39: {
  40:     cat.catlock = 0;
  41:     catintr();
  42: }
  43: 
  44: ctwrite(dev)
  45: {
  46:     register c;
  47:     extern lbolt;
  48: 
  49:     while ((c=cpass()) >= 0) {
  50:         spl5();
  51:         while (cat.oq.c_cc > CATHIWAT)
  52:             sleep((caddr_t)&cat.oq, PCAT);
  53:         while (putc(c, &cat.oq) < 0)
  54:             sleep((caddr_t)&lbolt, PCAT);
  55:         catintr();
  56:         spl0();
  57:     }
  58: }
  59: 
  60: catintr()
  61: {
  62:     register int c;
  63: 
  64:     if (CATADDR->catcsr&DONE) {
  65:         if ((c = getc(&cat.oq)) >= 0) {
  66:             CATADDR->catbuf = c;
  67:             if (cat.oq.c_cc==0 || cat.oq.c_cc==CATLOWAT)
  68:                 wakeup((caddr_t)&cat.oq);
  69:         } else {
  70:             if (cat.catlock==0)
  71:                 CATADDR->catcsr = 0;
  72:         }
  73:     }
  74: }

Defined functions

catintr defined in line 60; used 2 times
ctclose defined in line 38; never used
ctopen defined in line 29; never used
ctwrite defined in line 44; never used

Defined struct's

catdev defined in line 24; never used

Defined macros

CATADDR defined in line 14; used 4 times
CATHIWAT defined in line 16; used 1 times
  • in line 51
CATLOWAT defined in line 17; used 1 times
  • in line 67
PCAT defined in line 15; used 2 times
Last modified: 1979-05-13
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 692
Valid CSS Valid XHTML 1.0 Strict