| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- #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.
 -  *
 -  */
 - 
 - FILE_LICENCE ( GPL2_OR_LATER );
 - 
 - /**
 -  * 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 );
 - };
 - 
 - /** Console driver table */
 - #define CONSOLES __table ( struct console_driver, "consoles" )
 - 
 - /**
 -  * 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_entry ( CONSOLES, 01 )
 - 
 - /* Function prototypes */
 - 
 - extern void putchar ( int character );
 - extern int getchar ( void );
 - extern int iskey ( void );
 - extern int getkey ( void );
 - 
 - #endif /* CONSOLE_H */
 
 
  |