mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-19 04:08:57 +02:00
FIX WINDOWS 2
This commit is contained in:
parent
93fa6d4e38
commit
57ccf51d99
99 changed files with 304 additions and 217 deletions
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -19,7 +22,7 @@ using namespace std::literals;
|
|||
constexpr auto INCREMENT_TIME{5ms};
|
||||
|
||||
DeviceSession::DeviceSession(Core::System& system_)
|
||||
: system{system_}, thread_event{Core::Timing::CreateEvent(
|
||||
: system{system_}, thread_event{Core::Timing::CreateEventWith(
|
||||
"AudioOutSampleTick",
|
||||
[this](s64 time, std::chrono::nanoseconds) { return ThreadFunc(); })} {}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
#ifdef _WIN32
|
||||
#include <objbase.h>
|
||||
#undef CreateEvent
|
||||
#endif
|
||||
|
||||
namespace AudioCore::Sink {
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ public:
|
|||
*
|
||||
* @param load String of the input data.
|
||||
*/
|
||||
virtual void LoadString(const std::string& load) = 0;
|
||||
virtual void LoadStringWith(const std::string& load) = 0;
|
||||
|
||||
/**
|
||||
* Returns a string representation of the data. If the data is an enum, it returns a string of
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ public:
|
|||
*
|
||||
* @param input The desired value
|
||||
*/
|
||||
void LoadString(const std::string& input) override final {
|
||||
void LoadStringWith(const std::string& input) override final {
|
||||
if (input.empty()) {
|
||||
this->SetValue(this->GetDefault());
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace Core::Timing {
|
|||
|
||||
constexpr s64 MAX_SLICE_LENGTH = 10000;
|
||||
|
||||
std::shared_ptr<EventType> CreateEvent(std::string name, TimedCallback&& callback) {
|
||||
std::shared_ptr<EventType> CreateEventWith(std::string name, TimedCallback&& callback) {
|
||||
return std::make_shared<EventType>(std::move(callback), std::move(name));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||
|
|
@ -188,6 +188,6 @@ private:
|
|||
///
|
||||
/// @returns An EventType instance representing the created event.
|
||||
///
|
||||
std::shared_ptr<EventType> CreateEvent(std::string name, TimedCallback&& callback);
|
||||
std::shared_ptr<EventType> CreateEventWith(std::string name, TimedCallback&& callback);
|
||||
|
||||
} // namespace Core::Timing
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
|
|
@ -89,7 +89,7 @@ public:
|
|||
}
|
||||
|
||||
template <typename T = KAutoObject>
|
||||
KScopedAutoObject<T> GetObject(Handle handle) const {
|
||||
KScopedAutoObject<T> GetObjectWith(Handle handle) const {
|
||||
// Handle pseudo-handles.
|
||||
if constexpr (std::derived_from<KProcess, T>) {
|
||||
if (handle == Svc::PseudoHandle::CurrentProcess) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
|
|
@ -13,7 +13,7 @@ namespace Kernel {
|
|||
|
||||
void KHardwareTimer::Initialize() {
|
||||
// Create the timing callback to register with CoreTiming.
|
||||
m_event_type = Core::Timing::CreateEvent("KHardwareTimer::Callback",
|
||||
m_event_type = Core::Timing::CreateEventWith("KHardwareTimer::Callback",
|
||||
[this](s64, std::chrono::nanoseconds) {
|
||||
this->DoTask();
|
||||
return std::nullopt;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -61,7 +64,7 @@ Result KObjectName::Delete(KernelCore& kernel, KAutoObject* obj, const char* com
|
|||
|
||||
// Find a matching entry in the list, and delete it.
|
||||
for (auto& name : gd.GetObjectList()) {
|
||||
if (name.MatchesName(compare_name) && obj == name.GetObject()) {
|
||||
if (name.MatchesName(compare_name) && obj == name.GetObjectWith()) {
|
||||
// We found a match, clean up its resources.
|
||||
obj->Close();
|
||||
gd.GetObjectList().erase(gd.GetObjectList().iterator_to(name));
|
||||
|
|
@ -91,7 +94,7 @@ KScopedAutoObject<KAutoObject> KObjectName::FindImpl(KernelCore& kernel, const c
|
|||
// Try to find a matching object in the global list.
|
||||
for (const auto& name : gd.GetObjectList()) {
|
||||
if (name.MatchesName(compare_name)) {
|
||||
return name.GetObject();
|
||||
return name.GetObjectWith();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -58,7 +61,7 @@ private:
|
|||
void Initialize(KAutoObject* obj, const char* name);
|
||||
|
||||
bool MatchesName(const char* name) const;
|
||||
KAutoObject* GetObject() const {
|
||||
KAutoObject* GetObjectWith() const {
|
||||
return m_object;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ struct KernelCore::Impl {
|
|||
}
|
||||
|
||||
void InitializePreemption(KernelCore& kernel) {
|
||||
preemption_event = Core::Timing::CreateEvent("PreemptionCallback", [this, &kernel](s64 time, std::chrono::nanoseconds) -> std::optional<std::chrono::nanoseconds> {
|
||||
preemption_event = Core::Timing::CreateEventWith("PreemptionCallback", [this, &kernel](s64 time, std::chrono::nanoseconds) -> std::optional<std::chrono::nanoseconds> {
|
||||
{
|
||||
KScopedSchedulerLock lock(kernel);
|
||||
global_scheduler_context->PreemptThreads();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-late
|
||||
|
|
@ -2279,7 +2279,7 @@ static void Call32(Core::System& system, u32 imm, std::span<uint64_t, 8> args) {
|
|||
case SvcId::GetProcessId: return SvcWrap_GetProcessId64From32(system, args);
|
||||
case SvcId::GetThreadId: return SvcWrap_GetThreadId64From32(system, args);
|
||||
case SvcId::Break: return SvcWrap_Break64From32(system, args);
|
||||
case SvcId::OutputDebugString: return SvcWrap_OutputDebugString64From32(system, args);
|
||||
case SvcId::OutputDebugStringWith: return SvcWrap_OutputDebugString64From32(system, args);
|
||||
case SvcId::ReturnFromException: return SvcWrap_ReturnFromException64From32(system, args);
|
||||
case SvcId::GetInfo: return SvcWrap_GetInfo64From32(system, args);
|
||||
case SvcId::FlushEntireDataCache: return SvcWrap_FlushEntireDataCache64From32(system, args);
|
||||
|
|
@ -2305,7 +2305,7 @@ static void Call32(Core::System& system, u32 imm, std::span<uint64_t, 8> args) {
|
|||
case SvcId::ReplyAndReceiveLight: return SvcWrap_ReplyAndReceiveLight64From32(system, args);
|
||||
case SvcId::ReplyAndReceive: return SvcWrap_ReplyAndReceive64From32(system, args);
|
||||
case SvcId::ReplyAndReceiveWithUserBuffer: return SvcWrap_ReplyAndReceiveWithUserBuffer64From32(system, args);
|
||||
case SvcId::CreateEvent: return SvcWrap_CreateEvent64From32(system, args);
|
||||
case SvcId::CreateEventWith: return SvcWrap_CreateEvent64From32(system, args);
|
||||
case SvcId::MapIoRegion: return SvcWrap_MapIoRegion64From32(system, args);
|
||||
case SvcId::UnmapIoRegion: return SvcWrap_UnmapIoRegion64From32(system, args);
|
||||
case SvcId::MapPhysicalMemoryUnsafe: return SvcWrap_MapPhysicalMemoryUnsafe64From32(system, args);
|
||||
|
|
@ -2355,7 +2355,7 @@ static void Call32(Core::System& system, u32 imm, std::span<uint64_t, 8> args) {
|
|||
case SvcId::QueryProcessMemory: return SvcWrap_QueryProcessMemory64From32(system, args);
|
||||
case SvcId::MapProcessCodeMemory: return SvcWrap_MapProcessCodeMemory64From32(system, args);
|
||||
case SvcId::UnmapProcessCodeMemory: return SvcWrap_UnmapProcessCodeMemory64From32(system, args);
|
||||
case SvcId::CreateProcess: return SvcWrap_CreateProcess64From32(system, args);
|
||||
case SvcId::CreateProcessWith: return SvcWrap_CreateProcess64From32(system, args);
|
||||
case SvcId::StartProcess: return SvcWrap_StartProcess64From32(system, args);
|
||||
case SvcId::TerminateProcess: return SvcWrap_TerminateProcess64From32(system, args);
|
||||
case SvcId::GetProcessInfo: return SvcWrap_GetProcessInfo64From32(system, args);
|
||||
|
|
@ -2408,7 +2408,7 @@ static void Call64(Core::System& system, u32 imm, std::span<uint64_t, 8> args) {
|
|||
case SvcId::GetProcessId: return SvcWrap_GetProcessId64(system, args);
|
||||
case SvcId::GetThreadId: return SvcWrap_GetThreadId64(system, args);
|
||||
case SvcId::Break: return SvcWrap_Break64(system, args);
|
||||
case SvcId::OutputDebugString: return SvcWrap_OutputDebugString64(system, args);
|
||||
case SvcId::OutputDebugStringWith: return SvcWrap_OutputDebugString64(system, args);
|
||||
case SvcId::ReturnFromException: return SvcWrap_ReturnFromException64(system, args);
|
||||
case SvcId::GetInfo: return SvcWrap_GetInfo64(system, args);
|
||||
case SvcId::FlushEntireDataCache: return SvcWrap_FlushEntireDataCache64(system, args);
|
||||
|
|
@ -2434,7 +2434,7 @@ static void Call64(Core::System& system, u32 imm, std::span<uint64_t, 8> args) {
|
|||
case SvcId::ReplyAndReceiveLight: return SvcWrap_ReplyAndReceiveLight64(system, args);
|
||||
case SvcId::ReplyAndReceive: return SvcWrap_ReplyAndReceive64(system, args);
|
||||
case SvcId::ReplyAndReceiveWithUserBuffer: return SvcWrap_ReplyAndReceiveWithUserBuffer64(system, args);
|
||||
case SvcId::CreateEvent: return SvcWrap_CreateEvent64(system, args);
|
||||
case SvcId::CreateEventWith: return SvcWrap_CreateEvent64(system, args);
|
||||
case SvcId::MapIoRegion: return SvcWrap_MapIoRegion64(system, args);
|
||||
case SvcId::UnmapIoRegion: return SvcWrap_UnmapIoRegion64(system, args);
|
||||
case SvcId::MapPhysicalMemoryUnsafe: return SvcWrap_MapPhysicalMemoryUnsafe64(system, args);
|
||||
|
|
@ -2484,7 +2484,7 @@ static void Call64(Core::System& system, u32 imm, std::span<uint64_t, 8> args) {
|
|||
case SvcId::QueryProcessMemory: return SvcWrap_QueryProcessMemory64(system, args);
|
||||
case SvcId::MapProcessCodeMemory: return SvcWrap_MapProcessCodeMemory64(system, args);
|
||||
case SvcId::UnmapProcessCodeMemory: return SvcWrap_UnmapProcessCodeMemory64(system, args);
|
||||
case SvcId::CreateProcess: return SvcWrap_CreateProcess64(system, args);
|
||||
case SvcId::CreateProcessWith: return SvcWrap_CreateProcess64(system, args);
|
||||
case SvcId::StartProcess: return SvcWrap_StartProcess64(system, args);
|
||||
case SvcId::TerminateProcess: return SvcWrap_TerminateProcess64(system, args);
|
||||
case SvcId::GetProcessInfo: return SvcWrap_GetProcessInfo64(system, args);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-late
|
||||
|
|
@ -56,7 +56,7 @@ Result SendAsyncRequestWithUserBuffer(Core::System& system, Handle* out_event_ha
|
|||
Result GetProcessId(Core::System& system, uint64_t* out_process_id, Handle process_handle);
|
||||
Result GetThreadId(Core::System& system, uint64_t* out_thread_id, Handle thread_handle);
|
||||
void Break(Core::System& system, BreakReason break_reason, uint64_t arg, uint64_t size);
|
||||
Result OutputDebugString(Core::System& system, uint64_t debug_str, uint64_t len);
|
||||
Result OutputDebugStringWith(Core::System& system, uint64_t debug_str, uint64_t len);
|
||||
void ReturnFromException(Core::System& system, Result result);
|
||||
Result GetInfo(Core::System& system, uint64_t* out, InfoType info_type, Handle handle, uint64_t info_subtype);
|
||||
void FlushEntireDataCache(Core::System& system);
|
||||
|
|
@ -81,7 +81,7 @@ Result CreateSession(Core::System& system, Handle* out_server_session_handle, Ha
|
|||
Result AcceptSession(Core::System& system, Handle* out_handle, Handle port);
|
||||
Result ReplyAndReceive(Core::System& system, int32_t* out_index, uint64_t handles, int32_t num_handles, Handle reply_target, int64_t timeout_ns);
|
||||
Result ReplyAndReceiveWithUserBuffer(Core::System& system, int32_t* out_index, uint64_t message_buffer, uint64_t message_buffer_size, uint64_t handles, int32_t num_handles, Handle reply_target, int64_t timeout_ns);
|
||||
Result CreateEvent(Core::System& system, Handle* out_write_handle, Handle* out_read_handle);
|
||||
Result CreateEventWith(Core::System& system, Handle* out_write_handle, Handle* out_read_handle);
|
||||
Result MapIoRegion(Core::System& system, Handle io_region, uint64_t address, uint64_t size, MemoryPermission perm);
|
||||
Result UnmapIoRegion(Core::System& system, Handle io_region, uint64_t address, uint64_t size);
|
||||
Result MapPhysicalMemoryUnsafe(Core::System& system, uint64_t address, uint64_t size);
|
||||
|
|
@ -131,7 +131,7 @@ Result UnmapProcessMemory(Core::System& system, uint64_t dst_address, Handle pro
|
|||
Result QueryProcessMemory(Core::System& system, uint64_t out_memory_info, PageInfo* out_page_info, Handle process_handle, uint64_t address);
|
||||
Result MapProcessCodeMemory(Core::System& system, Handle process_handle, uint64_t dst_address, uint64_t src_address, uint64_t size);
|
||||
Result UnmapProcessCodeMemory(Core::System& system, Handle process_handle, uint64_t dst_address, uint64_t src_address, uint64_t size);
|
||||
Result CreateProcess(Core::System& system, Handle* out_handle, uint64_t parameters, uint64_t caps, int32_t num_caps);
|
||||
Result CreateProcessWith(Core::System& system, Handle* out_handle, uint64_t parameters, uint64_t caps, int32_t num_caps);
|
||||
Result StartProcess(Core::System& system, Handle process_handle, int32_t priority, int32_t core_id, uint64_t main_thread_stack_size);
|
||||
Result TerminateProcess(Core::System& system, Handle process_handle);
|
||||
Result GetProcessInfo(Core::System& system, int64_t* out_info, Handle process_handle, ProcessInfoType info_type);
|
||||
|
|
@ -421,7 +421,7 @@ enum class SvcId : u32 {
|
|||
GetProcessId = 0x24,
|
||||
GetThreadId = 0x25,
|
||||
Break = 0x26,
|
||||
OutputDebugString = 0x27,
|
||||
OutputDebugStringWith = 0x27,
|
||||
ReturnFromException = 0x28,
|
||||
GetInfo = 0x29,
|
||||
FlushEntireDataCache = 0x2a,
|
||||
|
|
@ -447,7 +447,7 @@ enum class SvcId : u32 {
|
|||
ReplyAndReceiveLight = 0x42,
|
||||
ReplyAndReceive = 0x43,
|
||||
ReplyAndReceiveWithUserBuffer = 0x44,
|
||||
CreateEvent = 0x45,
|
||||
CreateEventWith = 0x45,
|
||||
MapIoRegion = 0x46,
|
||||
UnmapIoRegion = 0x47,
|
||||
MapPhysicalMemoryUnsafe = 0x48,
|
||||
|
|
@ -497,7 +497,7 @@ enum class SvcId : u32 {
|
|||
QueryProcessMemory = 0x76,
|
||||
MapProcessCodeMemory = 0x77,
|
||||
UnmapProcessCodeMemory = 0x78,
|
||||
CreateProcess = 0x79,
|
||||
CreateProcessWith = 0x79,
|
||||
StartProcess = 0x7a,
|
||||
TerminateProcess = 0x7b,
|
||||
GetProcessInfo = 0x7c,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -23,7 +26,7 @@ Result SetThreadActivity(Core::System& system, Handle thread_handle,
|
|||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KThread>(thread_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KThread>(thread_handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Check that the activity is being set on a non-current thread for the current process.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -38,7 +41,7 @@ Result FlushProcessDataCache(Core::System& system, Handle process_handle, u64 ad
|
|||
|
||||
// Get the process from its handle.
|
||||
KScopedAutoObject process =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KProcess>(process_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KProcess>(process_handle);
|
||||
R_UNLESS(process.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Verify the region is within range.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -86,7 +86,7 @@ Result ControlCodeMemory(Core::System& system, Handle code_memory_handle,
|
|||
// Get the code memory from its handle.
|
||||
KScopedAutoObject code_mem = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KCodeMemory>(code_memory_handle);
|
||||
.GetObjectWith<KCodeMemory>(code_memory_handle);
|
||||
R_UNLESS(code_mem.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// NOTE: Here, Atmosphere extends the SVC to allow code memory operations on one's own process.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -9,7 +12,7 @@
|
|||
namespace Kernel::Svc {
|
||||
|
||||
/// Used to output a message on a debug hardware unit - does nothing on a retail unit
|
||||
Result OutputDebugString(Core::System& system, u64 address, u64 len) {
|
||||
Result OutputDebugStringWith(Core::System& system, u64 address, u64 len) {
|
||||
R_SUCCEED_IF(len == 0);
|
||||
|
||||
std::string str(len, '\0');
|
||||
|
|
@ -20,11 +23,11 @@ Result OutputDebugString(Core::System& system, u64 address, u64 len) {
|
|||
}
|
||||
|
||||
Result OutputDebugString64(Core::System& system, uint64_t debug_str, uint64_t len) {
|
||||
R_RETURN(OutputDebugString(system, debug_str, len));
|
||||
R_RETURN(OutputDebugStringWith(system, debug_str, len));
|
||||
}
|
||||
|
||||
Result OutputDebugString64From32(Core::System& system, uint32_t debug_str, uint32_t len) {
|
||||
R_RETURN(OutputDebugString(system, debug_str, len));
|
||||
R_RETURN(OutputDebugStringWith(system, debug_str, len));
|
||||
}
|
||||
|
||||
} // namespace Kernel::Svc
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -48,7 +51,7 @@ Result AttachDeviceAddressSpace(Core::System& system, DeviceName device_name, Ha
|
|||
// Get the device address space.
|
||||
KScopedAutoObject das = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KDeviceAddressSpace>(das_handle);
|
||||
.GetObjectWith<KDeviceAddressSpace>(das_handle);
|
||||
R_UNLESS(das.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Attach.
|
||||
|
|
@ -59,7 +62,7 @@ Result DetachDeviceAddressSpace(Core::System& system, DeviceName device_name, Ha
|
|||
// Get the device address space.
|
||||
KScopedAutoObject das = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KDeviceAddressSpace>(das_handle);
|
||||
.GetObjectWith<KDeviceAddressSpace>(das_handle);
|
||||
R_UNLESS(das.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Detach.
|
||||
|
|
@ -100,12 +103,12 @@ Result MapDeviceAddressSpaceByForce(Core::System& system, Handle das_handle, Han
|
|||
// Get the device address space.
|
||||
KScopedAutoObject das = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KDeviceAddressSpace>(das_handle);
|
||||
.GetObjectWith<KDeviceAddressSpace>(das_handle);
|
||||
R_UNLESS(das.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the process.
|
||||
KScopedAutoObject process =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KProcess>(process_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KProcess>(process_handle);
|
||||
R_UNLESS(process.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Validate that the process address is within range.
|
||||
|
|
@ -141,12 +144,12 @@ Result MapDeviceAddressSpaceAligned(Core::System& system, Handle das_handle, Han
|
|||
// Get the device address space.
|
||||
KScopedAutoObject das = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KDeviceAddressSpace>(das_handle);
|
||||
.GetObjectWith<KDeviceAddressSpace>(das_handle);
|
||||
R_UNLESS(das.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the process.
|
||||
KScopedAutoObject process =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KProcess>(process_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KProcess>(process_handle);
|
||||
R_UNLESS(process.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Validate that the process address is within range.
|
||||
|
|
@ -173,12 +176,12 @@ Result UnmapDeviceAddressSpace(Core::System& system, Handle das_handle, Handle p
|
|||
// Get the device address space.
|
||||
KScopedAutoObject das = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KDeviceAddressSpace>(das_handle);
|
||||
.GetObjectWith<KDeviceAddressSpace>(das_handle);
|
||||
R_UNLESS(das.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the process.
|
||||
KScopedAutoObject process =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KProcess>(process_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KProcess>(process_handle);
|
||||
R_UNLESS(process.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Validate that the process address is within range.
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ Result SignalEvent(Core::System& system, Handle event_handle) {
|
|||
// Fail-safe for system applets
|
||||
const auto program_id = GetCurrentProcess(system.Kernel()).GetProgramId();
|
||||
if ((program_id & 0xFFFFFFFFFFFFFF00ull) == 0x0100000000001000ull) {
|
||||
KScopedAutoObject event = handle_table.GetObject<KEvent>(event_handle);
|
||||
KScopedAutoObject event = handle_table.GetObjectWith<KEvent>(event_handle);
|
||||
if (event.IsNotNull()) {
|
||||
event->Signal();
|
||||
} else {
|
||||
|
|
@ -34,7 +34,7 @@ Result SignalEvent(Core::System& system, Handle event_handle) {
|
|||
|
||||
|
||||
// Get the event.
|
||||
KScopedAutoObject event = handle_table.GetObject<KEvent>(event_handle);
|
||||
KScopedAutoObject event = handle_table.GetObjectWith<KEvent>(event_handle);
|
||||
R_UNLESS(event.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
R_RETURN(event->Signal());
|
||||
|
|
@ -48,7 +48,7 @@ Result ClearEvent(Core::System& system, Handle event_handle) {
|
|||
|
||||
// Try to clear the writable event.
|
||||
{
|
||||
KScopedAutoObject event = handle_table.GetObject<KEvent>(event_handle);
|
||||
KScopedAutoObject event = handle_table.GetObjectWith<KEvent>(event_handle);
|
||||
if (event.IsNotNull()) {
|
||||
event->Clear();
|
||||
R_SUCCEED();
|
||||
|
|
@ -57,7 +57,7 @@ Result ClearEvent(Core::System& system, Handle event_handle) {
|
|||
|
||||
// Try to clear the readable event.
|
||||
{
|
||||
KScopedAutoObject readable_event = handle_table.GetObject<KReadableEvent>(event_handle);
|
||||
KScopedAutoObject readable_event = handle_table.GetObjectWith<KReadableEvent>(event_handle);
|
||||
if (readable_event.IsNotNull()) {
|
||||
readable_event->Clear();
|
||||
R_SUCCEED();
|
||||
|
|
@ -67,7 +67,7 @@ Result ClearEvent(Core::System& system, Handle event_handle) {
|
|||
R_THROW(ResultInvalidHandle);
|
||||
}
|
||||
|
||||
Result CreateEvent(Core::System& system, Handle* out_write, Handle* out_read) {
|
||||
Result CreateEventWith(Core::System& system, Handle* out_write, Handle* out_read) {
|
||||
LOG_DEBUG(Kernel_SVC, "called");
|
||||
|
||||
// Get the kernel reference and handle table.
|
||||
|
|
@ -119,7 +119,7 @@ Result ClearEvent64(Core::System& system, Handle event_handle) {
|
|||
}
|
||||
|
||||
Result CreateEvent64(Core::System& system, Handle* out_write_handle, Handle* out_read_handle) {
|
||||
R_RETURN(CreateEvent(system, out_write_handle, out_read_handle));
|
||||
R_RETURN(CreateEventWith(system, out_write_handle, out_read_handle));
|
||||
}
|
||||
|
||||
Result SignalEvent64From32(Core::System& system, Handle event_handle) {
|
||||
|
|
@ -132,7 +132,7 @@ Result ClearEvent64From32(Core::System& system, Handle event_handle) {
|
|||
|
||||
Result CreateEvent64From32(Core::System& system, Handle* out_write_handle,
|
||||
Handle* out_read_handle) {
|
||||
R_RETURN(CreateEvent(system, out_write_handle, out_read_handle));
|
||||
R_RETURN(CreateEventWith(system, out_write_handle, out_read_handle));
|
||||
}
|
||||
|
||||
} // namespace Kernel::Svc
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -46,7 +46,7 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle
|
|||
R_UNLESS(info_sub_id == 0, ResultInvalidEnumValue);
|
||||
|
||||
const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||
KScopedAutoObject process = handle_table.GetObject<KProcess>(handle);
|
||||
KScopedAutoObject process = handle_table.GetObjectWith<KProcess>(handle);
|
||||
R_UNLESS(process.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
switch (info_id_type) {
|
||||
|
|
@ -204,7 +204,7 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle
|
|||
|
||||
KScopedAutoObject thread = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KThread>(static_cast<Handle>(handle));
|
||||
.GetObjectWith<KThread>(static_cast<Handle>(handle));
|
||||
if (thread.IsNull()) {
|
||||
LOG_ERROR(Kernel_SVC, "Thread handle does not exist, handle=0x{:08X}",
|
||||
static_cast<Handle>(handle));
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -24,7 +24,7 @@ Result SendSyncRequestImpl(KernelCore& kernel, uintptr_t message, size_t buffer_
|
|||
Handle session_handle) {
|
||||
// Get the client session.
|
||||
KScopedAutoObject session =
|
||||
GetCurrentProcess(kernel).GetHandleTable().GetObject<KClientSession>(session_handle);
|
||||
GetCurrentProcess(kernel).GetHandleTable().GetObjectWith<KClientSession>(session_handle);
|
||||
R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the parent, and persist a reference to it until we're done.
|
||||
|
|
@ -42,7 +42,7 @@ Result ReplyAndReceiveImpl(KernelCore& kernel, int32_t* out_index, uintptr_t mes
|
|||
// Reply to the target, if one is specified.
|
||||
if (reply_target != InvalidHandle) {
|
||||
KScopedAutoObject session =
|
||||
GetCurrentProcess(kernel).GetHandleTable().GetObject<KServerSession>(reply_target);
|
||||
GetCurrentProcess(kernel).GetHandleTable().GetObjectWith<KServerSession>(reply_target);
|
||||
R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// If we fail to reply, we want to set the output index to -1.
|
||||
|
|
@ -193,7 +193,7 @@ Result SendAsyncRequestWithUserBuffer(Core::System& system, Handle* out_event_ha
|
|||
R_UNLESS(event_reservation.Succeeded(), ResultLimitReached);
|
||||
|
||||
// Get the client session.
|
||||
KScopedAutoObject session = process.GetHandleTable().GetObject<KClientSession>(session_handle);
|
||||
KScopedAutoObject session = process.GetHandleTable().GetObjectWith<KClientSession>(session_handle);
|
||||
R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the parent, and persist a reference to it until we're done.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -15,7 +18,7 @@ Result SendSyncRequestLight(Core::System& system, Handle session_handle, u32* ar
|
|||
// Get the light client session from its handle.
|
||||
KScopedAutoObject session = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KLightClientSession>(session_handle);
|
||||
.GetObjectWith<KLightClientSession>(session_handle);
|
||||
R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Send the request.
|
||||
|
|
@ -28,7 +31,7 @@ Result ReplyAndReceiveLight(Core::System& system, Handle session_handle, u32* ar
|
|||
// Get the light server session from its handle.
|
||||
KScopedAutoObject session = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KLightServerSession>(session_handle);
|
||||
.GetObjectWith<KLightServerSession>(session_handle);
|
||||
R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Handle the request.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -93,7 +96,7 @@ Result ConnectToPort(Core::System& system, Handle* out, Handle port) {
|
|||
auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||
|
||||
// Get the client port.
|
||||
KScopedAutoObject client_port = handle_table.GetObject<KClientPort>(port);
|
||||
KScopedAutoObject client_port = handle_table.GetObjectWith<KClientPort>(port);
|
||||
R_UNLESS(client_port.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Reserve a handle for the port.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -28,7 +28,7 @@ Result GetProcessId(Core::System& system, u64* out_process_id, Handle handle) {
|
|||
// Get the object from the handle table.
|
||||
KScopedAutoObject obj = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KAutoObject>(static_cast<Handle>(handle));
|
||||
.GetObjectWith<KAutoObject>(static_cast<Handle>(handle));
|
||||
R_UNLESS(obj.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the process from the object.
|
||||
|
|
@ -98,7 +98,7 @@ Result GetProcessInfo(Core::System& system, s64* out, Handle process_handle,
|
|||
LOG_DEBUG(Kernel_SVC, "called, handle=0x{:08X}, type={:#X}", process_handle, info_type);
|
||||
|
||||
const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||
KScopedAutoObject process = handle_table.GetObject<KProcess>(process_handle);
|
||||
KScopedAutoObject process = handle_table.GetObjectWith<KProcess>(process_handle);
|
||||
if (process.IsNull()) {
|
||||
LOG_ERROR(Kernel_SVC, "Process handle does not exist, process_handle=0x{:08X}",
|
||||
process_handle);
|
||||
|
|
@ -115,7 +115,7 @@ Result GetProcessInfo(Core::System& system, s64* out, Handle process_handle,
|
|||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result CreateProcess(Core::System& system, Handle* out_handle, uint64_t parameters, uint64_t caps,
|
||||
Result CreateProcessWith(Core::System& system, Handle* out_handle, uint64_t parameters, uint64_t caps,
|
||||
int32_t num_caps) {
|
||||
UNIMPLEMENTED();
|
||||
R_THROW(ResultNotImplemented);
|
||||
|
|
@ -147,7 +147,7 @@ Result GetProcessList64(Core::System& system, int32_t* out_num_processes, uint64
|
|||
|
||||
Result CreateProcess64(Core::System& system, Handle* out_handle, uint64_t parameters, uint64_t caps,
|
||||
int32_t num_caps) {
|
||||
R_RETURN(CreateProcess(system, out_handle, parameters, caps, num_caps));
|
||||
R_RETURN(CreateProcessWith(system, out_handle, parameters, caps, num_caps));
|
||||
}
|
||||
|
||||
Result StartProcess64(Core::System& system, Handle process_handle, int32_t priority,
|
||||
|
|
@ -179,7 +179,7 @@ Result GetProcessList64From32(Core::System& system, int32_t* out_num_processes,
|
|||
|
||||
Result CreateProcess64From32(Core::System& system, Handle* out_handle, uint32_t parameters,
|
||||
uint32_t caps, int32_t num_caps) {
|
||||
R_RETURN(CreateProcess(system, out_handle, parameters, caps, num_caps));
|
||||
R_RETURN(CreateProcessWith(system, out_handle, parameters, caps, num_caps));
|
||||
}
|
||||
|
||||
Result StartProcess64From32(Core::System& system, Handle process_handle, int32_t priority,
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ Result SetProcessMemoryPermission(Core::System& system, Handle process_handle, u
|
|||
|
||||
// Get the process from its handle.
|
||||
KScopedAutoObject process =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KProcess>(process_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KProcess>(process_handle);
|
||||
R_UNLESS(process.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Validate that the address is in range.
|
||||
|
|
@ -174,7 +174,7 @@ Result MapProcessCodeMemory(Core::System& system, Handle process_handle, u64 dst
|
|||
}
|
||||
|
||||
const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||
KScopedAutoObject process = handle_table.GetObject<KProcess>(process_handle);
|
||||
KScopedAutoObject process = handle_table.GetObjectWith<KProcess>(process_handle);
|
||||
if (process.IsNull()) {
|
||||
LOG_ERROR(Kernel_SVC, "Invalid process handle specified (handle=0x{:08X}).",
|
||||
process_handle);
|
||||
|
|
@ -234,7 +234,7 @@ Result UnmapProcessCodeMemory(Core::System& system, Handle process_handle, u64 d
|
|||
}
|
||||
|
||||
const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||
KScopedAutoObject process = handle_table.GetObject<KProcess>(process_handle);
|
||||
KScopedAutoObject process = handle_table.GetObjectWith<KProcess>(process_handle);
|
||||
if (process.IsNull()) {
|
||||
LOG_ERROR(Kernel_SVC, "Invalid process handle specified (handle=0x{:08X}).",
|
||||
process_handle);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -23,7 +26,7 @@ Result QueryProcessMemory(Core::System& system, uint64_t out_memory_info, PageIn
|
|||
Handle process_handle, uint64_t address) {
|
||||
LOG_TRACE(Kernel_SVC, "called process=0x{:08X} address={:X}", process_handle, address);
|
||||
const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||
KScopedAutoObject process = handle_table.GetObject<KProcess>(process_handle);
|
||||
KScopedAutoObject process = handle_table.GetObjectWith<KProcess>(process_handle);
|
||||
if (process.IsNull()) {
|
||||
LOG_ERROR(Kernel_SVC, "Process handle does not exist, process_handle=0x{:08X}",
|
||||
process_handle);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -43,7 +46,7 @@ Result GetResourceLimitLimitValue(Core::System& system, s64* out_limit_value,
|
|||
// Get the resource limit.
|
||||
KScopedAutoObject resource_limit = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KResourceLimit>(resource_limit_handle);
|
||||
.GetObjectWith<KResourceLimit>(resource_limit_handle);
|
||||
R_UNLESS(resource_limit.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the limit value.
|
||||
|
|
@ -63,7 +66,7 @@ Result GetResourceLimitCurrentValue(Core::System& system, s64* out_current_value
|
|||
// Get the resource limit.
|
||||
KScopedAutoObject resource_limit = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KResourceLimit>(resource_limit_handle);
|
||||
.GetObjectWith<KResourceLimit>(resource_limit_handle);
|
||||
R_UNLESS(resource_limit.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the current value.
|
||||
|
|
@ -83,7 +86,7 @@ Result SetResourceLimitLimitValue(Core::System& system, Handle resource_limit_ha
|
|||
// Get the resource limit.
|
||||
KScopedAutoObject resource_limit = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KResourceLimit>(resource_limit_handle);
|
||||
.GetObjectWith<KResourceLimit>(resource_limit_handle);
|
||||
R_UNLESS(resource_limit.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Set the limit value.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -105,7 +108,7 @@ Result AcceptSession(Core::System& system, Handle* out, Handle port_handle) {
|
|||
auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||
|
||||
// Get the server port.
|
||||
KScopedAutoObject port = handle_table.GetObject<KServerPort>(port_handle);
|
||||
KScopedAutoObject port = handle_table.GetObjectWith<KServerPort>(port_handle);
|
||||
R_UNLESS(port.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Reserve an entry for the new session.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -49,7 +49,7 @@ Result MapSharedMemory(Core::System& system, Handle shmem_handle, u64 address, u
|
|||
auto& page_table = process.GetPageTable();
|
||||
|
||||
// Get the shared memory.
|
||||
KScopedAutoObject shmem = process.GetHandleTable().GetObject<KSharedMemory>(shmem_handle);
|
||||
KScopedAutoObject shmem = process.GetHandleTable().GetObjectWith<KSharedMemory>(shmem_handle);
|
||||
R_UNLESS(shmem.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Verify that the mapping is in range.
|
||||
|
|
@ -79,7 +79,7 @@ Result UnmapSharedMemory(Core::System& system, Handle shmem_handle, u64 address,
|
|||
auto& page_table = process.GetPageTable();
|
||||
|
||||
// Get the shared memory.
|
||||
KScopedAutoObject shmem = process.GetHandleTable().GetObject<KSharedMemory>(shmem_handle);
|
||||
KScopedAutoObject shmem = process.GetHandleTable().GetObjectWith<KSharedMemory>(shmem_handle);
|
||||
R_UNLESS(shmem.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Verify that the mapping is in range.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -35,7 +35,7 @@ Result ResetSignal(Core::System& system, Handle handle) {
|
|||
|
||||
// Try to reset as readable event.
|
||||
{
|
||||
KScopedAutoObject readable_event = handle_table.GetObject<KReadableEvent>(handle);
|
||||
KScopedAutoObject readable_event = handle_table.GetObjectWith<KReadableEvent>(handle);
|
||||
if (readable_event.IsNotNull()) {
|
||||
R_RETURN(readable_event->Reset());
|
||||
}
|
||||
|
|
@ -43,7 +43,7 @@ Result ResetSignal(Core::System& system, Handle handle) {
|
|||
|
||||
// Try to reset as process.
|
||||
{
|
||||
KScopedAutoObject process = handle_table.GetObject<KProcess>(handle);
|
||||
KScopedAutoObject process = handle_table.GetObjectWith<KProcess>(handle);
|
||||
if (process.IsNotNull()) {
|
||||
R_RETURN(process->Reset());
|
||||
}
|
||||
|
|
@ -112,7 +112,7 @@ Result CancelSynchronization(Core::System& system, Handle handle) {
|
|||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KThread>(handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KThread>(handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Cancel the thread's wait.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -84,7 +84,7 @@ Result StartThread(Core::System& system, Handle thread_handle) {
|
|||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KThread>(thread_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KThread>(thread_handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Try to start the thread.
|
||||
|
|
@ -146,7 +146,7 @@ Result GetThreadContext3(Core::System& system, u64 out_context, Handle thread_ha
|
|||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(kernel).GetHandleTable().GetObject<KThread>(thread_handle);
|
||||
GetCurrentProcess(kernel).GetHandleTable().GetObjectWith<KThread>(thread_handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Require the handle be to a non-current thread in the current process.
|
||||
|
|
@ -171,7 +171,7 @@ Result GetThreadPriority(Core::System& system, s32* out_priority, Handle handle)
|
|||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KThread>(handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KThread>(handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the thread's priority.
|
||||
|
|
@ -190,7 +190,7 @@ Result SetThreadPriority(Core::System& system, Handle thread_handle, s32 priorit
|
|||
R_UNLESS(process.CheckThreadPriority(priority), ResultInvalidPriority);
|
||||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread = process.GetHandleTable().GetObject<KThread>(thread_handle);
|
||||
KScopedAutoObject thread = process.GetHandleTable().GetObjectWith<KThread>(thread_handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Set the thread priority.
|
||||
|
|
@ -244,7 +244,7 @@ Result GetThreadCoreMask(Core::System& system, s32* out_core_id, u64* out_affini
|
|||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KThread>(thread_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KThread>(thread_handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the core mask.
|
||||
|
|
@ -274,7 +274,7 @@ Result SetThreadCoreMask(Core::System& system, Handle thread_handle, s32 core_id
|
|||
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KThread>(thread_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KThread>(thread_handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Set the core mask.
|
||||
|
|
@ -285,7 +285,7 @@ Result SetThreadCoreMask(Core::System& system, Handle thread_handle, s32 core_id
|
|||
Result GetThreadId(Core::System& system, u64* out_thread_id, Handle thread_handle) {
|
||||
// Get the thread from its handle.
|
||||
KScopedAutoObject thread =
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObject<KThread>(thread_handle);
|
||||
GetCurrentProcess(system.Kernel()).GetHandleTable().GetObjectWith<KThread>(thread_handle);
|
||||
R_UNLESS(thread.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Get the thread's id.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -86,7 +89,7 @@ Result MapTransferMemory(Core::System& system, Handle trmem_handle, uint64_t add
|
|||
// Get the transfer memory.
|
||||
KScopedAutoObject trmem = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KTransferMemory>(trmem_handle);
|
||||
.GetObjectWith<KTransferMemory>(trmem_handle);
|
||||
R_UNLESS(trmem.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Verify that the mapping is in range.
|
||||
|
|
@ -113,7 +116,7 @@ Result UnmapTransferMemory(Core::System& system, Handle trmem_handle, uint64_t a
|
|||
// Get the transfer memory.
|
||||
KScopedAutoObject trmem = GetCurrentProcess(system.Kernel())
|
||||
.GetHandleTable()
|
||||
.GetObject<KTransferMemory>(trmem_handle);
|
||||
.GetObjectWith<KTransferMemory>(trmem_handle);
|
||||
R_UNLESS(trmem.IsNotNull(), ResultInvalidHandle);
|
||||
|
||||
// Verify that the mapping is in range.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||
|
|
@ -177,7 +177,7 @@ enum class BreakReason : u32 {
|
|||
DECLARE_ENUM_FLAG_OPERATORS(BreakReason);
|
||||
|
||||
enum class DebugEvent : u32 {
|
||||
CreateProcess = 0,
|
||||
CreateProcessWith = 0,
|
||||
CreateThread = 1,
|
||||
ExitProcess = 2,
|
||||
ExitThread = 3,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -20,7 +23,7 @@ IAsyncContext::IAsyncContext(Core::System& system_)
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
completion_event = service_context.CreateEvent("IAsyncContext:CompletionEvent");
|
||||
completion_event = service_context.CreateEventWith("IAsyncContext:CompletionEvent");
|
||||
}
|
||||
|
||||
IAsyncContext::~IAsyncContext() {
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ void AppletManager::SetWindowSystem(WindowSystem* window_system) {
|
|||
m_cv.wait(lk, [&] { return m_pending_process != nullptr; });
|
||||
|
||||
if (Settings::values.enable_overlay && m_window_system->GetOverlayDisplayApplet() == nullptr) {
|
||||
if (auto overlay_process = CreateProcess(m_system, static_cast<u64>(AppletProgramId::OverlayDisplay), 0, 0)) {
|
||||
if (auto overlay_process = CreateProcessWith(m_system, static_cast<u64>(AppletProgramId::OverlayDisplay), 0, 0)) {
|
||||
auto overlay_applet = std::make_shared<Applet>(m_system, std::move(overlay_process), false);
|
||||
overlay_applet->program_id = static_cast<u64>(AppletProgramId::OverlayDisplay);
|
||||
overlay_applet->applet_id = AppletId::OverlayDisplay;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ Cabinet::Cabinet(Core::System& system_, std::shared_ptr<Applet> applet_,
|
|||
"CabinetApplet"} {
|
||||
|
||||
availability_change_event =
|
||||
service_context.CreateEvent("CabinetApplet:AvailabilityChangeEvent");
|
||||
service_context.CreateEventWith("CabinetApplet:AvailabilityChangeEvent");
|
||||
}
|
||||
|
||||
Cabinet::~Cabinet() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -59,7 +62,7 @@ std::unique_ptr<Process> CreateProcessImpl(std::unique_ptr<Loader::AppLoader>& o
|
|||
|
||||
} // Anonymous namespace
|
||||
|
||||
std::unique_ptr<Process> CreateProcess(Core::System& system, u64 program_id,
|
||||
std::unique_ptr<Process> CreateProcessWith(Core::System& system, u64 program_id,
|
||||
u8 minimum_key_generation, u8 maximum_key_generation) {
|
||||
// Attempt to load program NCA.
|
||||
FileSys::VirtualFile nca_raw{};
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -24,7 +27,7 @@ class Process;
|
|||
|
||||
namespace Service::AM {
|
||||
|
||||
std::unique_ptr<Process> CreateProcess(Core::System& system, u64 program_id,
|
||||
std::unique_ptr<Process> CreateProcessWith(Core::System& system, u64 program_id,
|
||||
u8 minimum_key_generation, u8 maximum_key_generation);
|
||||
std::unique_ptr<Process> CreateApplicationProcess(std::vector<u8>& out_control,
|
||||
std::unique_ptr<Loader::AppLoader>& out_loader,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
|
@ -92,7 +92,7 @@ Result IApplicationCreator::CreateSystemApplication(
|
|||
std::unique_ptr<Loader::AppLoader> loader;
|
||||
|
||||
auto process =
|
||||
CreateProcess(system, application_id, 1, 21);
|
||||
CreateProcessWith(system, application_id, 1, 21);
|
||||
R_UNLESS(process != nullptr, ResultUnknown);
|
||||
|
||||
const auto applet = std::make_shared<Applet>(system, std::move(process), true);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
|
@ -120,7 +120,7 @@ std::shared_ptr<ILibraryAppletAccessor> CreateGuestApplet(Core::System& system,
|
|||
Firmware2100 = 21,
|
||||
};
|
||||
|
||||
auto process = CreateProcess(system, program_id, Firmware1400, Firmware2100);
|
||||
auto process = CreateProcessWith(system, program_id, Firmware1400, Firmware2100);
|
||||
if (!process) {
|
||||
// Couldn't initialize the guest process
|
||||
return {};
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ IAddOnContentManager::IAddOnContentManager(Core::System& system_)
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
aoc_change_event = service_context.CreateEvent("GetAddOnContentListChanged:Event");
|
||||
aoc_change_event = service_context.CreateEventWith("GetAddOnContentListChanged:Event");
|
||||
}
|
||||
|
||||
IAddOnContentManager::~IAddOnContentManager() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -23,7 +26,7 @@ IPurchaseEventManager::IPurchaseEventManager(Core::System& system_)
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
purchased_event = service_context.CreateEvent("IPurchaseEventManager:PurchasedEvent");
|
||||
purchased_event = service_context.CreateEventWith("IPurchaseEventManager:PurchasedEvent");
|
||||
}
|
||||
|
||||
IPurchaseEventManager::~IPurchaseEventManager() {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
|
|
@ -91,7 +91,7 @@ IAudioController::IAudioController(Core::System& system_)
|
|||
|
||||
m_set_sys =
|
||||
system.ServiceManager().GetService<Service::Set::ISystemSettingsServer>("set:sys", true);
|
||||
notification_event = service_context.CreateEvent("IAudioController:NotificationEvent");
|
||||
notification_event = service_context.CreateEventWith("IAudioController:NotificationEvent");
|
||||
|
||||
// Probably shouldn't do this in constructor?
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ IAudioDevice::IAudioDevice(Core::System& system_, u64 applet_resource_user_id, u
|
|||
u32 device_num)
|
||||
: ServiceFramework{system_, "IAudioDevice"}, service_context{system_, "IAudioDevice"},
|
||||
impl{std::make_unique<AudioDevice>(system_, applet_resource_user_id, revision)},
|
||||
event{service_context.CreateEvent(fmt::format("IAudioDeviceEvent-{}", device_num))} {
|
||||
event{service_context.CreateEventWith(fmt::format("IAudioDeviceEvent-{}", device_num))} {
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, D<&IAudioDevice::ListAudioDeviceName>, "ListAudioDeviceName"},
|
||||
{1, D<&IAudioDevice::SetAudioDeviceOutputVolume>, "SetAudioDeviceOutputVolume"},
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ IAudioIn::IAudioIn(Core::System& system_, AudioCore::AudioIn::Manager& manager,
|
|||
const std::string& device_name, const AudioCore::AudioIn::AudioInParameter& in_params,
|
||||
Kernel::KProcess* handle, u64 applet_resource_user_id)
|
||||
: ServiceFramework{system_, "IAudioIn"}, process{handle}, service_context{system_, "IAudioIn"},
|
||||
event{service_context.CreateEvent("AudioInEvent")}, impl{std::make_shared<AudioCore::AudioIn::In>(system_,
|
||||
event{service_context.CreateEventWith("AudioInEvent")}, impl{std::make_shared<AudioCore::AudioIn::In>(system_,
|
||||
manager, event,
|
||||
session_id)} {
|
||||
// clang-format off
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ IAudioOut::IAudioOut(Core::System& system_, AudioCore::AudioOut::Manager& manage
|
|||
const std::string& device_name, const AudioCore::AudioOut::AudioOutParameter& in_params,
|
||||
Kernel::KProcess* handle, u64 applet_resource_user_id)
|
||||
: ServiceFramework{system_, "IAudioOut"}, service_context{system_, "IAudioOut"},
|
||||
event{service_context.CreateEvent("AudioOutEvent")}, process{handle},
|
||||
event{service_context.CreateEventWith("AudioOutEvent")}, process{handle},
|
||||
impl{std::make_shared<AudioCore::AudioOut::Out>(system_, manager, event, session_id)} {
|
||||
|
||||
// clang-format off
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ IAudioRenderer::IAudioRenderer(Core::System& system_, AudioCore::Renderer::Manag
|
|||
Kernel::KProcess* process_handle_, u64 applet_resource_user_id,
|
||||
s32 session_id)
|
||||
: ServiceFramework{system_, "IAudioRenderer"}, service_context{system_, "IAudioRenderer"},
|
||||
rendered_event{service_context.CreateEvent("IAudioRendererEvent")}, manager{manager_},
|
||||
rendered_event{service_context.CreateEventWith("IAudioRendererEvent")}, manager{manager_},
|
||||
impl{std::make_unique<AudioCore::Renderer::Renderer>(system_, manager, rendered_event)}, process_handle{process_handle_} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Service::BCAT {
|
|||
|
||||
ProgressServiceBackend::ProgressServiceBackend(Core::System& system, std::string_view event_name)
|
||||
: service_context{system, "ProgressServiceBackend"} {
|
||||
update_event = service_context.CreateEvent("ProgressServiceBackend:UpdateEvent:" +
|
||||
update_event = service_context.CreateEventWith("ProgressServiceBackend:UpdateEvent:" +
|
||||
std::string(event_name));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
|
|
@ -17,7 +20,7 @@ INewlyArrivedEventHolder::INewlyArrivedEventHolder(Core::System& system_)
|
|||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
arrived_event = service_context.CreateEvent("INewlyArrivedEventHolder::ArrivedEvent");
|
||||
arrived_event = service_context.CreateEventWith("INewlyArrivedEventHolder::ArrivedEvent");
|
||||
}
|
||||
|
||||
INewlyArrivedEventHolder::~INewlyArrivedEventHolder() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
|
|
@ -16,7 +19,7 @@ IOverwriteEventHolder::IOverwriteEventHolder(Core::System& system_)
|
|||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
overwrite_event = service_context.CreateEvent("IOverwriteEventHolder::OverwriteEvent");
|
||||
overwrite_event = service_context.CreateEventWith("IOverwriteEventHolder::OverwriteEvent");
|
||||
}
|
||||
|
||||
IOverwriteEventHolder::~IOverwriteEventHolder() {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public:
|
|||
// clang-format on
|
||||
RegisterHandlers(functions);
|
||||
|
||||
register_event = service_context.CreateEvent("BT:RegisterEvent");
|
||||
register_event = service_context.CreateEventWith("BT:RegisterEvent");
|
||||
}
|
||||
|
||||
~IBluetoothUser() override {
|
||||
|
|
|
|||
|
|
@ -44,9 +44,9 @@ IBtmSystemCore::IBtmSystemCore(Core::System& system_)
|
|||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
radio_event = service_context.CreateEvent("IBtmSystemCore::RadioEvent");
|
||||
radio_event = service_context.CreateEventWith("IBtmSystemCore::RadioEvent");
|
||||
audio_device_connection_event =
|
||||
service_context.CreateEvent("IBtmSystemCore::AudioDeviceConnectionEvent");
|
||||
service_context.CreateEventWith("IBtmSystemCore::AudioDeviceConnectionEvent");
|
||||
|
||||
m_set_sys =
|
||||
system.ServiceManager().GetService<Service::Set::ISystemSettingsServer>("set:sys", true);
|
||||
|
|
|
|||
|
|
@ -54,10 +54,10 @@ IBtmUserCore::IBtmUserCore(Core::System& system_)
|
|||
// clang-format on
|
||||
RegisterHandlers(functions);
|
||||
|
||||
scan_event = service_context.CreateEvent("IBtmUserCore:ScanEvent");
|
||||
connection_event = service_context.CreateEvent("IBtmUserCore:ConnectionEvent");
|
||||
service_discovery_event = service_context.CreateEvent("IBtmUserCore:DiscoveryEvent");
|
||||
config_event = service_context.CreateEvent("IBtmUserCore:ConfigEvent");
|
||||
scan_event = service_context.CreateEventWith("IBtmUserCore:ScanEvent");
|
||||
connection_event = service_context.CreateEventWith("IBtmUserCore:ConnectionEvent");
|
||||
service_discovery_event = service_context.CreateEventWith("IBtmUserCore:DiscoveryEvent");
|
||||
config_event = service_context.CreateEventWith("IBtmUserCore:ConfigEvent");
|
||||
}
|
||||
|
||||
IBtmUserCore::~IBtmUserCore() {
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ public:
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
completion_event = service_context.CreateEvent("IFriendService:CompletionEvent");
|
||||
completion_event = service_context.CreateEventWith("IFriendService:CompletionEvent");
|
||||
}
|
||||
|
||||
~IFriendService() override {
|
||||
|
|
@ -366,7 +366,7 @@ public:
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
notification_event = service_context.CreateEvent("INotificationService:NotifyEvent");
|
||||
notification_event = service_context.CreateEventWith("INotificationService:NotifyEvent");
|
||||
}
|
||||
|
||||
~INotificationService() override {
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ public:
|
|||
RegisterHandlers(functions);
|
||||
|
||||
notification_event =
|
||||
service_context.CreateEvent("INotificationSystemEventAccessor:NotificationEvent");
|
||||
service_context.CreateEventWith("INotificationSystemEventAccessor:NotificationEvent");
|
||||
}
|
||||
|
||||
~INotificationSystemEventAccessor() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -23,8 +26,8 @@ AlarmWorker::~AlarmWorker() {
|
|||
void AlarmWorker::Initialize(std::shared_ptr<Service::PSC::Time::ServiceManager> time_m) {
|
||||
m_time_m = std::move(time_m);
|
||||
|
||||
m_timer_event = m_ctx.CreateEvent("Glue:AlarmWorker:TimerEvent");
|
||||
m_timer_timing_event = Core::Timing::CreateEvent(
|
||||
m_timer_event = m_ctx.CreateEventWith("Glue:AlarmWorker:TimerEvent");
|
||||
m_timer_timing_event = Core::Timing::CreateEventWith(
|
||||
"Glue:AlarmWorker::AlarmTimer",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ Result TimeZoneService::GetDeviceLocationNameOperationEventReadableHandle(
|
|||
|
||||
m_operation_event.m_ctx.CloseEvent(m_operation_event.m_event);
|
||||
m_operation_event.m_event =
|
||||
m_operation_event.m_ctx.CreateEvent("Psc:TimeZoneService:OperationEvent");
|
||||
m_operation_event.m_ctx.CreateEventWith("Psc:TimeZoneService:OperationEvent");
|
||||
operation_event_initialized = true;
|
||||
std::scoped_lock l{m_mutex};
|
||||
m_list_nodes.push_back(m_operation_event);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -19,14 +22,14 @@ namespace Service::Glue::Time {
|
|||
|
||||
TimeWorker::TimeWorker(Core::System& system, StandardSteadyClockResource& steady_clock_resource,
|
||||
FileTimestampWorker& file_timestamp_worker)
|
||||
: m_system{system}, m_ctx{m_system, "Glue:TimeWorker"}, m_event{m_ctx.CreateEvent(
|
||||
: m_system{system}, m_ctx{m_system, "Glue:TimeWorker"}, m_event{m_ctx.CreateEventWith(
|
||||
"Glue:TimeWorker:Event")},
|
||||
m_steady_clock_resource{steady_clock_resource},
|
||||
m_file_timestamp_worker{file_timestamp_worker}, m_timer_steady_clock{m_ctx.CreateEvent(
|
||||
m_file_timestamp_worker{file_timestamp_worker}, m_timer_steady_clock{m_ctx.CreateEventWith(
|
||||
"Glue:TimeWorker:SteadyClockTimerEvent")},
|
||||
m_timer_file_system{m_ctx.CreateEvent("Glue:TimeWorker:FileTimeTimerEvent")},
|
||||
m_timer_file_system{m_ctx.CreateEventWith("Glue:TimeWorker:FileTimeTimerEvent")},
|
||||
m_alarm_worker{m_system, m_steady_clock_resource}, m_pm_state_change_handler{m_alarm_worker} {
|
||||
m_timer_steady_clock_timing_event = Core::Timing::CreateEvent(
|
||||
m_timer_steady_clock_timing_event = Core::Timing::CreateEventWith(
|
||||
"Time::SteadyClockEvent",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
@ -34,7 +37,7 @@ TimeWorker::TimeWorker(Core::System& system, StandardSteadyClockResource& steady
|
|||
return std::nullopt;
|
||||
});
|
||||
|
||||
m_timer_file_system_timing_event = Core::Timing::CreateEvent(
|
||||
m_timer_file_system_timing_event = Core::Timing::CreateEventWith(
|
||||
"Time::SteadyClockEvent",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -249,13 +249,13 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
joy_detach_event = service_context.CreateEvent("IHidSystemServer::JoyDetachEvent");
|
||||
joy_detach_event = service_context.CreateEventWith("IHidSystemServer::JoyDetachEvent");
|
||||
acquire_device_registered_event =
|
||||
service_context.CreateEvent("IHidSystemServer::AcquireDeviceRegisteredEvent");
|
||||
service_context.CreateEventWith("IHidSystemServer::AcquireDeviceRegisteredEvent");
|
||||
acquire_connection_trigger_timeout_event =
|
||||
service_context.CreateEvent("IHidSystemServer::AcquireConnectionTriggerTimeoutEvent");
|
||||
service_context.CreateEventWith("IHidSystemServer::AcquireConnectionTriggerTimeoutEvent");
|
||||
unique_pad_connection_event =
|
||||
service_context.CreateEvent("IHidSystemServer::AcquireUniquePadConnectionEventHandle");
|
||||
service_context.CreateEventWith("IHidSystemServer::AcquireUniquePadConnectionEventHandle");
|
||||
}
|
||||
|
||||
IHidSystemServer::~IHidSystemServer() {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ Hidbus::Hidbus(Core::System& system_)
|
|||
RegisterHandlers(functions);
|
||||
|
||||
// Register update callbacks
|
||||
hidbus_update_event = Core::Timing::CreateEvent(
|
||||
hidbus_update_event = Core::Timing::CreateEventWith(
|
||||
"Hidbus::UpdateCallback",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -36,7 +39,7 @@ ServiceContext::~ServiceContext() {
|
|||
}
|
||||
}
|
||||
|
||||
Kernel::KEvent* ServiceContext::CreateEvent(std::string&& name) {
|
||||
Kernel::KEvent* ServiceContext::CreateEventWith(std::string&& name) {
|
||||
// Reserve a new event from the process resource limit
|
||||
Kernel::KScopedResourceReservation event_reservation(process,
|
||||
Kernel::LimitableResource::EventCountMax);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -22,7 +25,7 @@ public:
|
|||
ServiceContext(Core::System& system_, std::string name_);
|
||||
~ServiceContext();
|
||||
|
||||
Kernel::KEvent* CreateEvent(std::string&& name);
|
||||
Kernel::KEvent* CreateEventWith(std::string&& name);
|
||||
|
||||
void CloseEvent(Kernel::KEvent* event);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
|
@ -16,9 +16,6 @@
|
|||
#include "core/internal_network/network_interface.h"
|
||||
#include "network/network.h"
|
||||
|
||||
// This is defined by synchapi.h and conflicts with ServiceContext::CreateEvent
|
||||
#undef CreateEvent
|
||||
|
||||
namespace Service::LDN {
|
||||
|
||||
IUserLocalCommunicationService::IUserLocalCommunicationService(Core::System& system_)
|
||||
|
|
@ -63,7 +60,7 @@ IUserLocalCommunicationService::IUserLocalCommunicationService(Core::System& sys
|
|||
RegisterHandlers(functions);
|
||||
|
||||
state_change_event =
|
||||
service_context.CreateEvent("IUserLocalCommunicationService:StateChangeEvent");
|
||||
service_context.CreateEventWith("IUserLocalCommunicationService:StateChangeEvent");
|
||||
}
|
||||
|
||||
IUserLocalCommunicationService::~IUserLocalCommunicationService() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -27,7 +30,7 @@ public:
|
|||
explicit ProcessManager(Core::System& system_) : ServiceFramework{system_, "ldr:pm"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, nullptr, "CreateProcess"},
|
||||
{0, nullptr, "CreateProcessWith"},
|
||||
{1, nullptr, "GetProgramInfo"},
|
||||
{2, nullptr, "PinProgram"},
|
||||
{3, nullptr, "UnpinProgram"},
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@ NfcDevice::NfcDevice(Core::HID::NpadIdType npad_id_, Core::System& system_,
|
|||
Kernel::KEvent* availability_change_event_)
|
||||
: npad_id{npad_id_}, system{system_}, service_context{service_context_},
|
||||
availability_change_event{availability_change_event_} {
|
||||
activate_event = service_context.CreateEvent("NFC:ActivateEvent");
|
||||
deactivate_event = service_context.CreateEvent("NFC:DeactivateEvent");
|
||||
activate_event = service_context.CreateEventWith("NFC:ActivateEvent");
|
||||
deactivate_event = service_context.CreateEventWith("NFC:DeactivateEvent");
|
||||
npad_device = system.HIDCore().GetEmulatedController(npad_id);
|
||||
|
||||
Core::HID::ControllerUpdateCallback engine_callback{
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ DeviceManager::DeviceManager(Core::System& system_, KernelHelpers::ServiceContex
|
|||
: system{system_}, service_context{service_context_} {
|
||||
|
||||
availability_change_event =
|
||||
service_context.CreateEvent("Nfc:DeviceManager:AvailabilityChangeEvent");
|
||||
service_context.CreateEventWith("Nfc:DeviceManager:AvailabilityChangeEvent");
|
||||
|
||||
for (u32 device_index = 0; device_index < devices.size(); device_index++) {
|
||||
devices[device_index] =
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#undef CreateEvent
|
||||
#pragma push_macro("interface")
|
||||
#undef interface
|
||||
#include <wlanapi.h>
|
||||
|
|
@ -40,10 +39,10 @@
|
|||
|
||||
namespace {
|
||||
|
||||
// Avoids name conflict with Windows' CreateEvent macro.
|
||||
// Avoids name conflict with Windows' CreateEventWith macro.
|
||||
[[nodiscard]] Kernel::KEvent* CreateKEvent(Service::KernelHelpers::ServiceContext& service_context,
|
||||
std::string&& name) {
|
||||
return service_context.CreateEvent(std::move(name));
|
||||
return service_context.CreateEventWith(std::move(name));
|
||||
}
|
||||
|
||||
} // Anonymous namespace
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
|
|
@ -418,7 +418,7 @@ public:
|
|||
RegisterHandlers(functions);
|
||||
|
||||
finished_event =
|
||||
service_context.CreateEvent("IEnsureNetworkClockAvailabilityService:FinishEvent");
|
||||
service_context.CreateEventWith("IEnsureNetworkClockAvailabilityService:FinishEvent");
|
||||
}
|
||||
|
||||
~IEnsureNetworkClockAvailabilityService() override {
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public:
|
|||
};
|
||||
RegisterHandlers(functions);
|
||||
|
||||
completion_event = service_context.CreateEvent("IAsyncValue:Completion");
|
||||
completion_event = service_context.CreateEventWith("IAsyncValue:Completion");
|
||||
completion_event->GetReadableEvent().Signal();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -332,7 +332,7 @@ void nvhost_ctrl::CreateNvEvent(u32 event_id) {
|
|||
ASSERT(!event.kevent);
|
||||
ASSERT(!event.registered);
|
||||
ASSERT(!event.IsBeingUsed());
|
||||
event.kevent = events_interface.CreateEvent(fmt::format("NVCTRL::NvEvent_{}", event_id));
|
||||
event.kevent = events_interface.CreateEventWith(fmt::format("NVCTRL::NvEvent_{}", event_id));
|
||||
event.status = EventState::Available;
|
||||
event.registered = true;
|
||||
const u64 mask = 1ULL << event_id;
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ namespace Service::Nvidia::Devices {
|
|||
|
||||
nvhost_ctrl_gpu::nvhost_ctrl_gpu(Core::System& system_, EventInterface& events_interface_)
|
||||
: nvdevice{system_}, events_interface{events_interface_} {
|
||||
error_notifier_event = events_interface.CreateEvent("CtrlGpuErrorNotifier");
|
||||
unknown_event = events_interface.CreateEvent("CtrlGpuUnknownEvent");
|
||||
error_notifier_event = events_interface.CreateEventWith("CtrlGpuErrorNotifier");
|
||||
unknown_event = events_interface.CreateEventWith("CtrlGpuUnknownEvent");
|
||||
}
|
||||
nvhost_ctrl_gpu::~nvhost_ctrl_gpu() {
|
||||
events_interface.FreeEvent(error_notifier_event);
|
||||
|
|
|
|||
|
|
@ -38,10 +38,10 @@ nvhost_gpu::nvhost_gpu(Core::System& system_, EventInterface& events_interface_,
|
|||
channel_state{system.GPU().AllocateChannel()} {
|
||||
channel_syncpoint = syncpoint_manager.AllocateSyncpoint(false);
|
||||
sm_exception_breakpoint_int_report_event =
|
||||
events_interface.CreateEvent("GpuChannelSMExceptionBreakpointInt");
|
||||
events_interface.CreateEventWith("GpuChannelSMExceptionBreakpointInt");
|
||||
sm_exception_breakpoint_pause_report_event =
|
||||
events_interface.CreateEvent("GpuChannelSMExceptionBreakpointPause");
|
||||
error_notifier_event = events_interface.CreateEvent("GpuChannelErrorNotifier");
|
||||
events_interface.CreateEventWith("GpuChannelSMExceptionBreakpointPause");
|
||||
error_notifier_event = events_interface.CreateEventWith("GpuChannelErrorNotifier");
|
||||
}
|
||||
|
||||
nvhost_gpu::~nvhost_gpu() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
||||
// SPDX-FileCopyrightText: 2021 Skyline Team and Contributors
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
|
@ -33,8 +36,8 @@ EventInterface::EventInterface(Module& module_) : module{module_}, guard{}, on_s
|
|||
|
||||
EventInterface::~EventInterface() = default;
|
||||
|
||||
Kernel::KEvent* EventInterface::CreateEvent(std::string name) {
|
||||
Kernel::KEvent* new_event = module.service_context.CreateEvent(std::move(name));
|
||||
Kernel::KEvent* EventInterface::CreateEventWith(std::string name) {
|
||||
Kernel::KEvent* new_event = module.service_context.CreateEventWith(std::move(name));
|
||||
return new_event;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public:
|
|||
explicit EventInterface(Module& module_);
|
||||
~EventInterface();
|
||||
|
||||
Kernel::KEvent* CreateEvent(std::string name);
|
||||
Kernel::KEvent* CreateEventWith(std::string name);
|
||||
|
||||
void FreeEvent(Kernel::KEvent* event);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ BufferQueueProducer::BufferQueueProducer(Service::KernelHelpers::ServiceContext&
|
|||
Service::Nvidia::NvCore::NvMap& nvmap_)
|
||||
: service_context{service_context_}, core{std::move(buffer_queue_core_)}, slots(core->slots),
|
||||
clock{Common::CreateOptimalClock()}, nvmap(nvmap_) {
|
||||
buffer_wait_event = service_context.CreateEvent("BufferQueue:WaitEvent");
|
||||
buffer_wait_event = service_context.CreateEventWith("BufferQueue:WaitEvent");
|
||||
}
|
||||
|
||||
BufferQueueProducer::~BufferQueueProducer() {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Service::OLSC {
|
|||
|
||||
INativeHandleHolder::INativeHandleHolder(Core::System& system_)
|
||||
: ServiceFramework{system_, "INativeHandleHolder"}, service_context{system_, "OLSC"} {
|
||||
event = service_context.CreateEvent("OLSC::INativeHandleHolder");
|
||||
event = service_context.CreateEventWith("OLSC::INativeHandleHolder");
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, D<&INativeHandleHolder::GetNativeHandle>, "GetNativeHandle"},
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -8,7 +11,7 @@
|
|||
namespace Service {
|
||||
|
||||
Event::Event(KernelHelpers::ServiceContext& ctx) {
|
||||
m_event = ctx.CreateEvent("Event");
|
||||
m_event = ctx.CreateEventWith("Event");
|
||||
}
|
||||
|
||||
Event::~Event() {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
|
|
@ -23,7 +23,7 @@ IReceiver::IReceiver(Core::System& system_)
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
receive_event = service_context.CreateEvent("IReceiver::ReceiveEvent");
|
||||
receive_event = service_context.CreateEventWith("IReceiver::ReceiveEvent");
|
||||
}
|
||||
|
||||
IReceiver::~IReceiver() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -7,7 +10,7 @@
|
|||
|
||||
namespace Service::PSC::Time {
|
||||
Alarm::Alarm(Core::System& system, KernelHelpers::ServiceContext& ctx, AlarmType type)
|
||||
: m_ctx{ctx}, m_event{ctx.CreateEvent("Psc:Alarm:Event")} {
|
||||
: m_ctx{ctx}, m_event{ctx.CreateEventWith("Psc:Alarm:Event")} {
|
||||
m_event->Clear();
|
||||
|
||||
switch (type) {
|
||||
|
|
@ -30,7 +33,7 @@ Alarm::~Alarm() {
|
|||
Alarms::Alarms(Core::System& system, StandardSteadyClockCore& steady_clock,
|
||||
PowerStateRequestManager& power_state_request_manager)
|
||||
: m_system{system}, m_ctx{system, "Psc:Alarms"}, m_steady_clock{steady_clock},
|
||||
m_power_state_request_manager{power_state_request_manager}, m_event{m_ctx.CreateEvent(
|
||||
m_power_state_request_manager{power_state_request_manager}, m_event{m_ctx.CreateEventWith(
|
||||
"Psc:Alarms:Event")} {}
|
||||
|
||||
Alarms::~Alarms() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -11,7 +14,7 @@ StandardUserSystemClockCore::StandardUserSystemClockCore(
|
|||
StandardNetworkSystemClockCore& network_clock)
|
||||
: SystemClockCore{local_clock.GetSteadyClock()}, m_system{system},
|
||||
m_ctx{m_system, "Psc:StandardUserSystemClockCore"}, m_local_system_clock{local_clock},
|
||||
m_network_system_clock{network_clock}, m_event{m_ctx.CreateEvent(
|
||||
m_network_system_clock{network_clock}, m_event{m_ctx.CreateEventWith(
|
||||
"Psc:StandardUserSystemClockCore:Event")} {}
|
||||
|
||||
StandardUserSystemClockCore::~StandardUserSystemClockCore() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -7,7 +10,7 @@
|
|||
namespace Service::PSC::Time {
|
||||
OperationEvent::OperationEvent(Core::System& system)
|
||||
: m_ctx{system, "Time:OperationEvent"}, m_event{
|
||||
m_ctx.CreateEvent("Time:OperationEvent:Event")} {}
|
||||
m_ctx.CreateEventWith("Time:OperationEvent:Event")} {}
|
||||
|
||||
OperationEvent::~OperationEvent() {
|
||||
m_ctx.CloseEvent(m_event);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -11,7 +11,7 @@ namespace Service::PSC::Time {
|
|||
|
||||
PowerStateRequestManager::PowerStateRequestManager(Core::System& system)
|
||||
: m_system{system}, m_ctx{system, "Psc:PowerStateRequestManager"},
|
||||
m_event{m_ctx.CreateEvent("Psc:PowerStateRequestManager:Event")} {}
|
||||
m_event{m_ctx.CreateEventWith("Psc:PowerStateRequestManager:Event")} {}
|
||||
|
||||
PowerStateRequestManager::~PowerStateRequestManager() {
|
||||
m_ctx.CloseEvent(m_event);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
|
||||
RegisterHandlers(functions);
|
||||
|
||||
state_change_event = service_context.CreateEvent("IPsmSession::state_change_event");
|
||||
state_change_event = service_context.CreateEventWith("IPsmSession::state_change_event");
|
||||
}
|
||||
|
||||
~IPsmSession() override {
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ Conductor::Conductor(Core::System& system, Container& container, DisplayList& di
|
|||
});
|
||||
|
||||
if (system.IsMulticore()) {
|
||||
m_event = Core::Timing::CreateEvent(
|
||||
m_event = Core::Timing::CreateEventWith(
|
||||
"ScreenComposition",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
@ -34,7 +34,7 @@ Conductor::Conductor(Core::System& system, Container& container, DisplayList& di
|
|||
system.CoreTiming().ScheduleLoopingEvent(FrameNs, FrameNs, m_event);
|
||||
m_thread = std::jthread([this](std::stop_token token) { this->VsyncThread(token); });
|
||||
} else {
|
||||
m_event = Core::Timing::CreateEvent(
|
||||
m_event = Core::Timing::CreateEventWith(
|
||||
"ScreenComposition",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
|
|
@ -233,7 +233,7 @@ CheatEngine::~CheatEngine() {
|
|||
}
|
||||
|
||||
void CheatEngine::Initialize() {
|
||||
event = Core::Timing::CreateEvent(
|
||||
event = Core::Timing::CreateEventWith(
|
||||
"CheatEngine::FrameCallback::" + Common::HexToString(metadata.main_nso_build_id),
|
||||
[this](s64 time, std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
FrameCallback(ns_late);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ void MemoryWriteWidth(Core::Memory::Memory& memory, u32 width, VAddr addr, u64 v
|
|||
|
||||
Freezer::Freezer(Core::Timing::CoreTiming& core_timing_, Core::Memory::Memory& memory_)
|
||||
: core_timing{core_timing_}, memory{memory_} {
|
||||
event = Core::Timing::CreateEvent("MemoryFreezer::FrameCallback",
|
||||
event = Core::Timing::CreateEventWith("MemoryFreezer::FrameCallback",
|
||||
[this](s64 time, std::chrono::nanoseconds ns_late)
|
||||
-> std::optional<std::chrono::nanoseconds> {
|
||||
FrameCallback(ns_late);
|
||||
|
|
|
|||
|
|
@ -928,10 +928,10 @@ void Config::ReadSettingGeneric(Settings::BasicSetting* const setting) {
|
|||
const bool is_default =
|
||||
ReadBooleanSetting(std::string(key).append("\\default"), std::make_optional(true));
|
||||
if (!is_default) {
|
||||
setting->LoadString(ReadStringSetting(key, default_value));
|
||||
setting->LoadStringWith(ReadStringSetting(key, default_value));
|
||||
} else {
|
||||
// Empty string resets the Setting to default
|
||||
setting->LoadString("");
|
||||
setting->LoadStringWith("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
#include <boost/algorithm/string/replace.hpp>
|
||||
|
||||
// Workaround for conflicting definition in libloaderapi.h caused by SimpleIni
|
||||
#undef LoadString
|
||||
#undef LoadStringWith
|
||||
#undef CreateAndOpenFile
|
||||
#undef DeleteAndUnlinkFile
|
||||
#undef CopyAndOpenFile
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -11,7 +14,7 @@ namespace Service::HID {
|
|||
|
||||
HidbusBase::HidbusBase(Core::System& system_, KernelHelpers::ServiceContext& service_context_)
|
||||
: system(system_), service_context(service_context_) {
|
||||
send_command_async_event = service_context.CreateEvent("hidbus:SendCommandAsyncEvent");
|
||||
send_command_async_event = service_context.CreateEventWith("hidbus:SendCommandAsyncEvent");
|
||||
}
|
||||
|
||||
HidbusBase::~HidbusBase() {
|
||||
|
|
|
|||
|
|
@ -56,27 +56,27 @@ ResourceManager::ResourceManager(Core::System& system_,
|
|||
applet_resource = std::make_shared<AppletResource>(system);
|
||||
|
||||
// Register update callbacks
|
||||
npad_update_event = Core::Timing::CreateEvent("HID::UpdatePadCallback",
|
||||
npad_update_event = Core::Timing::CreateEventWith("HID::UpdatePadCallback",
|
||||
[this](s64 time, std::chrono::nanoseconds ns_late)
|
||||
-> std::optional<std::chrono::nanoseconds> {
|
||||
UpdateNpad(ns_late);
|
||||
return std::nullopt;
|
||||
});
|
||||
default_update_event = Core::Timing::CreateEvent(
|
||||
default_update_event = Core::Timing::CreateEventWith(
|
||||
"HID::UpdateDefaultCallback",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
UpdateControllers(ns_late);
|
||||
return std::nullopt;
|
||||
});
|
||||
mouse_keyboard_update_event = Core::Timing::CreateEvent(
|
||||
mouse_keyboard_update_event = Core::Timing::CreateEventWith(
|
||||
"HID::UpdateMouseKeyboardCallback",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
UpdateMouseKeyboard(ns_late);
|
||||
return std::nullopt;
|
||||
});
|
||||
motion_update_event = Core::Timing::CreateEvent(
|
||||
motion_update_event = Core::Timing::CreateEventWith(
|
||||
"HID::UpdateMotionCallback",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
@ -101,7 +101,7 @@ void ResourceManager::Initialize() {
|
|||
|
||||
system.HIDCore().ReloadInputDevices();
|
||||
|
||||
input_event = service_context.CreateEvent("ResourceManager:InputEvent");
|
||||
input_event = service_context.CreateEventWith("ResourceManager:InputEvent");
|
||||
|
||||
InitializeHandheldConfig();
|
||||
InitializeHidCommonSampler();
|
||||
|
|
@ -267,7 +267,7 @@ void ResourceManager::InitializeTouchScreenSampler() {
|
|||
touch_screen = std::make_shared<TouchScreen>(touch_resource);
|
||||
gesture = std::make_shared<Gesture>(touch_resource);
|
||||
|
||||
touch_update_event = Core::Timing::CreateEvent(
|
||||
touch_update_event = Core::Timing::CreateEventWith(
|
||||
"HID::TouchUpdateCallback",
|
||||
[this](s64 time,
|
||||
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -517,7 +517,7 @@ Result NPadResource::AcquireNpadStyleSetUpdateEventHandle(u64 aruid,
|
|||
if (!controller_state.is_styleset_update_event_initialized) {
|
||||
// Auto clear = true
|
||||
controller_state.style_set_update_event =
|
||||
service_context.CreateEvent("NpadResource:StylesetUpdateEvent");
|
||||
service_context.CreateEventWith("NpadResource:StylesetUpdateEvent");
|
||||
|
||||
// Assume creating the event succeeds otherwise crash the system here
|
||||
controller_state.is_styleset_update_event_initialized = true;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
|
|
@ -17,7 +17,7 @@ namespace Service::HID {
|
|||
Palma::Palma(Core::HID::HIDCore& hid_core_, KernelHelpers::ServiceContext& service_context_)
|
||||
: ControllerBase{hid_core_}, service_context{service_context_} {
|
||||
controller = hid_core.GetEmulatedController(Core::HID::NpadIdType::Other);
|
||||
operation_complete_event = service_context.CreateEvent("hid:PalmaOperationCompleteEvent");
|
||||
operation_complete_event = service_context.CreateEventWith("hid:PalmaOperationCompleteEvent");
|
||||
}
|
||||
|
||||
Palma::~Palma() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: 2016 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -56,11 +59,11 @@ TEST_CASE("CoreTiming[BasicOrder]", "[core]") {
|
|||
ScopeInit guard;
|
||||
auto& core_timing = guard.core_timing;
|
||||
std::vector<std::shared_ptr<Core::Timing::EventType>> events{
|
||||
Core::Timing::CreateEvent("callbackA", HostCallbackTemplate<0>),
|
||||
Core::Timing::CreateEvent("callbackB", HostCallbackTemplate<1>),
|
||||
Core::Timing::CreateEvent("callbackC", HostCallbackTemplate<2>),
|
||||
Core::Timing::CreateEvent("callbackD", HostCallbackTemplate<3>),
|
||||
Core::Timing::CreateEvent("callbackE", HostCallbackTemplate<4>),
|
||||
Core::Timing::CreateEventWith("callbackA", HostCallbackTemplate<0>),
|
||||
Core::Timing::CreateEventWith("callbackB", HostCallbackTemplate<1>),
|
||||
Core::Timing::CreateEventWith("callbackC", HostCallbackTemplate<2>),
|
||||
Core::Timing::CreateEventWith("callbackD", HostCallbackTemplate<3>),
|
||||
Core::Timing::CreateEventWith("callbackE", HostCallbackTemplate<4>),
|
||||
};
|
||||
|
||||
expected_callback = 0;
|
||||
|
|
@ -96,11 +99,11 @@ TEST_CASE("CoreTiming[BasicOrderNoPausing]", "[core]") {
|
|||
ScopeInit guard;
|
||||
auto& core_timing = guard.core_timing;
|
||||
std::vector<std::shared_ptr<Core::Timing::EventType>> events{
|
||||
Core::Timing::CreateEvent("callbackA", HostCallbackTemplate<0>),
|
||||
Core::Timing::CreateEvent("callbackB", HostCallbackTemplate<1>),
|
||||
Core::Timing::CreateEvent("callbackC", HostCallbackTemplate<2>),
|
||||
Core::Timing::CreateEvent("callbackD", HostCallbackTemplate<3>),
|
||||
Core::Timing::CreateEvent("callbackE", HostCallbackTemplate<4>),
|
||||
Core::Timing::CreateEventWith("callbackA", HostCallbackTemplate<0>),
|
||||
Core::Timing::CreateEventWith("callbackB", HostCallbackTemplate<1>),
|
||||
Core::Timing::CreateEventWith("callbackC", HostCallbackTemplate<2>),
|
||||
Core::Timing::CreateEventWith("callbackD", HostCallbackTemplate<3>),
|
||||
Core::Timing::CreateEventWith("callbackE", HostCallbackTemplate<4>),
|
||||
};
|
||||
|
||||
core_timing.SyncPause(true);
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ RasterizerVulkan::RasterizerVulkan(Core::Frontend::EmuWindow& emu_window_, Tegra
|
|||
render_pass_cache, buffer_cache, texture_cache, gpu.ShaderNotify()),
|
||||
accelerate_dma(buffer_cache, texture_cache, scheduler),
|
||||
fence_manager(*this, gpu, texture_cache, buffer_cache, query_cache, device, scheduler),
|
||||
wfi_event(device.GetLogical().CreateEvent()) {
|
||||
wfi_event(device.GetLogical().CreateEventWith()) {
|
||||
scheduler.SetQueryCache(query_cache);
|
||||
|
||||
// Log multi-draw support
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@
|
|||
#endif
|
||||
|
||||
// Sanitize macros
|
||||
#undef CreateEvent
|
||||
#undef CreateSemaphore
|
||||
#undef Always
|
||||
#undef False
|
||||
|
|
|
|||
|
|
@ -778,7 +778,7 @@ ShaderModule Device::CreateShaderModule(const VkShaderModuleCreateInfo& ci) cons
|
|||
return ShaderModule(object, handle, *dld);
|
||||
}
|
||||
|
||||
Event Device::CreateEvent() const {
|
||||
Event Device::CreateEventWith() const {
|
||||
static constexpr VkEventCreateInfo ci{
|
||||
.sType = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
|
||||
.pNext = nullptr,
|
||||
|
|
|
|||
|
|
@ -1038,7 +1038,7 @@ public:
|
|||
|
||||
[[nodiscard]] ShaderModule CreateShaderModule(const VkShaderModuleCreateInfo& ci) const;
|
||||
|
||||
[[nodiscard]] Event CreateEvent() const;
|
||||
[[nodiscard]] Event CreateEventWith() const;
|
||||
|
||||
[[nodiscard]] SwapchainKHR CreateSwapchainKHR(const VkSwapchainCreateInfoKHR& ci) const;
|
||||
|
||||
|
|
|
|||
|
|
@ -656,10 +656,10 @@ void Widget::SetupComponent(const QString& label, std::function<void()>& load_fu
|
|||
if (Settings::IsConfiguringGlobal()) {
|
||||
load_func = [this, serializer, checkbox_serializer, require_checkbox, other_setting]() {
|
||||
if (require_checkbox && other_setting->UsingGlobal()) {
|
||||
other_setting->LoadString(checkbox_serializer());
|
||||
other_setting->LoadStringWith(checkbox_serializer());
|
||||
}
|
||||
if (setting.UsingGlobal()) {
|
||||
setting.LoadString(serializer());
|
||||
setting.LoadStringWith(serializer());
|
||||
}
|
||||
};
|
||||
} else {
|
||||
|
|
@ -681,12 +681,12 @@ void Widget::SetupComponent(const QString& label, std::function<void()>& load_fu
|
|||
bool using_global = !restore_button->isEnabled();
|
||||
setting.SetGlobal(using_global);
|
||||
if (!using_global) {
|
||||
setting.LoadString(serializer());
|
||||
setting.LoadStringWith(serializer());
|
||||
}
|
||||
if (require_checkbox) {
|
||||
other_setting->SetGlobal(using_global);
|
||||
if (!using_global) {
|
||||
other_setting->LoadString(checkbox_serializer());
|
||||
other_setting->LoadStringWith(checkbox_serializer());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ SVCS = [
|
|||
[0x24, "Result GetProcessId(uint64_t* out_process_id, Handle process_handle);"],
|
||||
[0x25, "Result GetThreadId(uint64_t* out_thread_id, Handle thread_handle);"],
|
||||
[0x26, "void Break(BreakReason break_reason, Address arg, Size size);"],
|
||||
[0x27, "Result OutputDebugString(Address debug_str, Size len);"],
|
||||
[0x27, "Result OutputDebugStringWith(Address debug_str, Size len);"],
|
||||
[0x28, "void ReturnFromException(Result result);"],
|
||||
[0x29, "Result GetInfo(uint64_t* out, InfoType info_type, Handle handle, uint64_t info_subtype);"],
|
||||
[0x2A, "void FlushEntireDataCache();"],
|
||||
|
|
@ -76,7 +76,7 @@ SVCS = [
|
|||
[0x42, "Result ReplyAndReceiveLight(Handle handle);"],
|
||||
[0x43, "Result ReplyAndReceive(int32_t* out_index, Address handles, int32_t num_handles, Handle reply_target, int64_t timeout_ns);"],
|
||||
[0x44, "Result ReplyAndReceiveWithUserBuffer(int32_t* out_index, Address message_buffer, Size message_buffer_size, Address handles, int32_t num_handles, Handle reply_target, int64_t timeout_ns);"],
|
||||
[0x45, "Result CreateEvent(Handle* out_write_handle, Handle* out_read_handle);"],
|
||||
[0x45, "Result CreateEventWith(Handle* out_write_handle, Handle* out_read_handle);"],
|
||||
[0x46, "Result MapIoRegion(Handle io_region, Address address, Size size, MemoryPermission perm);"],
|
||||
[0x47, "Result UnmapIoRegion(Handle io_region, Address address, Size size);"],
|
||||
[0x48, "Result MapPhysicalMemoryUnsafe(Address address, Size size);"],
|
||||
|
|
@ -127,7 +127,7 @@ SVCS = [
|
|||
[0x76, "Result QueryProcessMemory(Address out_memory_info, PageInfo* out_page_info, Handle process_handle, uint64_t address);"],
|
||||
[0x77, "Result MapProcessCodeMemory(Handle process_handle, uint64_t dst_address, uint64_t src_address, uint64_t size);"],
|
||||
[0x78, "Result UnmapProcessCodeMemory(Handle process_handle, uint64_t dst_address, uint64_t src_address, uint64_t size);"],
|
||||
[0x79, "Result CreateProcess(Handle* out_handle, Address parameters, Address caps, int32_t num_caps);"],
|
||||
[0x79, "Result CreateProcessWith(Handle* out_handle, Address parameters, Address caps, int32_t num_caps);"],
|
||||
[0x7A, "Result StartProcess(Handle process_handle, int32_t priority, int32_t core_id, uint64_t main_thread_stack_size);"],
|
||||
[0x7B, "Result TerminateProcess(Handle process_handle);"],
|
||||
[0x7C, "Result GetProcessInfo(int64_t* out_info, Handle process_handle, ProcessInfoType info_type);"],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue