/* * Copyright (c) 2018-2019 Atmosphère-NX * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dmnt_service.hpp" namespace sts::dmnt { Result DebugMonitorService::BreakDebugProcess(Handle debug_hnd) { /* Nintendo discards the output of this command, but we will return it. */ return svcBreakDebugProcess(debug_hnd); } Result DebugMonitorService::TerminateDebugProcess(Handle debug_hnd) { /* Nintendo discards the output of this command, but we will return it. */ return svcTerminateDebugProcess(debug_hnd); } Result DebugMonitorService::CloseHandle(Handle debug_hnd) { /* Nintendo discards the output of this command, but we will return it. */ /* This command is, entertainingly, also pretty unsafe in general... */ return svcCloseHandle(debug_hnd); } Result DebugMonitorService::GetProcessId(sf::Out out_pid, Handle hnd) { /* Nintendo discards the output of this command, but we will return it. */ return svcGetProcessId(reinterpret_cast(out_pid.GetPointer()), hnd); } Result DebugMonitorService::GetProcessHandle(sf::Out out_hnd, os::ProcessId pid) { R_TRY_CATCH(svcDebugActiveProcess(out_hnd.GetPointer(), static_cast(pid))) { R_CATCH(ResultKernelAlreadyExists) { return ResultDebugAlreadyAttached; } } R_END_TRY_CATCH; return ResultSuccess; } Result DebugMonitorService::WaitSynchronization(Handle hnd, u64 ns) { /* Nintendo discards the output of this command, but we will return it. */ return svcWaitSynchronizationSingle(hnd, ns); } }