[BACK]Return to wsdisplayvar.h CVS log [TXT][DIR] Up to [local] / sys / dev / wscons

Annotation of sys/dev/wscons/wsdisplayvar.h, Revision 1.1

1.1     ! nbrk        1: /* $OpenBSD: wsdisplayvar.h,v 1.22 2006/12/02 11:25:09 miod Exp $ */
        !             2: /* $NetBSD: wsdisplayvar.h,v 1.30 2005/02/04 02:10:49 perry Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1996, 1997 Christopher G. Demetriou.  All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  * 2. Redistributions in binary form must reproduce the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer in the
        !            14:  *    documentation and/or other materials provided with the distribution.
        !            15:  * 3. All advertising materials mentioning features or use of this software
        !            16:  *    must display the following acknowledgement:
        !            17:  *      This product includes software developed by Christopher G. Demetriou
        !            18:  *     for the NetBSD Project.
        !            19:  * 4. The name of the author may not be used to endorse or promote products
        !            20:  *    derived from this software without specific prior written permission
        !            21:  *
        !            22:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            23:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            24:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            25:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            26:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            27:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            31:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            32:  */
        !            33:
        !            34: struct device;
        !            35:
        !            36: /*
        !            37:  * WSDISPLAY interfaces
        !            38:  */
        !            39:
        !            40: #define WSDISPLAY_MAXSCREEN    12
        !            41: #define WSDISPLAY_MAXFONT      8
        !            42:
        !            43: /*
        !            44:  * Emulation functions, for displays that can support glass-tty terminal
        !            45:  * emulations.  These are character oriented, with row and column
        !            46:  * numbers starting at zero in the upper left hand corner of the
        !            47:  * screen.
        !            48:  *
        !            49:  * These are used only when emulating a terminal.  Therefore, displays
        !            50:  * drivers which cannot emulate terminals do not have to provide them.
        !            51:  *
        !            52:  * There is a "void *" cookie provided by the display driver associated
        !            53:  * with these functions, which is passed to them when they are invoked.
        !            54:  */
        !            55: struct wsdisplay_emulops {
        !            56:        void    (*cursor)(void *c, int on, int row, int col);
        !            57:        int     (*mapchar)(void *, int, unsigned int *);
        !            58:        void    (*putchar)(void *c, int row, int col, u_int uc, long attr);
        !            59:        void    (*copycols)(void *c, int row, int srccol, int dstcol,
        !            60:                    int ncols);
        !            61:        void    (*erasecols)(void *c, int row, int startcol, int ncols, long);
        !            62:        void    (*copyrows)(void *c, int srcrow, int dstrow, int nrows);
        !            63:        void    (*eraserows)(void *c, int row, int nrows, long attr);
        !            64:        int     (*alloc_attr)(void *c, int fg, int bg, int flags, long *attrp);
        !            65:        void    (*unpack_attr)(void *c, long attr, int *fg, int *bg, int *ul);
        !            66: /* fg / bg values. Made identical to ANSI terminal color codes. */
        !            67: #define WSCOL_BLACK    0
        !            68: #define WSCOL_RED      1
        !            69: #define WSCOL_GREEN    2
        !            70: #define WSCOL_BROWN    3
        !            71: #define WSCOL_BLUE     4
        !            72: #define WSCOL_MAGENTA  5
        !            73: #define WSCOL_CYAN     6
        !            74: #define WSCOL_WHITE    7
        !            75: /* flag values: */
        !            76: #define WSATTR_REVERSE 1
        !            77: #define WSATTR_HILIT   2
        !            78: #define WSATTR_BLINK   4
        !            79: #define WSATTR_UNDERLINE 8
        !            80: #define WSATTR_WSCOLORS 16
        !            81:        /* XXX need a free_attr() ??? */
        !            82: };
        !            83:
        !            84: #define        WSSCREEN_NAME_SIZE      16
        !            85:
        !            86: struct wsscreen_descr {
        !            87:        char name[WSSCREEN_NAME_SIZE];
        !            88:        int ncols, nrows;
        !            89:        const struct wsdisplay_emulops *textops;
        !            90:        int fontwidth, fontheight;
        !            91:        int capabilities;
        !            92: #define WSSCREEN_WSCOLORS      1       /* minimal color capability */
        !            93: #define WSSCREEN_REVERSE       2       /* can display reversed */
        !            94: #define WSSCREEN_HILIT         4       /* can highlight (however) */
        !            95: #define WSSCREEN_BLINK         8       /* can blink */
        !            96: #define WSSCREEN_UNDERLINE     16      /* can underline */
        !            97: };
        !            98:
        !            99: /*
        !           100:  * Character cell description (for emulation mode).
        !           101:  */
        !           102: struct wsdisplay_charcell {
        !           103:        u_int   uc;
        !           104:        long    attr;
        !           105: };
        !           106:
        !           107: struct wsdisplay_font;
        !           108: /*
        !           109:  * Display access functions, invoked by user-land programs which require
        !           110:  * direct device access, such as X11.
        !           111:  *
        !           112:  * There is a "void *" cookie provided by the display driver associated
        !           113:  * with these functions, which is passed to them when they are invoked.
        !           114:  */
        !           115: struct wsdisplay_accessops {
        !           116:        int     (*ioctl)(void *v, u_long cmd, caddr_t data, int flag,
        !           117:                    struct proc *p);
        !           118:        paddr_t (*mmap)(void *v, off_t off, int prot);
        !           119:        int     (*alloc_screen)(void *, const struct wsscreen_descr *,
        !           120:                                     void **, int *, int *, long *);
        !           121:        void    (*free_screen)(void *, void *);
        !           122:        int     (*show_screen)(void *, void *, int,
        !           123:                               void (*) (void *, int, int), void *);
        !           124:        int     (*load_font)(void *, void *, struct wsdisplay_font *);
        !           125:        void    (*scrollback)(void *, void *, int);
        !           126:        int     (*getchar)(void *, int, int, struct wsdisplay_charcell *);
        !           127:        void    (*burn_screen)(void *, u_int, u_int);
        !           128:        void    (*pollc)(void *, int);
        !           129: };
        !           130:
        !           131: /* passed to wscons by the video driver to tell about its capabilities */
        !           132: struct wsscreen_list {
        !           133:        int nscreens;
        !           134:        const struct wsscreen_descr **screens;
        !           135: };
        !           136:
        !           137: /*
        !           138:  * Attachment information provided by wsemuldisplaydev devices when attaching
        !           139:  * wsdisplay units.
        !           140:  */
        !           141: struct wsemuldisplaydev_attach_args {
        !           142:        int     console;                                /* is it console? */
        !           143:        const struct wsscreen_list *scrdata;            /* screen cfg info */
        !           144:        const struct wsdisplay_accessops *accessops;    /* access ops */
        !           145:        void    *accesscookie;                          /* access cookie */
        !           146:        u_int   defaultscreens;                         /* screens to create */
        !           147: };
        !           148:
        !           149: #define        WSEMULDISPLAYDEVCF_CONSOLE      0
        !           150: #define        wsemuldisplaydevcf_console      cf_loc[WSEMULDISPLAYDEVCF_CONSOLE]      /* spec'd as console? */
        !           151: #define        WSEMULDISPLAYDEVCF_CONSOLE_UNK  -1
        !           152: #define        WSDISPLAYDEVCF_MUX              0
        !           153: #define        wsdisplaydevcf_mux              cf_loc[WSDISPLAYDEVCF_MUX]
        !           154: #define        WSEMULDISPLAYDEVCF_MUX          1
        !           155: #define        wsemuldisplaydevcf_mux          cf_loc[WSEMULDISPLAYDEVCF_MUX]
        !           156:
        !           157: struct wscons_syncops {
        !           158:        int (*detach)(void *, int, void (*)(void *, int, int), void *);
        !           159:        int (*attach)(void *, int, void (*)(void *, int, int), void *);
        !           160:        int (*check)(void *);
        !           161:        void (*destroy)(void *);
        !           162: };
        !           163:
        !           164: /*
        !           165:  * Autoconfiguration helper functions.
        !           166:  */
        !           167: void   wsdisplay_cnattach(const struct wsscreen_descr *, void *,
        !           168:                                int, int, long);
        !           169: int    wsemuldisplaydevprint(void *, const char *);
        !           170:
        !           171: /*
        !           172:  * Console interface.
        !           173:  */
        !           174: void   wsdisplay_cnputc(dev_t dev, int i);
        !           175:
        !           176: /*
        !           177:  * for use by compatibility code
        !           178:  */
        !           179: struct wsdisplay_softc;
        !           180: struct wsscreen;
        !           181: int wsscreen_attach_sync(struct wsscreen *,
        !           182:                              const struct wscons_syncops *, void *);
        !           183: int wsscreen_detach_sync(struct wsscreen *);
        !           184: int wsscreen_lookup_sync(struct wsscreen *,
        !           185:                              const struct wscons_syncops *, void **);
        !           186:
        !           187: int wsdisplay_maxscreenidx(struct wsdisplay_softc *);
        !           188: int wsdisplay_screenstate(struct wsdisplay_softc *, int);
        !           189: int wsdisplay_getactivescreen(struct wsdisplay_softc *);
        !           190: int wsscreen_switchwait(struct wsdisplay_softc *, int);
        !           191:
        !           192: int wsdisplay_internal_ioctl(struct wsdisplay_softc *sc,
        !           193:                                  struct wsscreen *,
        !           194:                                  u_long cmd, caddr_t data,
        !           195:                                  int flag, struct proc *p);
        !           196:
        !           197: int wsdisplay_usl_ioctl1(struct wsdisplay_softc *,
        !           198:                             u_long, caddr_t, int, struct proc *);
        !           199:
        !           200: int wsdisplay_usl_ioctl2(struct wsdisplay_softc *, struct wsscreen *,
        !           201:                             u_long, caddr_t, int, struct proc *);
        !           202:
        !           203: int wsdisplay_cfg_ioctl(struct wsdisplay_softc *sc,
        !           204:                             u_long cmd, caddr_t data,
        !           205:                             int flag, struct proc *p);
        !           206:
        !           207: /*
        !           208:  * for general use
        !           209:  */
        !           210: #define WSDISPLAY_NULLSCREEN   -1
        !           211: void wsdisplay_switchtoconsole(void);
        !           212: const struct wsscreen_descr *
        !           213:     wsdisplay_screentype_pick(const struct wsscreen_list *, const char *);
        !           214:
        !           215: /*
        !           216:  * for use by wskbd
        !           217:  */
        !           218: void wsdisplay_burn(void *v, u_int flags);
        !           219: void wsscrollback(void *v, int op);
        !           220:
        !           221: #define WSDISPLAY_SCROLL_BACKWARD      0
        !           222: #define WSDISPLAY_SCROLL_FORWARD       1
        !           223: #define WSDISPLAY_SCROLL_RESET         2
        !           224:
        !           225: /*
        !           226:  * screen burner
        !           227:  */
        !           228: #define        WSDISPLAY_DEFBURNOUT    600000  /* ms */
        !           229: #define        WSDISPLAY_DEFBURNIN     250     /* ms */
        !           230:

CVSweb