| plan 9 kernel history: overview | file list | diff list |
1991/1001/pc/devuart.c (diff list | history)
| 1991/1001/sys/src/9/pc/devuart.c:72,78 – 1991/1113/sys/src/9/pc/devuart.c:72,77 (short | long | prev | next) | ||
| 1991/0801 | Rendez r; /* kproc waiting for input */ Alarm *a; /* alarm for waking the kernel process */ int kstarted; /* kproc started */ | |
| 1991/0823 | /* error statistics */ ulong frame; | |
| 1991/1001/sys/src/9/pc/devuart.c:239,249 – 1991/1113/sys/src/9/pc/devuart.c:238,245 | ||
| 1991/0810 | ch = uartrdreg(up, Data) & 0xff; if(cq->putc) (*cq->putc)(cq, ch); | |
| 1991/1113 | else | |
| 1991/0810 | putc(cq, ch); | |
| 1991/1001/sys/src/9/pc/devuart.c:281,286 – 1991/1113/sys/src/9/pc/devuart.c:277,296 | ||
| 1991/0810 | uartintr(&uart[1]); | |
| 1991/0801 | } | |
| 1991/1113 | void uartclock(void) { Uart *up; IOQ *cq; for(up = uart; up < &uart[2]; up++){ cq = up->iq; if(up->wq && cangetc(cq)) wakeup(&cq->r); } } | |
| 1991/0801 | /* * turn on a port's interrupts. set DTR and RTS */ | |
| 1991/1001/sys/src/9/pc/devuart.c:301,311 – 1991/1113/sys/src/9/pc/devuart.c:311,316 | ||
| 1991/0807 | } | |
| 1991/0808 | /* | |
| 1991/0823 |
| |
| 1991/0801 | * set up i/o routines */ if(up->oq){ | |
| 1991/1001/sys/src/9/pc/devuart.c:431,439 – 1991/1113/sys/src/9/pc/devuart.c:436,441 | ||
| 1991/0801 | RD(q)->ptr = up; qunlock(up); | |
| 1991/0808 |
| |
| 1991/0801 |
| |
| 1991/1001/sys/src/9/pc/devuart.c:486,503 – 1991/1113/sys/src/9/pc/devuart.c:488,493 | ||
| 1991/0801 | case 'd': uartdtr(up, n); break; | |
| 1991/0808 |
| |
| 1991/0801 | case 'K': case 'k': uartbreak(up, n); | |
| 1991/1001/sys/src/9/pc/devuart.c:531,536 – 1991/1113/sys/src/9/pc/devuart.c:521,527 | ||
| 1991/0801 | Block *bp; int n; | |
| 1991/0823 | ulong frame, overrun; | |
| 1991/1113 | static ulong ints; | |
| 1991/0904 | frame = 0; overrun = 0; | |
| 1991/1001/sys/src/9/pc/devuart.c:540,545 – 1991/1113/sys/src/9/pc/devuart.c:531,538 | ||
| 1991/0808 | for(;;){ | |
| 1991/0801 | sleep(&cq->r, cangetc, cq); | |
| 1991/1113 | if((ints++ & 0x1f) == 0) owl(ints>>5); | |
| 1991/0808 | qlock(up); if(up->wq == 0){ cq->out = cq->in; | |