mirror of
https://github.com/RGBCube/serenity
synced 2025-07-10 06:27:35 +00:00
Virtual consoles kinda work!
We now make three VirtualConsoles at boot: tty0, tty1, and tty2. We launch an instance of /bin/sh in each one. You switch between them with Alt+1/2/3 How very very cool :^)
This commit is contained in:
parent
68739dc43e
commit
7a7956a595
24 changed files with 251 additions and 103 deletions
|
@ -37,9 +37,11 @@ system_t system;
|
|||
VirtualConsole* tty0;
|
||||
VirtualConsole* tty1;
|
||||
VirtualConsole* tty2;
|
||||
Keyboard* keyboard;
|
||||
|
||||
void banner()
|
||||
{
|
||||
InterruptDisabler disabler;
|
||||
kprintf("\n\033[33;1mWelcome to \033[36;1mSerenity OS!\033[0m\n\n");
|
||||
}
|
||||
|
||||
|
@ -107,8 +109,6 @@ static void init_stage2()
|
|||
|
||||
Syscall::initialize();
|
||||
|
||||
auto keyboard = make<Keyboard>();
|
||||
|
||||
Disk::initialize();
|
||||
|
||||
#ifdef TEST_VFS
|
||||
|
@ -189,11 +189,13 @@ static void init_stage2()
|
|||
}
|
||||
#endif
|
||||
|
||||
int error;
|
||||
auto* shTask = Task::createUserTask("/bin/sh", (uid_t)100, (gid_t)100, (pid_t)0, error);
|
||||
|
||||
banner();
|
||||
|
||||
int error;
|
||||
auto* sh0 = Task::createUserTask("/bin/sh", (uid_t)100, (gid_t)100, (pid_t)0, error, nullptr, tty0);
|
||||
auto* sh1 = Task::createUserTask("/bin/sh", (uid_t)100, (gid_t)100, (pid_t)0, error, nullptr, tty1);
|
||||
auto* sh2 = Task::createUserTask("/bin/sh", (uid_t)100, (gid_t)100, (pid_t)0, error, nullptr, tty2);
|
||||
|
||||
#if 0
|
||||
// It would be nice to exit this process, but right now it instantiates all kinds of things.
|
||||
// At the very least it needs to be made sure those things stick around as appropriate.
|
||||
|
@ -216,21 +218,20 @@ void init()
|
|||
kmalloc_init();
|
||||
vga_init();
|
||||
|
||||
VirtualConsole::initialize();
|
||||
tty0 = new VirtualConsole(0, VirtualConsole::AdoptCurrentVGABuffer);
|
||||
tty1 = new VirtualConsole(1);
|
||||
tty2 = new VirtualConsole(2);
|
||||
tty0->setActive(true);
|
||||
tty1->setActive(false);
|
||||
tty2->setActive(false);
|
||||
auto console = make<Console>();
|
||||
console->setImplementation(tty0);
|
||||
|
||||
RTC::initialize();
|
||||
PIC::initialize();
|
||||
gdt_init();
|
||||
idt_init();
|
||||
|
||||
keyboard = new Keyboard;
|
||||
|
||||
auto console = make<Console>();
|
||||
VirtualConsole::initialize();
|
||||
tty0 = new VirtualConsole(0, VirtualConsole::AdoptCurrentVGABuffer);
|
||||
tty1 = new VirtualConsole(1);
|
||||
tty2 = new VirtualConsole(2);
|
||||
VirtualConsole::switchTo(0);
|
||||
|
||||
MemoryManager::initialize();
|
||||
|
||||
VirtualFileSystem::initializeGlobals();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue