mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:27:35 +00: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/SystemServer/SystemServer mnt/bin/SystemServer
|
||||||
cp ../Servers/WindowServer/WindowServer mnt/bin/WindowServer
|
cp ../Servers/WindowServer/WindowServer mnt/bin/WindowServer
|
||||||
cp ../Servers/AudioServer/AudioServer mnt/bin/AudioServer
|
cp ../Servers/AudioServer/AudioServer mnt/bin/AudioServer
|
||||||
|
cp ../Servers/TTYServer/TTYServer mnt/bin/TTYServer
|
||||||
cp ../Shell/Shell mnt/bin/Shell
|
cp ../Shell/Shell mnt/bin/Shell
|
||||||
cp ../Libraries/LibHTML/tho mnt/bin/tho
|
cp ../Libraries/LibHTML/tho mnt/bin/tho
|
||||||
echo "done"
|
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);
|
auto* system_server_process = Process::create_user_process("/bin/SystemServer", (uid_t)100, (gid_t)100, (pid_t)0, error, {}, {}, tty0);
|
||||||
if (error != 0) {
|
if (error != 0) {
|
||||||
dbgprintf("init_stage2: error spawning SystemServer: %d\n", error);
|
kprintf("init_stage2: error spawning SystemServer: %d\n", error);
|
||||||
hang();
|
hang();
|
||||||
}
|
}
|
||||||
system_server_process->set_priority(Process::HighPriority);
|
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);
|
current->process().sys$exit(0);
|
||||||
ASSERT_NOT_REACHED();
|
ASSERT_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ build_targets="$build_targets ../Servers/SystemServer"
|
||||||
build_targets="$build_targets ../Servers/LookupServer"
|
build_targets="$build_targets ../Servers/LookupServer"
|
||||||
build_targets="$build_targets ../Servers/WindowServer"
|
build_targets="$build_targets ../Servers/WindowServer"
|
||||||
build_targets="$build_targets ../Servers/AudioServer"
|
build_targets="$build_targets ../Servers/AudioServer"
|
||||||
|
build_targets="$build_targets ../Servers/TTYServer"
|
||||||
build_targets="$build_targets ../Libraries/LibAudio"
|
build_targets="$build_targets ../Libraries/LibAudio"
|
||||||
build_targets="$build_targets ../Libraries/LibGUI"
|
build_targets="$build_targets ../Libraries/LibGUI"
|
||||||
build_targets="$build_targets ../Libraries/LibHTML"
|
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…
Add table
Add a link
Reference in a new issue