mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-30 07:42:13 +00:00
nim: add DestroySystemUpdateTask/ListSystemUpdateTask (#863)
This commit is contained in:
parent
2b930d21fd
commit
07c95662b1
6 changed files with 171 additions and 1 deletions
|
@ -48,6 +48,7 @@
|
||||||
#include "stratosphere/lr.hpp"
|
#include "stratosphere/lr.hpp"
|
||||||
#include "stratosphere/map.hpp"
|
#include "stratosphere/map.hpp"
|
||||||
#include "stratosphere/ncm.hpp"
|
#include "stratosphere/ncm.hpp"
|
||||||
|
#include "stratosphere/nim.hpp"
|
||||||
#include "stratosphere/patcher.hpp"
|
#include "stratosphere/patcher.hpp"
|
||||||
#include "stratosphere/pm.hpp"
|
#include "stratosphere/pm.hpp"
|
||||||
#include "stratosphere/reg.hpp"
|
#include "stratosphere/reg.hpp"
|
||||||
|
@ -58,7 +59,6 @@
|
||||||
#include "stratosphere/spl.hpp"
|
#include "stratosphere/spl.hpp"
|
||||||
#include "stratosphere/updater.hpp"
|
#include "stratosphere/updater.hpp"
|
||||||
|
|
||||||
|
|
||||||
/* Include FS last. */
|
/* Include FS last. */
|
||||||
#include "stratosphere/fs.hpp"
|
#include "stratosphere/fs.hpp"
|
||||||
#include "stratosphere/fssrv.hpp"
|
#include "stratosphere/fssrv.hpp"
|
||||||
|
|
19
libraries/libstratosphere/include/stratosphere/nim.hpp
Normal file
19
libraries/libstratosphere/include/stratosphere/nim.hpp
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2020 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stratosphere/nim/nim_network_install_manager_api.hpp>
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2020 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <stratosphere/nim/nim_system_update_task_id.hpp>
|
||||||
|
|
||||||
|
namespace ams::nim {
|
||||||
|
|
||||||
|
/* Management. */
|
||||||
|
void InitializeForNetworkInstallManager();
|
||||||
|
void FinalizeForNetworkInstallManager();
|
||||||
|
|
||||||
|
/* Service API. */
|
||||||
|
Result DestroySystemUpdateTask(const SystemUpdateTaskId& id);
|
||||||
|
s32 ListSystemUpdateTask(SystemUpdateTaskId *out_list, size_t out_list_size);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019-2020 Adubbz, 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include <vapours.hpp>
|
||||||
|
#include <stratosphere/nim/nim_task_id_common.hpp>
|
||||||
|
|
||||||
|
namespace ams::nim {
|
||||||
|
|
||||||
|
AMS_NIM_DEFINE_TASK_ID(SystemUpdateTaskId, 8);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019-2020 Adubbz, 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include <vapours.hpp>
|
||||||
|
#include <stratosphere/nim/nim_task_id_common.hpp>
|
||||||
|
|
||||||
|
namespace ams::nim {
|
||||||
|
|
||||||
|
#define AMS_NIM_DEFINE_TASK_ID(ID, ALIGN) \
|
||||||
|
struct alignas(ALIGN) ID { \
|
||||||
|
util::Uuid uuid; \
|
||||||
|
\
|
||||||
|
ALWAYS_INLINE bool IsValid() const { \
|
||||||
|
return this->uuid != util::InvalidUuid; \
|
||||||
|
} \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
static_assert(alignof(ID) == ALIGN); \
|
||||||
|
\
|
||||||
|
ALWAYS_INLINE bool operator==(const ID &lhs, const ID &rhs) { \
|
||||||
|
return lhs.uuid == rhs.uuid; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
ALWAYS_INLINE bool operator!=(const ID &lhs, const ID &rhs) { \
|
||||||
|
return lhs.uuid != rhs.uuid; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
constexpr inline ID Invalid##ID = { util::InvalidUuid }
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019-2020 Adubbz, 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include <stratosphere.hpp>
|
||||||
|
|
||||||
|
namespace ams::nim {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
bool g_initialized;
|
||||||
|
|
||||||
|
}
|
||||||
|
/* Management. */
|
||||||
|
void InitializeForNetworkInstallManager() {
|
||||||
|
AMS_ASSERT(!g_initialized);
|
||||||
|
R_ABORT_UNLESS(nimInitialize());
|
||||||
|
g_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FinalizeForNetworkInstallManager() {
|
||||||
|
AMS_ASSERT(g_initialized);
|
||||||
|
nimExit();
|
||||||
|
g_initialized = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Service API. */
|
||||||
|
Result DestroySystemUpdateTask(const SystemUpdateTaskId& id) {
|
||||||
|
static_assert(sizeof(SystemUpdateTaskId) == sizeof(::NimSystemUpdateTaskId));
|
||||||
|
return nimDestroySystemUpdateTask(reinterpret_cast<const ::NimSystemUpdateTaskId *>(std::addressof(id)));
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 ListSystemUpdateTask(SystemUpdateTaskId *out_list, size_t out_list_size) {
|
||||||
|
static_assert(sizeof(SystemUpdateTaskId) == sizeof(::NimSystemUpdateTaskId));
|
||||||
|
|
||||||
|
s32 count;
|
||||||
|
R_ABORT_UNLESS(nimListSystemUpdateTask(std::addressof(count), reinterpret_cast<::NimSystemUpdateTaskId *>(out_list), out_list_size));
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue