From abaf24d0da093145c435906751009be66860e8cb Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 3 May 2023 17:35:46 +0200 Subject: [PATCH] kernel/CPU: Move some stuff to StringView --- kernel/src/arch/CPU.h | 5 +++-- kernel/src/arch/x86_64/CPU.cpp | 8 ++++---- kernel/src/main.cpp | 4 ++-- kernel/src/sys/uname.cpp | 2 +- kernel/src/thread/ELF.cpp | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/kernel/src/arch/CPU.h b/kernel/src/arch/CPU.h index 1c127472..4e994339 100644 --- a/kernel/src/arch/CPU.h +++ b/kernel/src/arch/CPU.h @@ -1,12 +1,13 @@ #pragma once #include +#include struct Registers; namespace CPU { - Result identify(); - const char* platform_string(); + Result identify(); + StringView platform_string(); void platform_init(); void platform_finish_init(); diff --git a/kernel/src/arch/x86_64/CPU.cpp b/kernel/src/arch/x86_64/CPU.cpp index 101b3c54..fdb762a4 100644 --- a/kernel/src/arch/x86_64/CPU.cpp +++ b/kernel/src/arch/x86_64/CPU.cpp @@ -184,7 +184,7 @@ static bool test_nx() namespace CPU { - Result identify() + Result identify() { static char brand_string[49]; @@ -198,12 +198,12 @@ namespace CPU brand_string[48] = 0; // null-terminate it :) - return brand_string; + return StringView { brand_string, 48 }; } - const char* platform_string() + StringView platform_string() { - return "x86_64"; + return "x86_64"_sv; } void platform_init() diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp index a879e770..94526d68 100644 --- a/kernel/src/main.cpp +++ b/kernel/src/main.cpp @@ -41,8 +41,8 @@ Result init() // Default hostname if nobody from userspace changes it set_host_name("moon"_sv); - kinfoln("Current platform: %s", CPU::platform_string()); - kinfoln("Current processor: %s", CPU::identify().value_or("(unknown)")); + kinfoln("Current platform: %s", CPU::platform_string().chars()); + kinfoln("Current processor: %s", CPU::identify().value_or("(unknown)"_sv).chars()); kinfoln("Total memory: %s", to_dynamic_unit(MemoryManager::total()).release_value().chars()); kinfoln("Free memory: %s", to_dynamic_unit(MemoryManager::free()).release_value().chars()); diff --git a/kernel/src/sys/uname.cpp b/kernel/src/sys/uname.cpp index 138665ab..e8efe317 100644 --- a/kernel/src/sys/uname.cpp +++ b/kernel/src/sys/uname.cpp @@ -27,7 +27,7 @@ Result sys_uname(Registers*, SyscallArgs args) // FIXME: Hardcode this at build time instead of in code (should be the short commit hash). strncpy(result.version, "alpha", _UTSNAME_LENGTH); - strncpy(result.machine, CPU::platform_string(), _UTSNAME_LENGTH); + strncpy(result.machine, CPU::platform_string().chars(), _UTSNAME_LENGTH); if (!MemoryManager::copy_to_user_typed(buf, &result)) return err(EFAULT); diff --git a/kernel/src/thread/ELF.cpp b/kernel/src/thread/ELF.cpp index b7e797e0..b600ca98 100644 --- a/kernel/src/thread/ELF.cpp +++ b/kernel/src/thread/ELF.cpp @@ -63,7 +63,7 @@ namespace ELFLoader if (elf_header.e_machine != EM_MACH) { kerrorln("Error while loading ELF: ELF object's target architecture does not match the current one (%s)", - CPU::platform_string()); + CPU::platform_string().chars()); return err(ENOEXEC); }