123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #ifndef CONSOLE_H
- #define CONSOLE_H
-
- #include <gpxe/tables.h>
-
- /** @file
- *
- * User interaction.
- *
- * Various console devices can be selected via the build options
- * CONSOLE_FIRMWARE, CONSOLE_SERIAL etc. The console functions
- * putchar(), getchar() and iskey() delegate to the individual console
- * drivers.
- *
- */
-
- /**
- * A console driver
- *
- * Defines the functions that implement a particular console type.
- * Must be made part of the console drivers table by using
- * #__console_driver.
- *
- * @note Consoles that cannot be used before their initialisation
- * function has completed should set #disabled=1 initially. This
- * allows other console devices to still be used to print out early
- * debugging messages.
- *
- */
- struct console_driver {
- /** Console is disabled.
- *
- * The console's putchar(), putline(), getchar() and iskey()
- * methods will not be called while #disabled==1. Typically
- * the console's initialisation functions will set #disabled=0
- * upon completion.
- *
- */
- int disabled;
-
- /** Write a character to the console.
- *
- * @v character Character to be written
- * @ret None -
- * @err None -
- *
- */
- void ( *putchar ) ( int character );
-
- /** Write an entire line to the console.
- * This is intended to be used by line-oriented output media,
- * like system logging facilities or line printers.
- * Line output will not contain non-printable characters.
- *
- * @v linebuffer Pointer to the \0-terminated line
- * @ret None -
- * @err None -
- */
- void ( * putline ) ( unsigned char * linebuffer );
-
- /** Read a character from the console.
- *
- * @v None -
- * @ret character Character read
- * @err None -
- *
- * If no character is available to be read, this method will
- * block. The character read should not be echoed back to the
- * console.
- *
- */
- int ( *getchar ) ( void );
-
- /** Check for available input.
- *
- * @v None -
- * @ret True Input is available
- * @ret False Input is not available
- * @err None -
- *
- * This should return True if a subsequent call to getchar()
- * will not block.
- *
- */
- int ( *iskey ) ( void );
- };
-
- /**
- * Mark a <tt> struct console_driver </tt> as being part of the
- * console drivers table.
- *
- * Use as e.g.
- *
- * @code
- *
- * struct console_driver my_console __console_driver = {
- * .putchar = my_putchar,
- * .getchar = my_getchar,
- * .iskey = my_iskey,
- * };
- *
- * @endcode
- *
- */
- #define __console_driver __table ( struct console_driver, console, 01 )
-
- /* Function prototypes */
-
- extern void putchar ( int character );
- extern int getchar ( void );
- extern int iskey ( void );
- extern int getkey ( void );
-
- #endif /* CONSOLE_H */
|