mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-23 01:41:59 -05:00
Server: Add TTYServer, a rudimentary text console manager
This should probably call out to a login program at some point. Right now it just puts a root terminal on tty{1,2,3}. Remember not to leave your Serenity workstation unattended!
This commit is contained in:
parent
072bf8cbb9
commit
67a4256a98
5 changed files with 63 additions and 1 deletions
|
@ -97,6 +97,7 @@ cp ../Servers/LookupServer/LookupServer mnt/bin/LookupServer
|
|||
cp ../Servers/SystemServer/SystemServer mnt/bin/SystemServer
|
||||
cp ../Servers/WindowServer/WindowServer mnt/bin/WindowServer
|
||||
cp ../Servers/AudioServer/AudioServer mnt/bin/AudioServer
|
||||
cp ../Servers/TTYServer/TTYServer mnt/bin/TTYServer
|
||||
cp ../Shell/Shell mnt/bin/Shell
|
||||
cp ../Libraries/LibHTML/tho mnt/bin/tho
|
||||
echo "done"
|
||||
|
|
|
@ -142,11 +142,32 @@ VFS* vfs;
|
|||
|
||||
auto* system_server_process = Process::create_user_process("/bin/SystemServer", (uid_t)100, (gid_t)100, (pid_t)0, error, {}, {}, tty0);
|
||||
if (error != 0) {
|
||||
dbgprintf("init_stage2: error spawning SystemServer: %d\n", error);
|
||||
kprintf("init_stage2: error spawning SystemServer: %d\n", error);
|
||||
hang();
|
||||
}
|
||||
system_server_process->set_priority(Process::HighPriority);
|
||||
|
||||
auto* tty1_process = Process::create_user_process("/bin/TTYServer", (uid_t)0, (gid_t)0, (pid_t)0, error, { "/bin/TTYServer", "tty1" }, {}, tty1);
|
||||
if (error != 0) {
|
||||
kprintf("init_stage2: error spawning TTYServer for tty1: %d\n", error);
|
||||
hang();
|
||||
}
|
||||
tty1_process->set_priority(Process::HighPriority);
|
||||
|
||||
auto* tty2_process = Process::create_user_process("/bin/TTYServer", (uid_t)0, (gid_t)0, (pid_t)0, error, { "/bin/TTYServer", "tty2" }, {}, tty2);
|
||||
if (error != 0) {
|
||||
kprintf("init_stage2: error spawning TTYServer for tty2: %d\n", error);
|
||||
hang();
|
||||
}
|
||||
tty2_process->set_priority(Process::HighPriority);
|
||||
|
||||
auto* tty3_process = Process::create_user_process("/bin/TTYServer", (uid_t)0, (gid_t)0, (pid_t)0, error, { "/bin/TTYServer", "tty3" }, {}, tty3);
|
||||
if (error != 0) {
|
||||
kprintf("init_stage2: error spawning TTYServer for tty3: %d\n", error);
|
||||
hang();
|
||||
}
|
||||
tty3_process->set_priority(Process::HighPriority);
|
||||
|
||||
current->process().sys$exit(0);
|
||||
ASSERT_NOT_REACHED();
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ build_targets="$build_targets ../Servers/SystemServer"
|
|||
build_targets="$build_targets ../Servers/LookupServer"
|
||||
build_targets="$build_targets ../Servers/WindowServer"
|
||||
build_targets="$build_targets ../Servers/AudioServer"
|
||||
build_targets="$build_targets ../Servers/TTYServer"
|
||||
build_targets="$build_targets ../Libraries/LibAudio"
|
||||
build_targets="$build_targets ../Libraries/LibGUI"
|
||||
build_targets="$build_targets ../Libraries/LibHTML"
|
||||
|
|
23
Servers/TTYServer/Makefile
Normal file
23
Servers/TTYServer/Makefile
Normal file
|
@ -0,0 +1,23 @@
|
|||
include ../../Makefile.common
|
||||
|
||||
TTYSERVER_OBJS = \
|
||||
main.o
|
||||
|
||||
APP = TTYServer
|
||||
OBJS = $(TTYSERVER_OBJS)
|
||||
|
||||
DEFINES += -DUSERLAND
|
||||
|
||||
all: $(APP)
|
||||
|
||||
$(APP): $(OBJS)
|
||||
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lc -lcore
|
||||
|
||||
.cpp.o:
|
||||
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<
|
||||
|
||||
-include $(OBJS:%.o=%.d)
|
||||
|
||||
clean:
|
||||
@echo "CLEAN"; rm -f $(APP) $(OBJS) *.d
|
||||
|
16
Servers/TTYServer/main.cpp
Normal file
16
Servers/TTYServer/main.cpp
Normal file
|
@ -0,0 +1,16 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if (argc < 2)
|
||||
return -1;
|
||||
|
||||
dbgprintf("Starting console server on %s\n", argv[1]);
|
||||
|
||||
while (true) {
|
||||
dbgprintf("Running shell on %s\n", argv[1]);
|
||||
int rc = system("/bin/Shell");
|
||||
dbgprintf("Shell on %s exited with code %d\n", argv[1], rc);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue