mirror of
https://github.com/SerenityOS/serenity
synced 2024-07-22 10:36:24 +00:00
Kernel+LibC: Introduce new archctl syscall
This syscall will be used for architecture-specific operations.
This commit is contained in:
parent
5e1d678bae
commit
57f4f8caf8
|
@ -50,6 +50,7 @@ enum class NeedsBigProcessLock {
|
|||
S(adjtime, NeedsBigProcessLock::No) \
|
||||
S(alarm, NeedsBigProcessLock::No) \
|
||||
S(allocate_tls, NeedsBigProcessLock::No) \
|
||||
S(archctl, NeedsBigProcessLock::No) \
|
||||
S(anon_create, NeedsBigProcessLock::No) \
|
||||
S(annotate_mapping, NeedsBigProcessLock::No) \
|
||||
S(bind, NeedsBigProcessLock::No) \
|
||||
|
|
7
Kernel/API/archctl_numbers.h
Normal file
7
Kernel/API/archctl_numbers.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Sönke Holz <sholz8530@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
20
Kernel/Arch/aarch64/archctl.cpp
Normal file
20
Kernel/Arch/aarch64/archctl.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Sönke Holz <sholz8530@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <Kernel/Tasks/Process.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
ErrorOr<FlatPtr> Process::sys$archctl(int option, FlatPtr arg1)
|
||||
{
|
||||
(void)option;
|
||||
(void)arg1;
|
||||
|
||||
VERIFY_NO_PROCESS_BIG_LOCK(this);
|
||||
return ENOSYS;
|
||||
}
|
||||
|
||||
}
|
20
Kernel/Arch/riscv64/archctl.cpp
Normal file
20
Kernel/Arch/riscv64/archctl.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Sönke Holz <sholz8530@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <Kernel/Tasks/Process.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
ErrorOr<FlatPtr> Process::sys$archctl(int option, FlatPtr arg1)
|
||||
{
|
||||
(void)option;
|
||||
(void)arg1;
|
||||
|
||||
VERIFY_NO_PROCESS_BIG_LOCK(this);
|
||||
return ENOSYS;
|
||||
}
|
||||
|
||||
}
|
20
Kernel/Arch/x86_64/archctl.cpp
Normal file
20
Kernel/Arch/x86_64/archctl.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Sönke Holz <sholz8530@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <Kernel/Tasks/Process.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
ErrorOr<FlatPtr> Process::sys$archctl(int option, FlatPtr arg1)
|
||||
{
|
||||
(void)option;
|
||||
(void)arg1;
|
||||
|
||||
VERIFY_NO_PROCESS_BIG_LOCK(this);
|
||||
return ENOSYS;
|
||||
}
|
||||
|
||||
}
|
|
@ -386,6 +386,8 @@ if ("${SERENITY_ARCH}" STREQUAL "x86_64")
|
|||
set(KERNEL_SOURCES
|
||||
${KERNEL_SOURCES}
|
||||
|
||||
Arch/x86_64/archctl.cpp
|
||||
|
||||
Arch/x86_64/CMOS.cpp
|
||||
Arch/x86_64/DebugOutput.cpp
|
||||
Arch/x86_64/Delay.cpp
|
||||
|
@ -485,6 +487,7 @@ elseif("${SERENITY_ARCH}" STREQUAL "aarch64")
|
|||
|
||||
Arch/aarch64/Firmware/ACPI/StaticParsing.cpp
|
||||
|
||||
Arch/aarch64/archctl.cpp
|
||||
Arch/aarch64/boot.S
|
||||
Arch/aarch64/BootPPMParser.cpp
|
||||
Arch/aarch64/CPUID.cpp
|
||||
|
@ -528,6 +531,7 @@ elseif("${SERENITY_ARCH}" STREQUAL "riscv64")
|
|||
|
||||
Arch/riscv64/Firmware/ACPI/StaticParsing.cpp
|
||||
|
||||
Arch/riscv64/archctl.cpp
|
||||
Arch/riscv64/boot.S
|
||||
Arch/riscv64/CPU.cpp
|
||||
Arch/riscv64/CurrentTime.cpp
|
||||
|
|
|
@ -482,6 +482,7 @@ public:
|
|||
ErrorOr<FlatPtr> sys$get_root_session_id(pid_t force_sid);
|
||||
ErrorOr<FlatPtr> sys$remount(Userspace<Syscall::SC_remount_params const*> user_params);
|
||||
ErrorOr<FlatPtr> sys$bindmount(Userspace<Syscall::SC_bindmount_params const*> user_params);
|
||||
ErrorOr<FlatPtr> sys$archctl(int option, FlatPtr arg1);
|
||||
|
||||
enum SockOrPeerName {
|
||||
SockName,
|
||||
|
|
|
@ -52,6 +52,7 @@ set(LIBC_SOURCES
|
|||
string.cpp
|
||||
strings.cpp
|
||||
stubs.cpp
|
||||
sys/archctl.cpp
|
||||
sys/auxv.cpp
|
||||
sys/file.cpp
|
||||
sys/mman.cpp
|
||||
|
|
26
Userland/Libraries/LibC/sys/archctl.cpp
Normal file
26
Userland/Libraries/LibC/sys/archctl.cpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Sönke Holz <sholz8530@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdarg.h>
|
||||
#include <sys/archctl.h>
|
||||
#include <syscall.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
int archctl(int option, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, option);
|
||||
|
||||
uintptr_t arg1 = va_arg(args, uintptr_t);
|
||||
|
||||
va_end(args);
|
||||
|
||||
int rc = syscall(SC_archctl, option, arg1);
|
||||
__RETURN_WITH_ERRNO(rc, rc, -1);
|
||||
}
|
||||
}
|
17
Userland/Libraries/LibC/sys/archctl.h
Normal file
17
Userland/Libraries/LibC/sys/archctl.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Sönke Holz <sholz8530@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Kernel/API/archctl_numbers.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
int archctl(int option, ...);
|
||||
|
||||
__END_DECLS
|
Loading…
Reference in a new issue