Kernel: Make a slightly better demo for Aarch64 multiprocessing
This commit is contained in:
parent
9b12571a86
commit
78d6de2ec1
Notes:
sideshowbarker
2024-07-19 16:58:06 +09:00
Author: https://github.com/konradekk Commit: https://github.com/SerenityOS/serenity/commit/78d6de2ec1c Pull-request: https://github.com/SerenityOS/serenity/pull/16781 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/gmta
1 changed files with 20 additions and 13 deletions
|
@ -100,28 +100,35 @@ void init_stage2(void*)
|
|||
Process::register_new(Process::current());
|
||||
|
||||
// This thread is created to show that kernel scheduling is working!
|
||||
LockRefPtr<Thread> more_work_thread;
|
||||
(void)Process::create_kernel_process(more_work_thread, MUST(KString::try_create("More Work Thread"sv)), [] {
|
||||
dmesgln("Enter loop (more work):");
|
||||
for (int i = 0; i < 500; i++) {
|
||||
LockRefPtr<Thread> some_work_thread;
|
||||
(void)Process::create_kernel_process(some_work_thread, MUST(KString::try_create("Some Work Thread"sv)), [] {
|
||||
Aarch64::Asm::wait_cycles(50000000);
|
||||
dmesgln("Starting \033[0;31msome work\033[0m:");
|
||||
for (int i = 1; i <= 500; i++) {
|
||||
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();
|
||||
dmesgln("Firmware version: {}", firmware_version);
|
||||
|
||||
dmesgln("Enter loop");
|
||||
for (int i = 0;; i++) {
|
||||
if (i % 20 == 0)
|
||||
dmesgln("Hello from init_stage2: {}", i);
|
||||
LockRefPtr<Thread> more_work_thread;
|
||||
(void)Process::create_kernel_process(more_work_thread, MUST(KString::try_create("More Work Thread"sv)), [] {
|
||||
dmesgln("Starting \033[0;34mmore work\033[0m:");
|
||||
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()
|
||||
|
|
Loading…
Add table
Reference in a new issue