Let the console be located by name
This commit is contained in:
parent
861e03c019
commit
7562b69ed5
|
@ -19,17 +19,29 @@ static ukConsole * _console = NULL;
|
|||
# include "console/vga.c"
|
||||
|
||||
/* console_init */
|
||||
ukConsole * console_init(ukBus * bus)
|
||||
ukConsole * console_init(ukBus * bus, char const * name)
|
||||
{
|
||||
if((_console = _vga_console_init(bus)) == NULL)
|
||||
ukConsole * console;
|
||||
|
||||
if(strcmp(name, "vga") == 0)
|
||||
console = _vga_console_init(bus);
|
||||
else
|
||||
{
|
||||
errno = ENODEV;
|
||||
return NULL;
|
||||
return _console;
|
||||
}
|
||||
if(_console == NULL)
|
||||
_console = console;
|
||||
return console;
|
||||
}
|
||||
#else
|
||||
# warning Unsupported platform: missing console
|
||||
/* console_init */
|
||||
ukConsole * console_init(ukBus * bus)
|
||||
ukConsole * console_init(ukBus * bus, char const * name)
|
||||
{
|
||||
(void) bus;
|
||||
(void) name;
|
||||
|
||||
errno = ENODEV;
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ struct _ukConsole
|
|||
|
||||
|
||||
/* prototypes */
|
||||
ukConsole * console_init(ukBus * bus);
|
||||
ukConsole * console_init(ukBus * bus, char const * name);
|
||||
|
||||
/* accessors */
|
||||
ukConsole * console_get_default(void);
|
||||
|
|
|
@ -8,8 +8,11 @@
|
|||
#include "drivers/bus.h"
|
||||
#include "drivers/console.h"
|
||||
|
||||
#ifndef MAIN_BUS
|
||||
# define MAIN_BUS "ioport"
|
||||
#ifndef KERNEL_BUS
|
||||
# define KERNEL_BUS "ioport"
|
||||
#endif
|
||||
#ifndef KERNEL_CONSOLE
|
||||
# define KERNEL_CONSOLE "vga"
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -21,8 +24,8 @@ int main(void)
|
|||
ukBus * bus;
|
||||
const char msg[] = "Starting DeforaOS...\n";
|
||||
|
||||
bus = bus_init(MAIN_BUS);
|
||||
console_init(bus);
|
||||
bus = bus_init(KERNEL_BUS);
|
||||
console_init(bus, KERNEL_CONSOLE);
|
||||
puts(msg);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -11,8 +11,11 @@
|
|||
#include "../drivers/bus.h"
|
||||
#include "../drivers/console.h"
|
||||
|
||||
#ifndef MAIN_BUS
|
||||
# define MAIN_BUS "ioport"
|
||||
#ifndef LOADER_BUS
|
||||
# define LOADER_BUS "ioport"
|
||||
#endif
|
||||
#ifndef LOADER_CONSOLE
|
||||
# define LOADER_CONSOLE "vga"
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -31,8 +34,8 @@ int main(ukMultibootInfo * mi)
|
|||
const char msg_newline[] = "\n";
|
||||
ukMultibootMod * mod;
|
||||
|
||||
bus = bus_init(MAIN_BUS);
|
||||
console_init(bus);
|
||||
bus = bus_init(LOADER_BUS);
|
||||
console_init(bus, LOADER_CONSOLE);
|
||||
puts(msg_starting);
|
||||
if(mi->loader_name != NULL)
|
||||
{
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include "drivers/console.h"
|
||||
|
||||
#include "drivers/console/stdio.c"
|
||||
|
@ -16,11 +18,20 @@ static ukConsole * _console = NULL;
|
|||
|
||||
/* functions */
|
||||
/* console_init */
|
||||
ukConsole * console_init(ukBus * bus)
|
||||
ukConsole * console_init(ukBus * bus, char const * name)
|
||||
{
|
||||
if((_console = _stdio_console_init(bus)) == NULL)
|
||||
ukConsole * console = NULL;
|
||||
|
||||
if(strcmp(name, "stdio") == 0)
|
||||
console = _stdio_console_init(bus);
|
||||
else
|
||||
{
|
||||
errno = ENODEV;
|
||||
return NULL;
|
||||
return _console;
|
||||
}
|
||||
if(_console == NULL)
|
||||
_console = console;
|
||||
return console;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4,5 +4,6 @@
|
|||
|
||||
|
||||
|
||||
#define MAIN_BUS "tty"
|
||||
#define KERNEL_BUS "tty"
|
||||
#define KERNEL_CONSOLE "stdio"
|
||||
#include "../src/kernel/main.c"
|
||||
|
|
Loading…
Reference in New Issue
Block a user