summaryrefslogtreecommitdiff
path: root/sys/dev/wscons
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/wscons')
-rw-r--r--sys/dev/wscons/kbd.c7
-rw-r--r--sys/dev/wscons/kbd.h16
-rw-r--r--sys/dev/wscons/ms.c4
-rw-r--r--sys/dev/wscons/ms.h14
-rw-r--r--sys/dev/wscons/wscons.c22
-rw-r--r--sys/dev/wscons/wscons_emul.c21
-rw-r--r--sys/dev/wscons/wscons_rinit.c6
-rw-r--r--sys/dev/wscons/wsconsvar.h30
8 files changed, 72 insertions, 48 deletions
diff --git a/sys/dev/wscons/kbd.c b/sys/dev/wscons/kbd.c
index c2782435e2b..05e43d07eea 100644
--- a/sys/dev/wscons/kbd.c
+++ b/sys/dev/wscons/kbd.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: kbd.c,v 1.3 1996/10/30 22:41:39 niklas Exp $ */
-/* $NetBSD: kbd.c,v 1.2 1996/09/15 17:15:28 cgd Exp $ */
+/* $OpenBSD: kbd.c,v 1.4 1997/01/24 19:58:25 niklas Exp $ */
+/* $NetBSD: kbd.c,v 1.3 1996/11/13 21:13:39 cgd Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -61,6 +61,7 @@
#include <sys/syslog.h>
#include <sys/systm.h>
#include <sys/tty.h>
+#include <sys/signalvar.h>
#include <machine/autoconf.h>
@@ -71,6 +72,8 @@
#include <alpha/wscons/wsconsvar.h>
#include <alpha/wscons/kbd.h>
+void kbd_repeat __P((void *));
+
struct kbd_softc {
struct device *k_idev; /* the input device */
struct wscons_idev_spec k_ispec; /* the input device information */
diff --git a/sys/dev/wscons/kbd.h b/sys/dev/wscons/kbd.h
index e2bcf6ed5af..a0bd8205746 100644
--- a/sys/dev/wscons/kbd.h
+++ b/sys/dev/wscons/kbd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: kbd.h,v 1.1 1996/10/30 22:41:41 niklas Exp $ */
+/* $OpenBSD: kbd.h,v 1.2 1997/01/24 19:58:26 niklas Exp $ */
/*
* Copyright (c) 1996 Niklas Hallqvist
@@ -32,18 +32,10 @@
*/
extern void kbdattach __P((struct device *, struct wscons_idev_spec *));
-extern void kbd_repeat __P((void *));
extern void kbd_input __P((int));
-extern int kbdopen __P((dev_t, int, int, struct proc *));
-extern int kbdclose __P((dev_t, int, int, struct proc *p));
-extern int kbdread __P((dev_t, struct uio *, int));
-extern int kbdwrite __P((dev_t, struct uio *, int));
-extern int kbdioctl __P((dev_t, u_long, caddr_t, int, struct proc *));
-#ifdef notyet
-extern int kbdpoll __P((dev_t, int, struct proc *));
-#else
-extern int kbdselect __P((dev_t, int, struct proc *));
-#endif
+
+cdev_decl(kbd);
+
extern int kbd_cngetc __P((dev_t));
extern void kbd_cnpollc __P((dev_t, int));
extern void wscons_kbd_bell __P((void));
diff --git a/sys/dev/wscons/ms.c b/sys/dev/wscons/ms.c
index 938cffd4b8d..76a72d67721 100644
--- a/sys/dev/wscons/ms.c
+++ b/sys/dev/wscons/ms.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: ms.c,v 1.3 1996/10/30 22:41:43 niklas Exp $ */
-/* $NetBSD: ms.c,v 1.2 1996/09/15 17:15:29 cgd Exp $ */
+/* $OpenBSD: ms.c,v 1.4 1997/01/24 19:58:27 niklas Exp $ */
+/* $NetBSD: ms.c,v 1.3 1996/11/13 21:13:40 cgd Exp $ */
/*
* Copyright (c) 1992, 1993
diff --git a/sys/dev/wscons/ms.h b/sys/dev/wscons/ms.h
index cedfd65f73b..fa69749e73c 100644
--- a/sys/dev/wscons/ms.h
+++ b/sys/dev/wscons/ms.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ms.h,v 1.1 1996/10/30 22:41:44 niklas Exp $ */
+/* $OpenBSD: ms.h,v 1.2 1997/01/24 19:58:28 niklas Exp $ */
/*
* Copyright (c) 1996 Niklas Hallqvist
@@ -33,13 +33,5 @@
extern void msattach __P((struct device *, struct wscons_mdev_spec *));
extern void ms_event __P((char, int, int));
-extern int msopen __P((dev_t, int, int, struct proc *));
-extern int msclose __P((dev_t, int, int, struct proc *));
-extern int msread __P((dev_t, struct uio *, int));
-extern int mswrite __P((dev_t, struct uio *, int));
-extern int msioctl __P((dev_t, u_long, caddr_t, int, struct proc *));
-#ifdef notyet
-extern int mspoll __P((dev_t, int, struct proc *));
-#else
-extern int msselect __P((dev_t, int, struct proc *));
-#endif
+
+cdev_decl(ms);
diff --git a/sys/dev/wscons/wscons.c b/sys/dev/wscons/wscons.c
index c86feeea15e..1bc38095b02 100644
--- a/sys/dev/wscons/wscons.c
+++ b/sys/dev/wscons/wscons.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: wscons.c,v 1.3 1996/10/30 22:41:46 niklas Exp $ */
-/* $NetBSD: wscons.c,v 1.7 1996/10/13 03:00:45 christos Exp $ */
+/* $OpenBSD: wscons.c,v 1.4 1997/01/24 19:58:30 niklas Exp $ */
+/* $NetBSD: wscons.c,v 1.10 1996/12/05 01:39:47 cgd Exp $ */
/*
* Copyright (c) 1995, 1996 Carnegie-Mellon University.
@@ -61,11 +61,16 @@ struct wscons_softc {
struct wscons_emul_data *sc_emul_data;
struct tty *sc_tty;
+ void *sc_fn_cookie;
wscons_ioctl_t sc_ioctl;
wscons_mmap_t sc_mmap;
};
+#ifdef __BROKEN_INDIRECT_CONFIG
int wsconsmatch __P((struct device *, void *, void *));
+#else
+int wsconsmatch __P((struct device *, struct cfdata *, void *));
+#endif
void wsconsattach __P((struct device *, struct device *, void *));
struct cfattach wscons_ca = {
@@ -110,13 +115,23 @@ int wsconsparam __P((struct tty *, struct termios *));
*/
int
+#ifdef __BROKEN_INDIRECT_CONFIG
wsconsmatch(parent, cfdata, aux)
+#else
+wsconsmatch(parent, cf, aux)
+#endif
struct device *parent;
+#ifdef __BROKEN_INDIRECT_CONFIG
void *cfdata;
+#else
+ struct cfdata *cf;
+#endif
void *aux;
{
struct wscons_attach_args *waa = aux;
+#ifdef __BROKEN_INDIRECT_CONFIG
struct cfdata *cf = cfdata;
+#endif
if (waa->waa_isconsole && wscons_console_unit != -1)
panic("wsconsmatch: multiple consoles?");
@@ -182,6 +197,7 @@ wsconsattach(parent, self, aux)
/*
* Record other relevant information: ioctl and mmap functions.
*/
+ sc->sc_fn_cookie = waa->waa_odev_spec.wo_miscfuncs_cookie;
sc->sc_ioctl = waa->waa_odev_spec.wo_ioctl;
sc->sc_mmap = waa->waa_odev_spec.wo_mmap;
@@ -347,7 +363,7 @@ wsconsioctl(dev, cmd, data, flag, p)
/* then the underlying frame buffer device ioctls */
if (sc->sc_ioctl != NULL)
- error = (*sc->sc_ioctl)(sc->sc_dev.dv_parent, cmd, data,
+ error = (*sc->sc_ioctl)(sc->sc_fn_cookie, cmd, data,
flag, p);
if (error >= 0)
return error;
diff --git a/sys/dev/wscons/wscons_emul.c b/sys/dev/wscons/wscons_emul.c
index 0fd4450c4a3..fc40d12638c 100644
--- a/sys/dev/wscons/wscons_emul.c
+++ b/sys/dev/wscons/wscons_emul.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: wscons_emul.c,v 1.3 1996/10/30 22:41:47 niklas Exp $ */
-/* $NetBSD: wscons_emul.c,v 1.4 1996/10/13 03:00:47 christos Exp $ */
+/* $OpenBSD: wscons_emul.c,v 1.4 1997/01/24 19:58:31 niklas Exp $ */
+/* $NetBSD: wscons_emul.c,v 1.7 1996/11/19 05:23:13 cgd Exp $ */
/*
* Copyright (c) 1995, 1996 Carnegie-Mellon University.
@@ -34,6 +34,7 @@
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/conf.h>
#include <alpha/wscons/wsconsvar.h>
#include <alpha/wscons/wscons_emul.h>
#include <alpha/wscons/kbd.h>
@@ -48,6 +49,11 @@ static __inline void wscons_emul_docontrol
static __inline int wscons_emul_input_control
__P((struct wscons_emul_data *, char));
+static int wscons_emul_input_normal __P((struct wscons_emul_data *, char));
+static int wscons_emul_input_haveesc __P((struct wscons_emul_data *, char));
+static void wscons_emul_docontrol __P((struct wscons_emul_data *, char));
+static int wscons_emul_input_control __P((struct wscons_emul_data *, char));
+
void
wscons_emul_attach(we, wo)
struct wscons_emul_data *we;
@@ -58,19 +64,20 @@ wscons_emul_attach(we, wo)
#ifdef DIAGNOSTIC
if (we == NULL || wo == NULL)
panic("wscons_emul_attach: bogus args");
- if (wo->wo_ef == NULL)
+ if (wo->wo_emulfuncs == NULL)
panic("wscons_emul_attach: bogus emul functions");
#endif
- if (wo->wo_nrows < 0 || wo->wo_ncols < 0)
- panic("wscons_emul_attach: bogus size");
+ if (wo->wo_nrows <= 0 || wo->wo_ncols <= 0)
+ panic("wscons_emul_attach: bogus size (%d/%d)",
+ wo->wo_nrows, wo->wo_ncols);
if (wo->wo_crow < 0 || wo->wo_ccol < 0 ||
wo->wo_crow >= wo->wo_nrows || wo->wo_ccol >= wo->wo_ncols)
panic("wscons_emul_attach: bogus location (n: %d/%d, c: %d/%d",
wo->wo_nrows, wo->wo_ncols, wo->wo_crow, wo->wo_ccol);
we->ac_state = ANSICONS_STATE_NORMAL;
- we->ac_ef = wo->wo_ef;
- we->ac_efa = wo->wo_efa;
+ we->ac_ef = wo->wo_emulfuncs;
+ we->ac_efa = wo->wo_emulfuncs_cookie;
we->ac_nrow = wo->wo_nrows;
we->ac_ncol = wo->wo_ncols;
diff --git a/sys/dev/wscons/wscons_rinit.c b/sys/dev/wscons/wscons_rinit.c
index 3556c285800..f6911f17118 100644
--- a/sys/dev/wscons/wscons_rinit.c
+++ b/sys/dev/wscons/wscons_rinit.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: wscons_rinit.c,v 1.3 1996/10/30 22:41:54 niklas Exp $ */
-/* $NetBSD: wscons_rinit.c,v 1.2 1996/07/09 00:55:50 cgd Exp $ */
+/* $OpenBSD: wscons_rinit.c,v 1.4 1997/01/24 19:58:32 niklas Exp $ */
+/* $NetBSD: wscons_rinit.c,v 1.3 1996/11/13 21:13:42 cgd Exp $ */
/*
* Copyright (c) 1991, 1993
@@ -56,6 +56,8 @@
void rcons_initfont __P((struct rcons *, struct raster_font *));
+void rcons_initfont __P((struct rcons *, struct raster_font *));
+
void
rcons_initfont(rc, fp)
struct rcons *rc;
diff --git a/sys/dev/wscons/wsconsvar.h b/sys/dev/wscons/wsconsvar.h
index 27db5939d40..27a14d3f96d 100644
--- a/sys/dev/wscons/wsconsvar.h
+++ b/sys/dev/wscons/wsconsvar.h
@@ -1,5 +1,5 @@
-/* $OpenBSD: wsconsvar.h,v 1.3 1996/10/30 22:41:56 niklas Exp $ */
-/* $NetBSD: wsconsvar.h,v 1.2 1996/04/12 06:10:36 cgd Exp $ */
+/* $OpenBSD: wsconsvar.h,v 1.4 1997/01/24 19:58:33 niklas Exp $ */
+/* $NetBSD: wsconsvar.h,v 1.4 1996/11/19 05:17:00 cgd Exp $ */
/*
* Copyright (c) 1995, 1996 Carnegie-Mellon University.
@@ -33,9 +33,9 @@
struct device;
-typedef int (*wscons_ioctl_t) __P((struct device *dev, u_long cmd,
+typedef int (*wscons_ioctl_t) __P((void *v, u_long cmd,
caddr_t data, int flag, struct proc *p));
-typedef int (*wscons_mmap_t) __P((struct device *dev, off_t off,
+typedef int (*wscons_mmap_t) __P((void *v, off_t off,
int prot));
struct wscons_emulfuncs {
@@ -54,14 +54,15 @@ struct wscons_emulfuncs {
};
struct wscons_odev_spec {
- const struct wscons_emulfuncs *wo_ef; /* emulation functions */
- void *wo_efa; /* emulation function cookie */
-
- int wo_nrows, wo_ncols; /* number of rows & cols */
- int wo_crow, wo_ccol; /* current row & col */
+ const struct wscons_emulfuncs *wo_emulfuncs; /* emulation functions */
+ void *wo_emulfuncs_cookie;
wscons_ioctl_t wo_ioctl;
wscons_mmap_t wo_mmap;
+ void *wo_miscfuncs_cookie;
+
+ int wo_nrows, wo_ncols; /* number of rows & cols */
+ int wo_crow, wo_ccol; /* current row & col */
};
struct wsconsio_bell_data;
@@ -109,4 +110,15 @@ void wscons_attach_input __P((struct device *,
*/
void wscons_input __P((char *));
+void msattach __P((struct device *, struct wscons_mdev_spec *));
+void ms_event __P((char, int, int));
+
+void kbdattach __P((struct device *, struct wscons_idev_spec *));
+void kbd_input __P((int));
+void wscons_kbd_bell __P((void));
+int kbd_cngetc __P((dev_t));
+void kbd_cnpollc __P((dev_t, int));
+int kbdioctl __P((dev_t dev, u_long cmd, register caddr_t data,
+ int flag, struct proc *p));
+
#endif /* _ALPHA_WSCONS_WSCONSVAR_H_ */