From 4ac8f2745bdc5439139d9575b080c0b09d9215d5 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Sat, 20 Apr 2019 18:13:32 -0700 Subject: [PATCH] ro: skeleton ro:dmnt --- stratosphere/ro/source/ro_debug_monitor.cpp | 26 ++++++++++++++++ stratosphere/ro/source/ro_debug_monitor.hpp | 33 +++++++++++++++++++++ stratosphere/ro/source/ro_main.cpp | 7 +++-- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 stratosphere/ro/source/ro_debug_monitor.cpp create mode 100644 stratosphere/ro/source/ro_debug_monitor.hpp diff --git a/stratosphere/ro/source/ro_debug_monitor.cpp b/stratosphere/ro/source/ro_debug_monitor.cpp new file mode 100644 index 000000000..fb26fa66b --- /dev/null +++ b/stratosphere/ro/source/ro_debug_monitor.cpp @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include +#include +#include "ro_debug_monitor.hpp" + +Result DebugMonitorService::GetProcessModuleInfo(Out count, OutBuffer out_infos, u64 pid) { + /* TODO: Implement. */ + return ResultKernelConnectionClosed; +} \ No newline at end of file diff --git a/stratosphere/ro/source/ro_debug_monitor.hpp b/stratosphere/ro/source/ro_debug_monitor.hpp new file mode 100644 index 000000000..d8273e2df --- /dev/null +++ b/stratosphere/ro/source/ro_debug_monitor.hpp @@ -0,0 +1,33 @@ +/* + * 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 . + */ + +#pragma once +#include +#include + +enum DebugMonitorServiceCmd { + Dmnt_Cmd_GetProcessModuleInfo = 0 +}; + +class DebugMonitorService final : public IServiceObject { + private: + /* Actual commands. */ + Result GetProcessModuleInfo(Out count, OutBuffer out_infos, u64 pid); + public: + DEFINE_SERVICE_DISPATCH_TABLE { + MakeServiceCommandMeta(), + }; +}; diff --git a/stratosphere/ro/source/ro_main.cpp b/stratosphere/ro/source/ro_main.cpp index 0844a1de3..4c7264ff0 100644 --- a/stratosphere/ro/source/ro_main.cpp +++ b/stratosphere/ro/source/ro_main.cpp @@ -23,6 +23,8 @@ #include #include +#include "ro_debug_monitor.hpp" + extern "C" { extern u32 __start__; @@ -104,12 +106,13 @@ void __appExit(void) { int main(int argc, char **argv) { /* Static server manager. */ - static auto g_server_manager = WaitableManager(1); + static auto s_server_manager = WaitableManager(1); /* TODO: Create services. */ + s_server_manager.AddWaitable(new ServiceServer("ro:dmnt", 1)); /* Loop forever, servicing our services. */ - g_server_manager.Process(); + s_server_manager.Process(); /* Cleanup */ return 0;