BSD 4_4 release
[unix-history] / usr / src / sys / i386 / i386 / cons.c
index eb3bda4..13e62ff 100644 (file)
@@ -1,65 +1,67 @@
 /*
  * Copyright (c) 1988 University of Utah.
 /*
  * Copyright (c) 1988 University of Utah.
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1991, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * the Systems Programming Group of the University of Utah Computer
  * Science Department.
  *
  *
  * This code is derived from software contributed to Berkeley by
  * the Systems Programming Group of the University of Utah Computer
  * Science Department.
  *
- * Redistribution and use in source and binary forms are permitted provided
- * that: (1) source distributions retain this entire copyright notice and
- * comment, and (2) distributions including binaries display the following
- * acknowledgement:  ``This product includes software developed by the
- * University of California, Berkeley and its contributors'' in the
- * documentation or other materials provided with the distribution and in
- * all advertising materials mentioning features or use of this software.
- * Neither the name of the University nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
  *
  *
- * from: Utah $Hdr: cons.c 1.1 90/07/09$
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  *
  *
- *     @(#)cons.c      7.5 (Berkeley) 12/16/90
+ *     @(#)cons.c      8.1 (Berkeley) 6/11/93
  */
 
  */
 
-#include "sys/param.h"
-#include "sys/user.h"
-#include "sys/systm.h"
-#include "sys/buf.h"
-#include "sys/ioctl.h"
-#include "sys/tty.h"
-#include "sys/file.h"
-#include "sys/conf.h"
 
 
-#include "cons.h"
+#include <sys/param.h>
+#include <sys/proc.h>
+#include <sys/user.h>
+#include <sys/systm.h>
+#include <sys/buf.h>
+#include <sys/ioctl.h>
+#include <sys/tty.h>
+#include <sys/file.h>
+#include <sys/conf.h>
+
+#include <i386/i386/cons.h>
 
 /* XXX - all this could be autoconfig()ed */
 
 /* XXX - all this could be autoconfig()ed */
-#include "ite.h"
-#if NITE > 0
-int itecnprobe(), itecninit(), itecngetc(), itecnputc();
-#endif
-#include "dca.h"
-#if NDCA > 0
-int dcacnprobe(), dcacninit(), dcacngetc(), dcacnputc();
-#endif
-#include "dcm.h"
-#if NDCM > 0
-int dcmcnprobe(), dcmcninit(), dcmcngetc(), dcmcnputc();
+int pccnprobe(), pccninit(), pccngetc(), pccnputc();
+#include "com.h"
+#if NCOM > 0
+int comcnprobe(), comcninit(), comcngetc(), comcnputc();
 #endif
 
 struct consdev constab[] = {
 #endif
 
 struct consdev constab[] = {
-#if NITE > 0
-       { itecnprobe,   itecninit,      itecngetc,      itecnputc },
-#endif
-#if NDCA > 0
-       { dcacnprobe,   dcacninit,      dcacngetc,      dcacnputc },
-#endif
-#if NDCM > 0
-       { dcmcnprobe,   dcmcninit,      dcmcngetc,      dcmcnputc },
+       { pccnprobe,    pccninit,       pccngetc,       pccnputc },
+#if NCOM > 0
+       { comcnprobe,   comcninit,      comcngetc,      comcnputc },
 #endif
        { 0 },
 };
 #endif
        { 0 },
 };
@@ -95,22 +97,26 @@ cninit()
        (*cp->cn_init)(cp);
 }
 
        (*cp->cn_init)(cp);
 }
 
-cnopen(dev, flag)
+cnopen(dev, flag, mode, p)
        dev_t dev;
        dev_t dev;
+       int flag, mode;
+       struct proc *p;
 {
        if (cn_tab == NULL)
 {
        if (cn_tab == NULL)
-               return(0);
+               return (0);
        dev = cn_tab->cn_dev;
        dev = cn_tab->cn_dev;
-       return ((*cdevsw[major(dev)].d_open)(dev, flag));
+       return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
 }
  
 }
  
