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