void console_init(void);
void console_tx_byte(unsigned char byte);
void console_tx_flush(void);
+unsigned char console_rx_byte(void);
+int console_tst_byte(void);
void post_code(uint8_t value);
-void die(char *msg);
+void __attribute__ ((noreturn)) die(const char *msg);
struct console_driver {
void (*init)(void);
void (*tx_byte)(unsigned char byte);
void (*tx_flush)(void);
+ unsigned char (*rx_byte)(void);
+ int (*tst_byte)(void);
};
-#define __console __attribute__((unused, __section__ (".rodata.console_drivers")))
+#define __console __attribute__((used, __section__ (".rodata.console_drivers")))
/* Defined by the linker... */
extern struct console_driver console_drivers[];
extern struct console_driver econsole_drivers[];
-extern int console_loglevel;
-int do_printk(int msg_level, const char *fmt, ...);
+extern unsigned int console_loglevel;
+int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
#define printk_emerg(fmt, arg...) do_printk(BIOS_EMERG ,fmt, ##arg)
#define printk_alert(fmt, arg...) do_printk(BIOS_ALERT ,fmt, ##arg)
#endif
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_ALERT
#undef printk_alert
-#define printk_alart(fmt, arg...) do {} while(0)
+#define printk_alert(fmt, arg...) do {} while(0)
#endif
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_CRIT
#undef printk_crit
#define print_debug_char(CH) printk_debug ("%c", (CH))
#define print_spew_char(CH) printk_spew ("%c", (CH))
-#define print_emerg_hex8(HEX) printk_emerg ("%08x", (HEX))
-#define print_alert_hex8(HEX) printk_alert ("%08x", (HEX))
-#define print_crit_hex8(HEX) printk_crit ("%08x", (HEX))
-#define print_err_hex8(HEX) printk_err ("%08x", (HEX))
-#define print_warning_hex8(HEX) printk_warning("%08x", (HEX))
-#define print_notice_hex8(HEX) printk_notice ("%08x", (HEX))
-#define print_info_hex8(HEX) printk_info ("%08x", (HEX))
-#define print_debug_hex8(HEX) printk_debug ("%08x", (HEX))
-#define print_spew_hex8(HEX) printk_spew ("%08x", (HEX))
+#define print_emerg_hex8(HEX) printk_emerg ("%02x", (HEX))
+#define print_alert_hex8(HEX) printk_alert ("%02x", (HEX))
+#define print_crit_hex8(HEX) printk_crit ("%02x", (HEX))
+#define print_err_hex8(HEX) printk_err ("%02x", (HEX))
+#define print_warning_hex8(HEX) printk_warning("%02x", (HEX))
+#define print_notice_hex8(HEX) printk_notice ("%02x", (HEX))
+#define print_info_hex8(HEX) printk_info ("%02x", (HEX))
+#define print_debug_hex8(HEX) printk_debug ("%02x", (HEX))
+#define print_spew_hex8(HEX) printk_spew ("%02x", (HEX))
-#define print_emerg_hex16(HEX) printk_emerg ("%016x", (HEX))
-#define print_alert_hex16(HEX) printk_alert ("%016x", (HEX))
-#define print_crit_hex16(HEX) printk_crit ("%016x", (HEX))
-#define print_err_hex16(HEX) printk_err ("%016x", (HEX))
-#define print_warning_hex16(HEX) printk_warning("%016x", (HEX))
-#define print_notice_hex16(HEX) printk_notice ("%016x", (HEX))
-#define print_info_hex16(HEX) printk_info ("%016x", (HEX))
-#define print_debug_hex16(HEX) printk_debug ("%016x", (HEX))
-#define print_spew_hex16(HEX) printk_spew ("%016x", (HEX))
+#define print_emerg_hex16(HEX) printk_emerg ("%04x", (HEX))
+#define print_alert_hex16(HEX) printk_alert ("%04x", (HEX))
+#define print_crit_hex16(HEX) printk_crit ("%04x", (HEX))
+#define print_err_hex16(HEX) printk_err ("%04x", (HEX))
+#define print_warning_hex16(HEX) printk_warning("%04x", (HEX))
+#define print_notice_hex16(HEX) printk_notice ("%04x", (HEX))
+#define print_info_hex16(HEX) printk_info ("%04x", (HEX))
+#define print_debug_hex16(HEX) printk_debug ("%04x", (HEX))
+#define print_spew_hex16(HEX) printk_spew ("%04x", (HEX))
-#define print_emerg_hex32(HEX) printk_emerg ("%032x", (HEX))
-#define print_alert_hex32(HEX) printk_alert ("%032x", (HEX))
-#define print_crit_hex32(HEX) printk_crit ("%032x", (HEX))
-#define print_err_hex32(HEX) printk_err ("%032x", (HEX))
-#define print_warning_hex32(HEX) printk_warning("%032x", (HEX))
-#define print_notice_hex32(HEX) printk_notice ("%032x", (HEX))
-#define print_info_hex32(HEX) printk_info ("%032x", (HEX))
-#define print_debug_hex32(HEX) printk_debug ("%032x", (HEX))
-#define print_spew_hex32(HEX) printk_spew ("%032x", (HEX))
+#define print_emerg_hex32(HEX) printk_emerg ("%08x", (HEX))
+#define print_alert_hex32(HEX) printk_alert ("%08x", (HEX))
+#define print_crit_hex32(HEX) printk_crit ("%08x", (HEX))
+#define print_err_hex32(HEX) printk_err ("%08x", (HEX))
+#define print_warning_hex32(HEX) printk_warning("%08x", (HEX))
+#define print_notice_hex32(HEX) printk_notice ("%08x", (HEX))
+#define print_info_hex32(HEX) printk_info ("%08x", (HEX))
+#define print_debug_hex32(HEX) printk_debug ("%08x", (HEX))
+#define print_spew_hex32(HEX) printk_spew ("%08x", (HEX))
+
+#if CONFIG_CONSOLE_VGA == 1
+void vga_console_init(void);
+#endif
#endif /* CONSOLE_CONSOLE_H_ */