-cnclose(dev, flag)
+cnclose(dev, flag, mode, p)
        dev_t dev;
        dev_t dev;
+       int flag, mode;
+       struct proc *p;
 {
        if (cn_tab == NULL)
 {
        if (cn_tab == NULL)
-               return(0);
+               return (0);
        dev = cn_tab->cn_dev;
        dev = cn_tab->cn_dev;
-       return ((*cdevsw[major(dev)].d_close)(dev, flag));
+       return ((*cdevsw[major(dev)].d_close)(dev, flag, mode, p));
 }
  
 cnread(dev, uio, flag)
 }
  
 cnread(dev, uio, flag)
@@ -118,7 +124,7 @@ cnread(dev, uio, flag)
        struct uio *uio;
 {
        if (cn_tab == NULL)
        struct uio *uio;
 {
        if (cn_tab == NULL)
-               return(0);
+               return (0);
        dev = cn_tab->cn_dev;
        return ((*cdevsw[major(dev)].d_read)(dev, uio, flag));
 }
        dev = cn_tab->cn_dev;
        return ((*cdevsw[major(dev)].d_read)(dev, uio, flag));
 }
@@ -128,49 +134,51 @@ cnwrite(dev, uio, flag)
        struct uio *uio;
 {
        if (cn_tab == NULL)
        struct uio *uio;
 {
        if (cn_tab == NULL)
-               return(0);
+               return (0);
        dev = cn_tab->cn_dev;
        return ((*cdevsw[major(dev)].d_write)(dev, uio, flag));
 }
  
        dev = cn_tab->cn_dev;
        return ((*cdevsw[major(dev)].d_write)(dev, uio, flag));
 }
  
-cnioctl(dev, cmd, data, flag)
+cnioctl(dev, cmd, data, flag, p)
        dev_t dev;
        caddr_t data;
        dev_t dev;
        caddr_t data;
+       struct proc *p;
 {
        int error;
 
        if (cn_tab == NULL)
 {
        int error;
 
        if (cn_tab == NULL)
-               return(0);
+               return (0);
        /*
         * Superuser can always use this to wrest control of console
         * output from the "virtual" console.
         */
        if (cmd == TIOCCONS && constty) {
        /*
         * Superuser can always use this to wrest control of console
         * output from the "virtual" console.
         */
        if (cmd == TIOCCONS && constty) {
-               error = suser(u.u_cred, &u.u_acflag);
+               error = suser(p->p_ucred, (u_short *) NULL);
                if (error)
                        return (error);
                constty = NULL;
                return (0);
        }
        dev = cn_tab->cn_dev;
                if (error)
                        return (error);
                constty = NULL;
                return (0);
        }
        dev = cn_tab->cn_dev;
-       return ((*cdevsw[major(dev)].d_ioctl)(dev, cmd, data, flag));
+       return ((*cdevsw[major(dev)].d_ioctl)(dev, cmd, data, flag, p));
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
-cnselect(dev, rw)
+cnselect(dev, rw, p)
        dev_t dev;
        int rw;
        dev_t dev;
        int rw;
+       struct proc *p;
 {
        if (cn_tab == NULL)
 {
        if (cn_tab == NULL)
-               return(1);
-       return(ttselect(cn_tab->cn_dev, rw));
+               return (1);
+       return (ttselect(cn_tab->cn_dev, rw, p));
 }
 
 cngetc()
 {
        if (cn_tab == NULL)
 }
 
 cngetc()
 {
        if (cn_tab == NULL)
-               return(0);
-       return((*cn_tab->cn_getc)(cn_tab->cn_dev));
+               return (0);
+       return ((*cn_tab->cn_getc)(cn_tab->cn_dev));
 }
 
 cnputc(c)
 }
 
 cnputc(c)