1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 05:47:35 +00:00

Kernel: Make a slightly better demo for Aarch64 multiprocessing

This commit is contained in:
konrad 2023-01-08 12:47:14 +01:00 committed by Jelle Raaijmakers
parent 9b12571a86
commit 78d6de2ec1

View file

@ -100,28 +100,35 @@ void init_stage2(void*)
Process::register_new(Process::current()); Process::register_new(Process::current());
// This thread is created to show that kernel scheduling is working! // This thread is created to show that kernel scheduling is working!
LockRefPtr<Thread> more_work_thread; LockRefPtr<Thread> some_work_thread;
(void)Process::create_kernel_process(more_work_thread, MUST(KString::try_create("More Work Thread"sv)), [] { (void)Process::create_kernel_process(some_work_thread, MUST(KString::try_create("Some Work Thread"sv)), [] {
dmesgln("Enter loop (more work):"); Aarch64::Asm::wait_cycles(50000000);
for (int i = 0; i < 500; i++) { dmesgln("Starting \033[0;31msome work\033[0m:");
for (int i = 1; i <= 500; i++) {
if (i % 20 == 0) if (i % 20 == 0)
dmesgln(" Hello from more_work: {}", i); dmesgln(" Working on \033[0;31msome work\033[0m: {}", i);
Aarch64::Asm::wait_cycles(1000000); Aarch64::Asm::wait_cycles(400000);
} }
dmesgln("Finished the work!"); dmesgln("Finished \033[0;31msome work\033[0m!");
}); });
auto firmware_version = query_firmware_version(); auto firmware_version = query_firmware_version();
dmesgln("Firmware version: {}", firmware_version); dmesgln("Firmware version: {}", firmware_version);
dmesgln("Enter loop"); LockRefPtr<Thread> more_work_thread;
for (int i = 0;; i++) { (void)Process::create_kernel_process(more_work_thread, MUST(KString::try_create("More Work Thread"sv)), [] {
if (i % 20 == 0) dmesgln("Starting \033[0;34mmore work\033[0m:");
dmesgln("Hello from init_stage2: {}", i); for (int i = 1; i <= 300; i++) {
if (i % 20 == 0)
dmesgln(" Working on \033[0;34mmore work\033[0m: {}", i);
Aarch64::Asm::wait_cycles(1000000); Aarch64::Asm::wait_cycles(1000000);
} }
dmesgln("Finished \033[0;34mmore work\033[0m!");
});
dmesgln("Finished init stage");
} }
extern "C" [[noreturn]] void init() extern "C" [[noreturn]] void init()