| /* Copyright (c) 2012 The Regents of the University of California | 
 |  * Barret Rhoden <brho@cs.berkeley.edu> | 
 |  * See LICENSE for details. | 
 |  * | 
 |  * x86 Console (keyboard/serial/monitor) interfaces */ | 
 |  | 
 | #pragma once | 
 |  | 
 | #include <ros/common.h> | 
 | #include <sys/queue.h> | 
 |  | 
 | /* Types of console devices */ | 
 | #define CONS_KB_DEV		1 | 
 | #define CONS_SER_DEV		2 | 
 |  | 
 | struct cons_dev; | 
 | /* Interrupt-driven console input devices */ | 
 | struct cons_dev { | 
 | 	SLIST_ENTRY(cons_dev)		next; | 
 | 	int				type;	/* e.g., CONS_KB_DEV */ | 
 | 	int				val;	/* e.g., COM1 */ | 
 | 	int				irq;	/* desired irq */ | 
 | 	char				*model;	/* descriptive string */ | 
 | 	int (*getc)(struct cons_dev *, uint8_t *); | 
 | }; | 
 | SLIST_HEAD(cons_dev_slist, cons_dev); | 
 | extern struct cons_dev_slist cdev_list; | 
 |  | 
 | /* Set this to turn off console locking.  (debugging/panic/NMI) */ | 
 | extern bool panic_skip_console_lock; | 
 |  | 
 | void cons_init(void); | 
 | /* Returns 0 on success, with the char in *data */ | 
 | int cons_get_char(struct cons_dev *cdev, uint8_t *data); | 
 | /* Returns any available character, or 0 for none (legacy helper) */ | 
 | int cons_get_any_char(void); | 
 | /* Writes c to the monitor and to all CONS_SER_DEV console devices */ | 
 | void cons_putc(int c); | 
 |  | 
 | /* TODO: remove us (and serial IO) */ | 
 | void serial_send_byte(uint8_t b); | 
 | int serial_read_byte(); |