Bring the user-land console driver closer to uKernel
This commit is contained in:
parent
4ac899b883
commit
ecb1d85402
|
@ -24,23 +24,29 @@ static size_t _console_buf_cnt = 0;
|
||||||
/* console_init */
|
/* console_init */
|
||||||
ukConsole * console_init(ukBus * bus, char const * name)
|
ukConsole * console_init(ukBus * bus, char const * name)
|
||||||
{
|
{
|
||||||
ukConsole * console = NULL;
|
ukConsole * drivers[] = {
|
||||||
|
&_stdio_console
|
||||||
|
};
|
||||||
|
size_t i;
|
||||||
|
|
||||||
if(strcmp(name, "stdio") == 0)
|
if(_console != NULL)
|
||||||
{
|
return _console;
|
||||||
printf("%s%s%s\n", name, (bus != NULL) ? " at " : "",
|
for(i = 0; i < sizeof(drivers) / sizeof(*drivers); i++)
|
||||||
(bus != NULL) ? bus->name : "");
|
if(strncmp(drivers[i]->name, name,
|
||||||
console = _stdio_console_init(bus);
|
strlen(drivers[i]->name)) == 0
|
||||||
}
|
&& drivers[i]->init != NULL)
|
||||||
else
|
{
|
||||||
|
printf("%s%s%s\n", name, (bus != NULL) ? " at " : "",
|
||||||
|
(bus != NULL) ? bus->name : "");
|
||||||
|
_console = _stdio_console_init(bus);
|
||||||
|
}
|
||||||
|
if(_console == NULL)
|
||||||
{
|
{
|
||||||
errno = ENODEV;
|
errno = ENODEV;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if(_console == NULL)
|
|
||||||
_console = console;
|
|
||||||
_console->print(_console, _console_buf, _console_buf_cnt);
|
_console->print(_console, _console_buf, _console_buf_cnt);
|
||||||
return console;
|
return _console;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,6 +55,8 @@ ukConsole * console_init(ukBus * bus, char const * name)
|
||||||
/* console_get_default */
|
/* console_get_default */
|
||||||
ukConsole * console_get_default(void)
|
ukConsole * console_get_default(void)
|
||||||
{
|
{
|
||||||
|
if(_console == NULL)
|
||||||
|
errno = ENODEV;
|
||||||
return _console;
|
return _console;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,8 +65,9 @@ ukConsole * console_get_default(void)
|
||||||
/* console_clear */
|
/* console_clear */
|
||||||
void console_clear(ukConsole * console)
|
void console_clear(ukConsole * console)
|
||||||
{
|
{
|
||||||
if(console == NULL)
|
if(console == NULL
|
||||||
console = console_get_default();
|
&& (console = console_get_default()) == NULL)
|
||||||
|
return;
|
||||||
console->clear(console);
|
console->clear(console);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user