/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef CONSOLE_H #define CONSOLE_H #include #include /* We share symbols from stage 0 */ #include #define BIOS_ALWAYS 0 /* log no matter what; not necessarily an error */ #define BIOS_EMERG 0 /* system is unusable */ #define BIOS_ALERT 1 /* action must be taken immediately */ #define BIOS_CRIT 2 /* critical conditions */ #define BIOS_ERR 3 /* error conditions */ #define BIOS_WARNING 4 /* warning conditions */ #define BIOS_NOTICE 5 /* normal but significant condition */ #define BIOS_INFO 6 /* informational */ #define BIOS_DEBUG 7 /* debug-level messages */ #define BIOS_SPEW 8 /* Way too many details */ void console_init(void); void console_tx_byte(unsigned char byte, void *arg); void console_tx_flush(void); unsigned char console_rx_byte(void); int console_tst_byte(void); void console_loglevel_init(void); #ifdef CONFIG_CONSOLE_BUFFER void printk_buffer_init(void); void printk_buffer_move(void *newaddr, int newsize); #endif struct console_driver { void (*init)(void); void (*tx_byte)(unsigned char byte, void *arg); void (*tx_flush)(void); unsigned char (*rx_byte)(void); int (*tst_byte)(void); }; #ifdef CONFIG_CONSOLE_BUFFER struct printk_buffer { int len; int readoffset; int writeoffset; char buffer[]; }; #endif /* * struct global_vars is managed entirely from C code. Keep in mind that there * is NO buffer at the end of the struct, so having zero-sized arrays at the * end or similar stuff for which the compiler can't determine the final size * will corrupt memory. If you don't try to be clever, everything will be fine. */ struct global_vars { #ifdef CONFIG_CONSOLE_BUFFER struct printk_buffer *printk_buffer; #endif unsigned int loglevel; }; int printk(int msg_level, const char *fmt, ...) __attribute__((format (printf, 2, 3))); EXPORT_SYMBOL(printk); void banner(int msg_level, const char *msg); EXPORT_SYMBOL(banner); void dump_mem_range(int msg_level, unsigned char *buf, int size); EXPORT_SYMBOL(dump_mem_range); void die(const char *msg); EXPORT_SYMBOL(die); #endif /* CONSOLE_H */