| /* 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; | 
 |  | 
 | 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(); |