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
[EMAIL PROTECTED]         | 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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to