1 |
/* display.h - The interface to a display driver. |
/* display.h - Interface to the display component of a virtual console. |
2 |
Copyright (C) 2002 Free Software Foundation, Inc. |
Copyright (C) 2002 Free Software Foundation, Inc. |
3 |
Written by Marcus Brinkmann. |
Written by Marcus Brinkmann. |
4 |
|
|
18 |
along with this program; if not, write to the Free Software |
along with this program; if not, write to the Free Software |
19 |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ |
20 |
|
|
21 |
#ifndef _DISPLAY_H_ |
#ifndef DISPLAY_H |
22 |
#define _DISPLAY_H_ 1 |
#define DISPLAY_H |
23 |
|
|
|
#include <errno.h> |
|
|
#include <argp.h> |
|
24 |
#include <sys/ioctl.h> |
#include <sys/ioctl.h> |
25 |
|
|
26 |
|
struct display; |
27 |
struct display_ops |
typedef struct display *display_t; |
|
{ |
|
|
/* Initialize the subsystem. */ |
|
|
error_t (*init) (void); |
|
|
|
|
|
/* Create a new (virtual) console display, with the system encoding |
|
|
being ENCODING. A failure at the first time this is called is |
|
|
critical. Subsequent calls might return an error if multiple |
|
|
virtual consoles are not supported. Further operations on this |
|
|
console will be called with the first parameter being *HOOK, |
|
|
which should be set to some unique identifier for this |
|
|
console. */ |
|
|
error_t (*create) (void **console, const char *encoding); |
|
|
|
|
|
/* Destroy the console CONSOLE. The caller will first activate a |
|
|
different console as the active one. */ |
|
|
void (*destroy) (void *console); |
|
|
|
|
|
/* Change the active console of WHO to CONSOLE. WHO is a unique identifier |
|
|
for the entity requesting the activation (which can be used by the |
|
|
display driver to group several activation requests together). */ |
|
|
void (*activate) (void *console, int who); |
|
|
|
|
|
/* Scroll the console CONSOLE by the desired amount. This is only a |
|
|
hint, the actual amount scrolled might depend on the capability |
|
|
of the subsystem. Negative AMOUNT scrolls back in history. */ |
|
|
error_t (*scroll) (void *console, int amount); |
|
|
|
|
|
/* Output LENGTH bytes starting from BUFFER in the system encoding. |
|
|
Set BUFFER and LENGTH to the new values. The exact semantics are |
|
|
just as in the iconv interface. */ |
|
|
error_t (*output) (void *console, char **buffer, size_t *length); |
|
|
|
|
|
/* Return the current size of CONSOLE in WINSIZE. */ |
|
|
void (*getsize) (void *console, struct winsize *size); |
|
|
}; |
|
|
typedef struct display_ops *display_ops_t; |
|
|
|
|
|
extern struct display_ops vga_display_ops; |
|
|
extern struct display_ops mach_display_ops; |
|
|
|
|
|
display_ops_t display_driver[] = |
|
|
{ |
|
|
#if defined(__i386__) |
|
|
&vga_display_ops, |
|
|
#endif |
|
|
&mach_display_ops, |
|
|
0 |
|
|
}; |
|
28 |
|
|
29 |
#endif /* _DISPLAY_H_ */ |
error_t display_create (display_t *r_display, const char *encoding); |
30 |
|
void display_destroy (display_t display); |
31 |
|
error_t display_output (display_t display, char **buffer, size_t *length); |
32 |
|
void display_getsize (display_t display, struct winsize *winsize); |
33 |
|
|
34 |
|
#endif /* DISPLAY_H */ |