Let the console be located by name

This commit is contained in:
Pierre Pronchery 2018-04-05 03:24:14 +02:00
parent 861e03c019
commit 7562b69ed5
6 changed files with 47 additions and 17 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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)
{

View File

@ -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;
}

View File

@ -4,5 +4,6 @@
#define MAIN_BUS "tty"
#define KERNEL_BUS "tty"
#define KERNEL_CONSOLE "stdio"
#include "../src/kernel/main.c"