|
|
1.1 ! root 1: /* $Header: /usr/src/sys/drv/RCS/ct.c,v 1.1 88/03/24 16:18:09 src Exp $ */ ! 2: /* (lgl- ! 3: * The information contained herein is a trade secret of Mark Williams ! 4: * Company, and is confidential information. It is provided under a ! 5: * license agreement, and may be copied or disclosed only under the ! 6: * terms of that agreement. Any reproduction or disclosure of this ! 7: * material without the express written authorization of Mark Williams ! 8: * Company or persuant to the license agreement is unlawful. ! 9: * ! 10: * COHERENT Version 2.3.37 ! 11: * Copyright (c) 1982, 1983, 1984. ! 12: * An unpublished work by Mark Williams Company, Chicago. ! 13: * All rights reserved. ! 14: -lgl) */ ! 15: /* ! 16: * Coherent ! 17: * Console terminal driver. ! 18: * ! 19: * $Log: /usr/src/sys/drv/RCS/ct.c,v $ ! 20: * Revision 1.1 88/03/24 16:18:09 src ! 21: * Initial revision ! 22: * ! 23: * 86/11/19 Allan Cornish /usr/src/sys/drv/ct.c ! 24: * Added support for System V.3 compatible polls. ! 25: */ ! 26: #include <sys/coherent.h> ! 27: #include <sys/con.h> ! 28: #include <errno.h> ! 29: #include <sys/proc.h> ! 30: #include <sys/stat.h> ! 31: #include <sys/uproc.h> ! 32: ! 33: /* ! 34: * Functions for configuration. ! 35: */ ! 36: int ctopen(); ! 37: int ctclose(); ! 38: int ctread(); ! 39: int ctwrite(); ! 40: int ctioctl(); ! 41: int ctpoll(); ! 42: int nulldev(); ! 43: int nonedev(); ! 44: ! 45: /* ! 46: * Configuration table. ! 47: */ ! 48: CON ctcon ={ ! 49: DFCHR|DFPOL, /* Flags */ ! 50: 1, /* Major index */ ! 51: ctopen, /* Open */ ! 52: ctclose, /* Close */ ! 53: nulldev, /* Block */ ! 54: ctread, /* Read */ ! 55: ctwrite, /* Write */ ! 56: ctioctl, /* Ioctl */ ! 57: nulldev, /* Powerfail */ ! 58: nulldev, /* Timeout */ ! 59: nulldev, /* Load */ ! 60: nulldev, /* Unload */ ! 61: ctpoll /* Poll */ ! 62: }; ! 63: ! 64: /* ! 65: * Open. ! 66: */ ! 67: ctopen(dev, m) ! 68: dev_t dev; ! 69: { ! 70: register dev_t ttdev; ! 71: ! 72: if ((ttdev=SELF->p_ttdev) == NODEV) { ! 73: u.u_error = ENXIO; ! 74: return; ! 75: } ! 76: dopen(ttdev, m, DFCHR); ! 77: } ! 78: ! 79: /* ! 80: * Close. ! 81: */ ! 82: ctclose(dev) ! 83: dev_t dev; ! 84: { ! 85: dclose(SELF->p_ttdev); ! 86: } ! 87: ! 88: /* ! 89: * Read. ! 90: */ ! 91: ctread(dev, iop) ! 92: dev_t dev; ! 93: IO *iop; ! 94: { ! 95: dread(SELF->p_ttdev, iop); ! 96: } ! 97: ! 98: /* ! 99: * Write. ! 100: */ ! 101: ctwrite(dev, iop) ! 102: dev_t dev; ! 103: IO *iop; ! 104: { ! 105: dwrite(SELF->p_ttdev, iop); ! 106: } ! 107: ! 108: /* ! 109: * Ioctl. ! 110: */ ! 111: ctioctl(dev, com, vec) ! 112: dev_t dev; ! 113: struct sgttyb *vec; ! 114: { ! 115: dioctl(SELF->p_ttdev, com, vec); ! 116: } ! 117: ! 118: /* ! 119: * Poll. ! 120: */ ! 121: ctpoll(dev, ev) ! 122: dev_t dev; ! 123: int ev; ! 124: { ! 125: return dpoll(SELF->p_ttdev, ev); ! 126: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.