1*41488Smckusick /* 2*41488Smckusick * Copyright (c) 1988 University of Utah. 3*41488Smckusick * Copyright (c) 1990 The Regents of the University of California. 4*41488Smckusick * All rights reserved. 5*41488Smckusick * 6*41488Smckusick * This code is derived from software contributed to Berkeley by 7*41488Smckusick * the Systems Programming Group of the University of Utah Computer 8*41488Smckusick * Science Department. 9*41488Smckusick * 10*41488Smckusick * %sccs.include.redist.c% 11*41488Smckusick * 12*41488Smckusick * from: Utah $Hdr: cons.c 1.5 89/08/22$ 13*41488Smckusick * 14*41488Smckusick * @(#)cons.c 7.1 (Berkeley) 05/08/90 15*41488Smckusick */ 16*41488Smckusick 17*41488Smckusick #include "param.h" 18*41488Smckusick #include "samachdep.h" 19*41488Smckusick #include "machine/cons.h" 20*41488Smckusick 21*41488Smckusick int nodev(); 22*41488Smckusick #ifdef ITECONSOLE 23*41488Smckusick int iteprobe(), iteinit(), itegetchar(), iteputchar(); 24*41488Smckusick #endif 25*41488Smckusick #ifdef DCACONSOLE 26*41488Smckusick int dcaprobe(), dcainit(), dcagetchar(), dcaputchar(); 27*41488Smckusick #endif 28*41488Smckusick 29*41488Smckusick struct consdev constab[] = { 30*41488Smckusick #ifdef ITECONSOLE 31*41488Smckusick { iteprobe, iteinit, itegetchar, iteputchar }, 32*41488Smckusick #endif 33*41488Smckusick #ifdef DCACONSOLE 34*41488Smckusick { dcaprobe, dcainit, dcagetchar, dcaputchar }, 35*41488Smckusick #endif 36*41488Smckusick { 0 }, 37*41488Smckusick }; 38*41488Smckusick 39*41488Smckusick struct consdev *cn_tab; 40*41488Smckusick int noconsole; 41*41488Smckusick 42*41488Smckusick cninit() 43*41488Smckusick { 44*41488Smckusick register struct consdev *cp; 45*41488Smckusick 46*41488Smckusick cn_tab = NULL; 47*41488Smckusick noconsole = 1; 48*41488Smckusick for (cp = constab; cp->cn_probe; cp++) { 49*41488Smckusick (*cp->cn_probe)(cp); 50*41488Smckusick if (cp->cn_pri > CN_DEAD && 51*41488Smckusick (cn_tab == NULL || cp->cn_pri > cn_tab->cn_pri)) 52*41488Smckusick cn_tab = cp; 53*41488Smckusick } 54*41488Smckusick if (cn_tab) { 55*41488Smckusick (*cn_tab->cn_init)(cn_tab); 56*41488Smckusick noconsole = 0; 57*41488Smckusick } 58*41488Smckusick } 59*41488Smckusick 60*41488Smckusick cngetc() 61*41488Smckusick { 62*41488Smckusick if (cn_tab) 63*41488Smckusick return((*cn_tab->cn_getc)()); 64*41488Smckusick return(0); 65*41488Smckusick } 66*41488Smckusick 67*41488Smckusick cnputc(c) 68*41488Smckusick int c; 69*41488Smckusick { 70*41488Smckusick if (cn_tab) 71*41488Smckusick (*cn_tab->cn_putc)(c); 72*41488Smckusick } 73