Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Feb 2003 21:45:28 +0100
From:      Poul-Henning Kamp <phk@phk.freebsd.dk>
To:        current@freebsd.org
Subject:   Console API related patch.
Message-ID:  <91629.1045428328@critter.freebsd.dk>

next in thread | raw e-mail | index | archive | help

I am trying to do some weird things with some custom console code and
got stuck on the fact that our console code belives all consoles have
a dev_t.

This patch changes the API so that rather than pass a "dev_t" to the
console functions, the "struct consdev *" is passed:

	-typedef        void    cn_putc_t(dev_t, int);
	+typedef        void    cn_putc_t(struct consdev *, int);

The dev_t can still be gotten hold of:

	 int
	-zs_cncheckc(dev_t dev)
	+zs_cncheckc(struct consdev *cp)
	 {
		int s = spltty();
	-       int c = zs_maygetc(zs_console_addr, minor(dev));
	+       int c = zs_maygetc(zs_console_addr, minor(cp->cn_dev));
		splx(s);
		return c;
	 }

But in addition to this I have added a driver-private element to the
consdev structure for other needs:

	+       void    *cn_arg;        /* drivers method argument */

The patch compiles and runs on all platforms I can currently test,
but I'd like if some of you can give it a spin too:

	http://phk.freebsd.dk/patch/console.patch

The patch just does the not quite mechanical switch, some of the drivers
could get some mileage from the cn_arg field but I have not tried that.

Thanks in advance,

Poul-Henning

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?91629.1045428328>