mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 20:31:14 +00:00
strat: build sysmodules with -Wextra/-Werror
This commit is contained in:
parent
e8f1efd01b
commit
6a53726833
61 changed files with 433 additions and 217 deletions
|
@ -16,7 +16,7 @@ include $(DEVKITPRO)/libnx/switch_rules
|
||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
export DEFINES = $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_STRATOSPHERE -D_GNU_SOURCE
|
export DEFINES = $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_STRATOSPHERE -D_GNU_SOURCE
|
||||||
export SETTINGS = $(ATMOSPHERE_SETTINGS) -O2
|
export SETTINGS = $(ATMOSPHERE_SETTINGS) -O2 -Wextra -Werror -Wno-missing-field-initializers
|
||||||
export CFLAGS = $(ATMOSPHERE_CFLAGS) $(SETTINGS) $(DEFINES) $(INCLUDE)
|
export CFLAGS = $(ATMOSPHERE_CFLAGS) $(SETTINGS) $(DEFINES) $(INCLUDE)
|
||||||
export CXXFLAGS = $(CFLAGS) $(ATMOSPHERE_CXXFLAGS)
|
export CXXFLAGS = $(CFLAGS) $(ATMOSPHERE_CXXFLAGS)
|
||||||
export ASFLAGS = $(ATMOSPHERE_ASFLAGS) $(SETTINGS) $(DEFINES)
|
export ASFLAGS = $(ATMOSPHERE_ASFLAGS) $(SETTINGS) $(DEFINES)
|
||||||
|
|
|
@ -132,7 +132,7 @@ namespace ams::fs::impl {
|
||||||
|
|
||||||
/* Access log invocation lambdas. */
|
/* Access log invocation lambdas. */
|
||||||
#define AMS_FS_IMPL_ACCESS_LOG_IMPL(__EXPR__, __HANDLE__, __ENABLED__, __NAME__, ...) \
|
#define AMS_FS_IMPL_ACCESS_LOG_IMPL(__EXPR__, __HANDLE__, __ENABLED__, __NAME__, ...) \
|
||||||
[&](const char *name) { \
|
[&](const char *name) -> Result { \
|
||||||
if (!(__ENABLED__)) { \
|
if (!(__ENABLED__)) { \
|
||||||
return (__EXPR__); \
|
return (__EXPR__); \
|
||||||
} else { \
|
} else { \
|
||||||
|
@ -145,7 +145,7 @@ namespace ams::fs::impl {
|
||||||
}(__NAME__)
|
}(__NAME__)
|
||||||
|
|
||||||
#define AMS_FS_IMPL_ACCESS_LOG_WITH_PRIORITY_IMPL(__EXPR__, __PRIORITY__, __HANDLE__, __ENABLED__, __NAME__, ...) \
|
#define AMS_FS_IMPL_ACCESS_LOG_WITH_PRIORITY_IMPL(__EXPR__, __PRIORITY__, __HANDLE__, __ENABLED__, __NAME__, ...) \
|
||||||
[&](const char *name) { \
|
[&](const char *name) -> Result { \
|
||||||
if (!(__ENABLED__)) { \
|
if (!(__ENABLED__)) { \
|
||||||
return (__EXPR__); \
|
return (__EXPR__); \
|
||||||
} else { \
|
} else { \
|
||||||
|
@ -158,7 +158,7 @@ namespace ams::fs::impl {
|
||||||
}(__NAME__)
|
}(__NAME__)
|
||||||
|
|
||||||
#define AMS_FS_IMPL_ACCESS_LOG_EXPLICIT_IMPL(__RESULT__, __START__, __END__, __HANDLE__, __ENABLED__, __NAME__, ...) \
|
#define AMS_FS_IMPL_ACCESS_LOG_EXPLICIT_IMPL(__RESULT__, __START__, __END__, __HANDLE__, __ENABLED__, __NAME__, ...) \
|
||||||
[&](const char *name) { \
|
[&](const char *name) -> Result { \
|
||||||
if (!(__ENABLED__)) { \
|
if (!(__ENABLED__)) { \
|
||||||
return __RESULT__; \
|
return __RESULT__; \
|
||||||
} else { \
|
} else { \
|
||||||
|
@ -169,7 +169,7 @@ namespace ams::fs::impl {
|
||||||
}(__NAME__)
|
}(__NAME__)
|
||||||
|
|
||||||
#define AMS_FS_IMPL_ACCESS_LOG_UNLESS_R_SUCCEEDED_IMPL(__EXPR__, __ENABLED__, __NAME__, ...) \
|
#define AMS_FS_IMPL_ACCESS_LOG_UNLESS_R_SUCCEEDED_IMPL(__EXPR__, __ENABLED__, __NAME__, ...) \
|
||||||
[&](const char *name) { \
|
[&](const char *name) -> Result { \
|
||||||
if (!(__ENABLED__)) { \
|
if (!(__ENABLED__)) { \
|
||||||
return (__EXPR__); \
|
return (__EXPR__); \
|
||||||
} else { \
|
} else { \
|
||||||
|
|
|
@ -244,22 +244,22 @@ namespace ams::fs {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
Result CommitImpl(const char *path, const char *func_name) {
|
Result CommitImpl(const char *mount_name, const char *func_name) {
|
||||||
impl::FileSystemAccessor *accessor;
|
impl::FileSystemAccessor *accessor{};
|
||||||
AMS_FS_R_TRY(AMS_FS_IMPL_ACCESS_LOG_UNLESS_R_SUCCEEDED(impl::Find(std::addressof(accessor), path), AMS_FS_IMPL_ACCESS_LOG_FORMAT_PATH, path));
|
AMS_FS_R_TRY(AMS_FS_IMPL_ACCESS_LOG_UNLESS_R_SUCCEEDED(impl::Find(std::addressof(accessor), mount_name), AMS_FS_IMPL_ACCESS_LOG_FORMAT_MOUNT, mount_name));
|
||||||
|
|
||||||
AMS_FS_R_TRY(AMS_FS_IMPL_ACCESS_LOG_FILESYSTEM_WITH_NAME(accessor->Commit(), nullptr, accessor, func_name, AMS_FS_IMPL_ACCESS_LOG_FORMAT_MOUNT, path));
|
AMS_FS_R_TRY(AMS_FS_IMPL_ACCESS_LOG_FILESYSTEM_WITH_NAME(accessor->Commit(), nullptr, accessor, func_name, AMS_FS_IMPL_ACCESS_LOG_FORMAT_MOUNT, mount_name));
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result Commit(const char *path) {
|
Result Commit(const char *mount_name) {
|
||||||
return CommitImpl(path, AMS_CURRENT_FUNCTION_NAME);
|
return CommitImpl(mount_name, AMS_CURRENT_FUNCTION_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result CommitSaveData(const char *path) {
|
Result CommitSaveData(const char *mount_name) {
|
||||||
return CommitImpl(path, AMS_CURRENT_FUNCTION_NAME);
|
return CommitImpl(mount_name, AMS_CURRENT_FUNCTION_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace ams::fs::impl {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result Find(FileSystemAccessor **out, const char *name) {
|
Result Find(FileSystemAccessor **out, const char *name) {
|
||||||
return g_mount_table.Find(out, name);
|
return g_mount_table.Find(out, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unregister(const char *name) {
|
void Unregister(const char *name) {
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace ams::htc::server {
|
||||||
|
|
||||||
Result HtcServiceObject::GetEnvironmentVariable(sf::Out<s32> out_size, const sf::OutBuffer &out, const sf::InBuffer &name) {
|
Result HtcServiceObject::GetEnvironmentVariable(sf::Out<s32> out_size, const sf::OutBuffer &out, const sf::InBuffer &name) {
|
||||||
/* Get the variable. */
|
/* Get the variable. */
|
||||||
size_t var_size;
|
size_t var_size = std::numeric_limits<size_t>::max();
|
||||||
R_TRY(m_misc_impl.GetEnvironmentVariable(std::addressof(var_size), reinterpret_cast<char *>(out.GetPointer()), out.GetSize(), reinterpret_cast<const char *>(name.GetPointer()), name.GetSize()));
|
R_TRY(m_misc_impl.GetEnvironmentVariable(std::addressof(var_size), reinterpret_cast<char *>(out.GetPointer()), out.GetSize(), reinterpret_cast<const char *>(name.GetPointer()), name.GetSize()));
|
||||||
|
|
||||||
/* Check the output size. */
|
/* Check the output size. */
|
||||||
|
@ -44,7 +44,7 @@ namespace ams::htc::server {
|
||||||
|
|
||||||
Result HtcServiceObject::GetEnvironmentVariableLength(sf::Out<s32> out_size, const sf::InBuffer &name) {
|
Result HtcServiceObject::GetEnvironmentVariableLength(sf::Out<s32> out_size, const sf::InBuffer &name) {
|
||||||
/* Get the variable. */
|
/* Get the variable. */
|
||||||
size_t var_size;
|
size_t var_size = std::numeric_limits<size_t>::max();
|
||||||
R_TRY(m_misc_impl.GetEnvironmentVariableLength(std::addressof(var_size), reinterpret_cast<const char *>(name.GetPointer()), name.GetSize()));
|
R_TRY(m_misc_impl.GetEnvironmentVariableLength(std::addressof(var_size), reinterpret_cast<const char *>(name.GetPointer()), name.GetSize()));
|
||||||
|
|
||||||
/* Check the output size. */
|
/* Check the output size. */
|
||||||
|
|
|
@ -94,8 +94,20 @@ namespace ams::htc::server::rpc {
|
||||||
Result ReceiveBody(char *dst, size_t size);
|
Result ReceiveBody(char *dst, size_t size);
|
||||||
Result SendRequest(const char *src, size_t size);
|
Result SendRequest(const char *src, size_t size);
|
||||||
private:
|
private:
|
||||||
template<typename T, size_t... Ix> requires IsRpcTask<T>
|
s32 GetTaskHandle(u32 task_id);
|
||||||
ALWAYS_INLINE Result BeginImpl(std::index_sequence<Ix...>, u32 *out_task_id, RpcTaskArgumentType<T, Ix>... args) {
|
public:
|
||||||
|
void Wait(u32 task_id) {
|
||||||
|
os::WaitEvent(m_task_table.Get<Task>(task_id)->GetEvent());
|
||||||
|
}
|
||||||
|
|
||||||
|
os::NativeHandle DetachReadableHandle(u32 task_id) {
|
||||||
|
return os::DetachReadableHandleOfSystemEvent(m_task_table.Get<Task>(task_id)->GetSystemEvent());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CancelBySocket(s32 handle);
|
||||||
|
|
||||||
|
template<typename T, typename... Args> requires (IsRpcTask<T> && sizeof...(Args) == std::tuple_size<RpcTaskArgumentsType<T>>::value)
|
||||||
|
Result Begin(u32 *out_task_id, Args &&... args) {
|
||||||
/* Lock ourselves. */
|
/* Lock ourselves. */
|
||||||
std::scoped_lock lk(m_mutex);
|
std::scoped_lock lk(m_mutex);
|
||||||
|
|
||||||
|
@ -117,7 +129,7 @@ namespace ams::htc::server::rpc {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Set the task arguments. */
|
/* Set the task arguments. */
|
||||||
R_TRY(task->SetArguments(args...));
|
R_TRY(task->SetArguments(std::forward<Args>(args)...));
|
||||||
|
|
||||||
/* Clear the task's events. */
|
/* Clear the task's events. */
|
||||||
os::ClearEvent(std::addressof(m_receive_buffer_available_events[task_id]));
|
os::ClearEvent(std::addressof(m_receive_buffer_available_events[task_id]));
|
||||||
|
@ -138,8 +150,8 @@ namespace ams::htc::server::rpc {
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, size_t... Ix> requires IsRpcTask<T>
|
template<typename T, typename... Args> requires (IsRpcTask<T> && sizeof...(Args) == std::tuple_size<RpcTaskResultsType<T>>::value)
|
||||||
ALWAYS_INLINE Result GetResultImpl(std::index_sequence<Ix...>, u32 task_id, RpcTaskResultType<T, Ix>... args) {
|
Result GetResult(u32 task_id, Args &&... args) {
|
||||||
/* Lock ourselves. */
|
/* Lock ourselves. */
|
||||||
std::scoped_lock lk(m_mutex);
|
std::scoped_lock lk(m_mutex);
|
||||||
|
|
||||||
|
@ -151,13 +163,13 @@ namespace ams::htc::server::rpc {
|
||||||
R_UNLESS(task->GetTaskState() == RpcTaskState::Completed, htc::ResultTaskNotCompleted());
|
R_UNLESS(task->GetTaskState() == RpcTaskState::Completed, htc::ResultTaskNotCompleted());
|
||||||
|
|
||||||
/* Get the task's result. */
|
/* Get the task's result. */
|
||||||
R_TRY(task->GetResult(args...));
|
R_TRY(task->GetResult(std::forward<Args>(args)...));
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, size_t... Ix> requires IsRpcTask<T>
|
template<typename T, typename... Args> requires (IsRpcTask<T> && sizeof...(Args) == std::tuple_size<RpcTaskResultsType<T>>::value)
|
||||||
ALWAYS_INLINE Result EndImpl(std::index_sequence<Ix...>, u32 task_id, RpcTaskResultType<T, Ix>... args) {
|
Result End(u32 task_id, Args &&... args) {
|
||||||
/* Lock ourselves. */
|
/* Lock ourselves. */
|
||||||
std::scoped_lock lk(m_mutex);
|
std::scoped_lock lk(m_mutex);
|
||||||
|
|
||||||
|
@ -188,38 +200,11 @@ namespace ams::htc::server::rpc {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the task's result. */
|
/* Get the task's result. */
|
||||||
R_TRY(task->GetResult(args...));
|
R_TRY(task->GetResult(std::forward<Args>(args)...));
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 GetTaskHandle(u32 task_id);
|
|
||||||
public:
|
|
||||||
void Wait(u32 task_id) {
|
|
||||||
os::WaitEvent(m_task_table.Get<Task>(task_id)->GetEvent());
|
|
||||||
}
|
|
||||||
|
|
||||||
os::NativeHandle DetachReadableHandle(u32 task_id) {
|
|
||||||
return os::DetachReadableHandleOfSystemEvent(m_task_table.Get<Task>(task_id)->GetSystemEvent());
|
|
||||||
}
|
|
||||||
|
|
||||||
void CancelBySocket(s32 handle);
|
|
||||||
|
|
||||||
template<typename T, typename... Args> requires (IsRpcTask<T> && sizeof...(Args) == std::tuple_size<RpcTaskArgumentsType<T>>::value)
|
|
||||||
Result Begin(u32 *out_task_id, Args &&... args) {
|
|
||||||
return this->BeginImpl<T>(std::make_index_sequence<std::tuple_size<RpcTaskArgumentsType<T>>::value>(), out_task_id, std::forward<Args>(args)...);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T, typename... Args> requires (IsRpcTask<T> && sizeof...(Args) == std::tuple_size<RpcTaskResultsType<T>>::value)
|
|
||||||
Result GetResult(u32 task_id, Args &&... args) {
|
|
||||||
return this->GetResultImpl<T>(std::make_index_sequence<std::tuple_size<RpcTaskResultsType<T>>::value>(), task_id, std::forward<Args>(args)...);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T, typename... Args> requires (IsRpcTask<T> && sizeof...(Args) == std::tuple_size<RpcTaskResultsType<T>>::value)
|
|
||||||
Result End(u32 task_id, Args &&... args) {
|
|
||||||
return this->EndImpl<T>(std::make_index_sequence<std::tuple_size<RpcTaskResultsType<T>>::value>(), task_id, std::forward<Args>(args)...);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T> requires IsRpcTask<T>
|
template<typename T> requires IsRpcTask<T>
|
||||||
Result VerifyTaskIdWithHandle(u32 task_id, s32 handle) {
|
Result VerifyTaskIdWithHandle(u32 task_id, s32 handle) {
|
||||||
/* Lock ourselves. */
|
/* Lock ourselves. */
|
||||||
|
|
|
@ -159,20 +159,22 @@ namespace ams::htcs::impl {
|
||||||
Result HtcsManagerImpl::StartSelect(u32 *out_task_id, os::NativeHandle *out_handle, Span<const int> read_handles, Span<const int> write_handles, Span<const int> exception_handles, s64 tv_sec, s64 tv_usec) {
|
Result HtcsManagerImpl::StartSelect(u32 *out_task_id, os::NativeHandle *out_handle, Span<const int> read_handles, Span<const int> write_handles, Span<const int> exception_handles, s64 tv_sec, s64 tv_usec) {
|
||||||
/* Start the select. */
|
/* Start the select. */
|
||||||
u32 task_id;
|
u32 task_id;
|
||||||
os::NativeHandle handle;
|
os::NativeHandle handle = os::InvalidNativeHandle;
|
||||||
const Result result = m_service.SelectStart(std::addressof(task_id), std::addressof(handle), read_handles, write_handles, exception_handles, tv_sec, tv_usec);
|
const Result result = m_service.SelectStart(std::addressof(task_id), std::addressof(handle), read_handles, write_handles, exception_handles, tv_sec, tv_usec);
|
||||||
|
|
||||||
/* Ensure our state ends up clean. */
|
/* Ensure our state ends up clean. */
|
||||||
if (htcs::ResultCancelled::Includes(result)) {
|
if (htcs::ResultCancelled::Includes(result)) {
|
||||||
os::SystemEventType event;
|
|
||||||
os::AttachReadableHandleToSystemEvent(std::addressof(event), handle, true, os::EventClearMode_ManualClear);
|
|
||||||
|
|
||||||
s32 err;
|
s32 err;
|
||||||
bool empty;
|
bool empty;
|
||||||
m_service.SelectEnd(std::addressof(err), std::addressof(empty), Span<int>{}, Span<int>{}, Span<int>{}, task_id);
|
m_service.SelectEnd(std::addressof(err), std::addressof(empty), Span<int>{}, Span<int>{}, Span<int>{}, task_id);
|
||||||
|
|
||||||
os::DestroySystemEvent(std::addressof(event));
|
if (handle != os::InvalidNativeHandle) {
|
||||||
} else {
|
os::SystemEventType event;
|
||||||
|
os::AttachReadableHandleToSystemEvent(std::addressof(event), handle, true, os::EventClearMode_ManualClear);
|
||||||
|
|
||||||
|
os::DestroySystemEvent(std::addressof(event));
|
||||||
|
}
|
||||||
|
} else if (R_SUCCEEDED(result)) {
|
||||||
*out_task_id = task_id;
|
*out_task_id = task_id;
|
||||||
*out_handle = handle;
|
*out_handle = handle;
|
||||||
}
|
}
|
||||||
|
|
|
@ -275,6 +275,7 @@ namespace ams::htcs::impl {
|
||||||
|
|
||||||
Result HtcsService::SendSmallResults(s32 *out_err, s64 *out_size, u32 task_id, s32 desc) {
|
Result HtcsService::SendSmallResults(s32 *out_err, s64 *out_size, u32 task_id, s32 desc) {
|
||||||
AMS_UNUSED(desc);
|
AMS_UNUSED(desc);
|
||||||
|
|
||||||
/* Finish the task. */
|
/* Finish the task. */
|
||||||
htcs::SocketError err;
|
htcs::SocketError err;
|
||||||
R_TRY(m_rpc_client->End<rpc::SendSmallTask>(task_id, std::addressof(err), out_size));
|
R_TRY(m_rpc_client->End<rpc::SendSmallTask>(task_id, std::addressof(err), out_size));
|
||||||
|
@ -387,13 +388,13 @@ namespace ams::htcs::impl {
|
||||||
u32 task_id;
|
u32 task_id;
|
||||||
R_TRY(m_rpc_client->Begin<rpc::SelectTask>(std::addressof(task_id), read_handles, write_handles, exception_handles, tv_sec, tv_usec));
|
R_TRY(m_rpc_client->Begin<rpc::SelectTask>(std::addressof(task_id), read_handles, write_handles, exception_handles, tv_sec, tv_usec));
|
||||||
|
|
||||||
/* Check that the task isn't cancelled. */
|
|
||||||
R_UNLESS(!m_rpc_client->IsCancelled<rpc::SelectTask>(task_id), htcs::ResultCancelled());
|
|
||||||
|
|
||||||
/* Detach the task. */
|
/* Detach the task. */
|
||||||
*out_task_id = task_id;
|
*out_task_id = task_id;
|
||||||
*out_handle = m_rpc_client->DetachReadableHandle(task_id);
|
*out_handle = m_rpc_client->DetachReadableHandle(task_id);
|
||||||
|
|
||||||
|
/* Check that the task isn't cancelled. */
|
||||||
|
R_UNLESS(!m_rpc_client->IsCancelled<rpc::SelectTask>(task_id), htcs::ResultCancelled());
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,7 @@ namespace ams::htcs::server {
|
||||||
auto *manager = impl::HtcsManagerHolder::GetHtcsManager();
|
auto *manager = impl::HtcsManagerHolder::GetHtcsManager();
|
||||||
|
|
||||||
/* Get the accept results. */
|
/* Get the accept results. */
|
||||||
s32 desc;
|
s32 desc = -1;
|
||||||
manager->AcceptResults(out_err.GetPointer(), std::addressof(desc), out_address.GetPointer(), task_id, m_desc);
|
manager->AcceptResults(out_err.GetPointer(), std::addressof(desc), out_address.GetPointer(), task_id, m_desc);
|
||||||
|
|
||||||
/* If an error occurred, we're done. */
|
/* If an error occurred, we're done. */
|
||||||
|
|
|
@ -36,10 +36,12 @@ namespace ams::i2c {
|
||||||
auto &header1 = cmd_list[this->current_index++];
|
auto &header1 = cmd_list[this->current_index++];
|
||||||
|
|
||||||
/* Set the header. */
|
/* Set the header. */
|
||||||
|
header0 = {};
|
||||||
header0.Set<impl::CommonCommandFormat::CommandId>(impl::CommandId_Receive);
|
header0.Set<impl::CommonCommandFormat::CommandId>(impl::CommandId_Receive);
|
||||||
header0.Set<impl::ReceiveCommandFormat::StopCondition>((option & TransactionOption_StopCondition) != 0);
|
header0.Set<impl::ReceiveCommandFormat::StopCondition>((option & TransactionOption_StopCondition) != 0);
|
||||||
header0.Set<impl::ReceiveCommandFormat::StartCondition>((option & TransactionOption_StartCondition) != 0);
|
header0.Set<impl::ReceiveCommandFormat::StartCondition>((option & TransactionOption_StartCondition) != 0);
|
||||||
|
|
||||||
|
header1 = {};
|
||||||
header1.Set<impl::ReceiveCommandFormat::Size>(size);
|
header1.Set<impl::ReceiveCommandFormat::Size>(size);
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
|
@ -58,10 +60,12 @@ namespace ams::i2c {
|
||||||
auto &header1 = cmd_list[this->current_index++];
|
auto &header1 = cmd_list[this->current_index++];
|
||||||
|
|
||||||
/* Set the header. */
|
/* Set the header. */
|
||||||
|
header0 = {};
|
||||||
header0.Set<impl::CommonCommandFormat::CommandId>(impl::CommandId_Send);
|
header0.Set<impl::CommonCommandFormat::CommandId>(impl::CommandId_Send);
|
||||||
header0.Set<impl::SendCommandFormat::StopCondition>((option & TransactionOption_StopCondition) != 0);
|
header0.Set<impl::SendCommandFormat::StopCondition>((option & TransactionOption_StopCondition) != 0);
|
||||||
header0.Set<impl::SendCommandFormat::StartCondition>((option & TransactionOption_StartCondition) != 0);
|
header0.Set<impl::SendCommandFormat::StartCondition>((option & TransactionOption_StartCondition) != 0);
|
||||||
|
|
||||||
|
header1 = {};
|
||||||
header1.Set<impl::SendCommandFormat::Size>(size);
|
header1.Set<impl::SendCommandFormat::Size>(size);
|
||||||
|
|
||||||
/* Copy the data we're sending. */
|
/* Copy the data we're sending. */
|
||||||
|
@ -84,9 +88,11 @@ namespace ams::i2c {
|
||||||
auto &header1 = cmd_list[this->current_index++];
|
auto &header1 = cmd_list[this->current_index++];
|
||||||
|
|
||||||
/* Set the header. */
|
/* Set the header. */
|
||||||
|
header0 = {};
|
||||||
header0.Set<impl::CommonCommandFormat::CommandId>(impl::CommandId_Extension);
|
header0.Set<impl::CommonCommandFormat::CommandId>(impl::CommandId_Extension);
|
||||||
header0.Set<impl::CommonCommandFormat::SubCommandId>(impl::SubCommandId_Sleep);
|
header0.Set<impl::CommonCommandFormat::SubCommandId>(impl::SubCommandId_Sleep);
|
||||||
|
|
||||||
|
header1 = {};
|
||||||
header1.Set<impl::SleepCommandFormat::MicroSeconds>(us);
|
header1.Set<impl::SleepCommandFormat::MicroSeconds>(us);
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
|
|
|
@ -52,7 +52,7 @@ namespace ams::mem::impl::heap {
|
||||||
this->use_virtual_memory = false;
|
this->use_virtual_memory = false;
|
||||||
} else {
|
} else {
|
||||||
/* We were not provided with a region to use as backing. */
|
/* We were not provided with a region to use as backing. */
|
||||||
void *mem;
|
void *mem = nullptr;
|
||||||
if (auto err = AllocateVirtualMemory(std::addressof(mem), size); err != 0) {
|
if (auto err = AllocateVirtualMemory(std::addressof(mem), size); err != 0) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,33 +85,37 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +135,8 @@ namespace ams::lm::srv {
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Check thread priority. */
|
/* Check thread priority. */
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(LogManager, MainThread));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(LogManager, MainThread));
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,8 @@ namespace ams::tio {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeallocateForFs(void *p, size_t size) {
|
void DeallocateForFs(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
|
|
||||||
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,38 +119,44 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(TioServer, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(TioServer, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(TioServer, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(TioServer, Main));
|
||||||
|
|
|
@ -145,7 +145,7 @@ namespace ams::mitm {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialization implementation */
|
/* Initialization implementation */
|
||||||
void InitializeThreadFunc(void *arg) {
|
void InitializeThreadFunc(void *) {
|
||||||
/* Wait for the SD card to be ready. */
|
/* Wait for the SD card to be ready. */
|
||||||
cfg::WaitSdCardInitialized();
|
cfg::WaitSdCardInitialized();
|
||||||
|
|
||||||
|
|
|
@ -104,18 +104,23 @@ void __appExit(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void *__libnx_alloc(size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
||||||
|
AMS_UNUSED(alignment, size);
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *mem) {
|
||||||
|
AMS_UNUSED(mem);
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Register "ams" port, use up its session. */
|
/* Register "ams" port, use up its session. */
|
||||||
{
|
{
|
||||||
svc::Handle ams_port;
|
svc::Handle ams_port;
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace ams::mitm::bpc_ams {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MitmModule::ThreadFunction(void *arg) {
|
void MitmModule::ThreadFunction(void *) {
|
||||||
/* Create bpc:ams. */
|
/* Create bpc:ams. */
|
||||||
{
|
{
|
||||||
os::NativeHandle bpcams_h;
|
os::NativeHandle bpcams_h;
|
||||||
|
|
|
@ -56,7 +56,7 @@ namespace ams::mitm::bpc {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MitmModule::ThreadFunction(void *arg) {
|
void MitmModule::ThreadFunction(void *) {
|
||||||
/* Wait until initialization is complete. */
|
/* Wait until initialization is complete. */
|
||||||
mitm::WaitInitialized();
|
mitm::WaitInitialized();
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace ams::mitm::socket::resolver {
|
||||||
|
|
||||||
os::ThreadType g_extra_threads[NumExtraThreads];
|
os::ThreadType g_extra_threads[NumExtraThreads];
|
||||||
|
|
||||||
void LoopServerThread(void *arg) {
|
void LoopServerThread(void *) {
|
||||||
/* Loop forever, servicing our services. */
|
/* Loop forever, servicing our services. */
|
||||||
g_server_manager.LoopProcess();
|
g_server_manager.LoopProcess();
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ namespace ams::mitm::socket::resolver {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MitmModule::ThreadFunction(void *arg) {
|
void MitmModule::ThreadFunction(void *) {
|
||||||
/* Wait until initialization is complete. */
|
/* Wait until initialization is complete. */
|
||||||
mitm::WaitInitialized();
|
mitm::WaitInitialized();
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,8 @@ namespace ams::mitm::socket::resolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t SerializeRedirectedAddrInfo(u8 * const dst, size_t dst_size, const char *hostname, ams::socket::InAddrT redirect_addr, u16 redirect_port, const struct addrinfo *hint) {
|
ssize_t SerializeRedirectedAddrInfo(u8 * const dst, size_t dst_size, const char *hostname, ams::socket::InAddrT redirect_addr, u16 redirect_port, const struct addrinfo *hint) {
|
||||||
|
AMS_UNUSED(hostname);
|
||||||
|
|
||||||
struct addrinfo ai = {
|
struct addrinfo ai = {
|
||||||
.ai_flags = 0,
|
.ai_flags = 0,
|
||||||
.ai_family = AF_UNSPEC,
|
.ai_family = AF_UNSPEC,
|
||||||
|
@ -85,6 +87,8 @@ namespace ams::mitm::socket::resolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result ResolverImpl::GetHostByNameRequest(u32 cancel_handle, const sf::ClientProcessId &client_pid, bool use_nsd_resolve, const sf::InBuffer &name, sf::Out<u32> out_host_error, sf::Out<u32> out_errno, const sf::OutBuffer &out_hostent, sf::Out<u32> out_size) {
|
Result ResolverImpl::GetHostByNameRequest(u32 cancel_handle, const sf::ClientProcessId &client_pid, bool use_nsd_resolve, const sf::InBuffer &name, sf::Out<u32> out_host_error, sf::Out<u32> out_errno, const sf::OutBuffer &out_hostent, sf::Out<u32> out_size) {
|
||||||
|
AMS_UNUSED(cancel_handle, client_pid, use_nsd_resolve);
|
||||||
|
|
||||||
const char *hostname = reinterpret_cast<const char *>(name.GetPointer());
|
const char *hostname = reinterpret_cast<const char *>(name.GetPointer());
|
||||||
|
|
||||||
LogDebug("[%016lx]: GetHostByNameRequest(%s)\n", this->client_info.program_id.value, hostname);
|
LogDebug("[%016lx]: GetHostByNameRequest(%s)\n", this->client_info.program_id.value, hostname);
|
||||||
|
@ -105,6 +109,8 @@ namespace ams::mitm::socket::resolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result ResolverImpl::GetAddrInfoRequest(u32 cancel_handle, const sf::ClientProcessId &client_pid, bool use_nsd_resolve, const sf::InBuffer &node, const sf::InBuffer &srv, const sf::InBuffer &serialized_hint, const sf::OutBuffer &out_addrinfo, sf::Out<u32> out_errno, sf::Out<s32> out_retval, sf::Out<u32> out_size) {
|
Result ResolverImpl::GetAddrInfoRequest(u32 cancel_handle, const sf::ClientProcessId &client_pid, bool use_nsd_resolve, const sf::InBuffer &node, const sf::InBuffer &srv, const sf::InBuffer &serialized_hint, const sf::OutBuffer &out_addrinfo, sf::Out<u32> out_errno, sf::Out<s32> out_retval, sf::Out<u32> out_size) {
|
||||||
|
AMS_UNUSED(cancel_handle, client_pid, use_nsd_resolve);
|
||||||
|
|
||||||
const char *hostname = reinterpret_cast<const char *>(node.GetPointer());
|
const char *hostname = reinterpret_cast<const char *>(node.GetPointer());
|
||||||
|
|
||||||
LogDebug("[%016lx]: GetAddrInfoRequest(%s, %s)\n", this->client_info.program_id.value, reinterpret_cast<const char *>(node.GetPointer()), reinterpret_cast<const char *>(srv.GetPointer()));
|
LogDebug("[%016lx]: GetAddrInfoRequest(%s, %s)\n", this->client_info.program_id.value, reinterpret_cast<const char *>(node.GetPointer()), reinterpret_cast<const char *>(srv.GetPointer()));
|
||||||
|
@ -142,6 +148,8 @@ namespace ams::mitm::socket::resolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result ResolverImpl::GetHostByNameRequestWithOptions(const sf::ClientProcessId &client_pid, const sf::InAutoSelectBuffer &name, const sf::OutAutoSelectBuffer &out_hostent, sf::Out<u32> out_size, u32 options_version, const sf::InAutoSelectBuffer &options, u32 num_options, sf::Out<s32> out_host_error, sf::Out<s32> out_errno) {
|
Result ResolverImpl::GetHostByNameRequestWithOptions(const sf::ClientProcessId &client_pid, const sf::InAutoSelectBuffer &name, const sf::OutAutoSelectBuffer &out_hostent, sf::Out<u32> out_size, u32 options_version, const sf::InAutoSelectBuffer &options, u32 num_options, sf::Out<s32> out_host_error, sf::Out<s32> out_errno) {
|
||||||
|
AMS_UNUSED(client_pid, options_version, options, num_options);
|
||||||
|
|
||||||
const char *hostname = reinterpret_cast<const char *>(name.GetPointer());
|
const char *hostname = reinterpret_cast<const char *>(name.GetPointer());
|
||||||
|
|
||||||
LogDebug("[%016lx]: GetHostByNameRequestWithOptions(%s)\n", this->client_info.program_id.value, hostname);
|
LogDebug("[%016lx]: GetHostByNameRequestWithOptions(%s)\n", this->client_info.program_id.value, hostname);
|
||||||
|
@ -162,6 +170,8 @@ namespace ams::mitm::socket::resolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result ResolverImpl::GetAddrInfoRequestWithOptions(const sf::ClientProcessId &client_pid, const sf::InBuffer &node, const sf::InBuffer &srv, const sf::InBuffer &serialized_hint, const sf::OutAutoSelectBuffer &out_addrinfo, sf::Out<u32> out_size, sf::Out<s32> out_retval, u32 options_version, const sf::InAutoSelectBuffer &options, u32 num_options, sf::Out<s32> out_host_error, sf::Out<s32> out_errno) {
|
Result ResolverImpl::GetAddrInfoRequestWithOptions(const sf::ClientProcessId &client_pid, const sf::InBuffer &node, const sf::InBuffer &srv, const sf::InBuffer &serialized_hint, const sf::OutAutoSelectBuffer &out_addrinfo, sf::Out<u32> out_size, sf::Out<s32> out_retval, u32 options_version, const sf::InAutoSelectBuffer &options, u32 num_options, sf::Out<s32> out_host_error, sf::Out<s32> out_errno) {
|
||||||
|
AMS_UNUSED(client_pid, options_version, options, num_options);
|
||||||
|
|
||||||
const char *hostname = reinterpret_cast<const char *>(node.GetPointer());
|
const char *hostname = reinterpret_cast<const char *>(node.GetPointer());
|
||||||
|
|
||||||
LogDebug("[%016lx]: GetAddrInfoRequestWithOptions(%s, %s)\n", this->client_info.program_id.value, hostname, reinterpret_cast<const char *>(srv.GetPointer()));
|
LogDebug("[%016lx]: GetAddrInfoRequestWithOptions(%s, %s)\n", this->client_info.program_id.value, hostname, reinterpret_cast<const char *>(srv.GetPointer()));
|
||||||
|
|
|
@ -35,6 +35,7 @@ namespace ams::mitm::socket::resolver {
|
||||||
/* We will mitm:
|
/* We will mitm:
|
||||||
* - everything.
|
* - everything.
|
||||||
*/
|
*/
|
||||||
|
AMS_UNUSED(client_info);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -20,6 +20,9 @@
|
||||||
namespace ams::mitm::socket::resolver::serializer {
|
namespace ams::mitm::socket::resolver::serializer {
|
||||||
|
|
||||||
ssize_t DNSSerializer::CheckToBufferArguments(const u8 *dst, size_t dst_size, size_t required, int error_id) {
|
ssize_t DNSSerializer::CheckToBufferArguments(const u8 *dst, size_t dst_size, size_t required, int error_id) {
|
||||||
|
/* TODO: Logging, using error_id */
|
||||||
|
AMS_UNUSED(error_id);
|
||||||
|
|
||||||
if (dst == nullptr) {
|
if (dst == nullptr) {
|
||||||
return -1;
|
return -1;
|
||||||
} else if (dst_size < required) {
|
} else if (dst_size < required) {
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace ams::mitm::socket::resolver::serializer {
|
||||||
concept IsInAddr = std::same_as<T, ams::socket::InAddr> || std::same_as<T, struct in_addr>;
|
concept IsInAddr = std::same_as<T, ams::socket::InAddr> || std::same_as<T, struct in_addr>;
|
||||||
|
|
||||||
template<typename T> requires IsInAddr<T>
|
template<typename T> requires IsInAddr<T>
|
||||||
size_t SizeOfImpl(const T &in) {
|
size_t SizeOfImpl(const T &) {
|
||||||
return sizeof(u32);
|
return sizeof(u32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ namespace ams::mitm::fs {
|
||||||
return sf::CreateSharedObjectEmplaced<ams::fssrv::sf::IStorage, ams::fssrv::impl::StorageInterfaceAdapter>(std::forward<Arguments>(args)...);
|
return sf::CreateSharedObjectEmplaced<ams::fssrv::sf::IStorage, ams::fssrv::impl::StorageInterfaceAdapter>(std::forward<Arguments>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result OpenHblWebContentFileSystem(sf::Out<sf::SharedPointer<ams::fssrv::sf::IFileSystem>> &out, ncm::ProgramId client_program_id, ncm::ProgramId program_id, FsFileSystemType filesystem_type) {
|
Result OpenHblWebContentFileSystem(sf::Out<sf::SharedPointer<ams::fssrv::sf::IFileSystem>> &out, ncm::ProgramId program_id) {
|
||||||
/* Verify eligibility. */
|
/* Verify eligibility. */
|
||||||
bool is_hbl;
|
bool is_hbl;
|
||||||
R_UNLESS(R_SUCCEEDED(pm::info::IsHblProgramId(&is_hbl, program_id)), sm::mitm::ResultShouldForwardToSession());
|
R_UNLESS(R_SUCCEEDED(pm::info::IsHblProgramId(&is_hbl, program_id)), sm::mitm::ResultShouldForwardToSession());
|
||||||
|
@ -122,7 +122,7 @@ namespace ams::mitm::fs {
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
Result OpenProgramSpecificWebContentFileSystem(sf::Out<sf::SharedPointer<ams::fssrv::sf::IFileSystem>> &out, ncm::ProgramId client_program_id, ncm::ProgramId program_id, FsFileSystemType filesystem_type, Service *fwd, const fssrv::sf::Path *path, bool with_id) {
|
Result OpenProgramSpecificWebContentFileSystem(sf::Out<sf::SharedPointer<ams::fssrv::sf::IFileSystem>> &out, ncm::ProgramId program_id, FsFileSystemType filesystem_type, Service *fwd, const fssrv::sf::Path *path, bool with_id) {
|
||||||
/* Directory must exist. */
|
/* Directory must exist. */
|
||||||
{
|
{
|
||||||
FsDir d;
|
FsDir d;
|
||||||
|
@ -174,13 +174,13 @@ namespace ams::mitm::fs {
|
||||||
R_UNLESS(filesystem_type == FsFileSystemType_ContentManual, sm::mitm::ResultShouldForwardToSession());
|
R_UNLESS(filesystem_type == FsFileSystemType_ContentManual, sm::mitm::ResultShouldForwardToSession());
|
||||||
|
|
||||||
/* Try to mount the HBL web filesystem. If this succeeds then we're done. */
|
/* Try to mount the HBL web filesystem. If this succeeds then we're done. */
|
||||||
R_UNLESS(R_FAILED(OpenHblWebContentFileSystem(out, client_program_id, program_id, filesystem_type)), ResultSuccess());
|
R_SUCCEED_IF(R_SUCCEEDED(OpenHblWebContentFileSystem(out, program_id)));
|
||||||
|
|
||||||
/* If program specific override shouldn't be attempted, fall back. */
|
/* If program specific override shouldn't be attempted, fall back. */
|
||||||
R_UNLESS(try_program_specific, sm::mitm::ResultShouldForwardToSession());
|
R_UNLESS(try_program_specific, sm::mitm::ResultShouldForwardToSession());
|
||||||
|
|
||||||
/* If we're not opening a HBL filesystem, just try to open a generic one. */
|
/* If we're not opening a HBL filesystem, just try to open a generic one. */
|
||||||
return OpenProgramSpecificWebContentFileSystem(out, client_program_id, program_id, filesystem_type, fwd, path, with_id);
|
return OpenProgramSpecificWebContentFileSystem(out, program_id, filesystem_type, fwd, path, with_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace ams::mitm::fs {
|
||||||
os::MessageQueue g_req_mq(g_mq_storage + 0, 1);
|
os::MessageQueue g_req_mq(g_mq_storage + 0, 1);
|
||||||
os::MessageQueue g_ack_mq(g_mq_storage + 1, 1);
|
os::MessageQueue g_ack_mq(g_mq_storage + 1, 1);
|
||||||
|
|
||||||
void RomfsInitializerThreadFunction(void *arg) {
|
void RomfsInitializerThreadFunction(void *) {
|
||||||
while (true) {
|
while (true) {
|
||||||
uintptr_t storage_uptr = 0;
|
uintptr_t storage_uptr = 0;
|
||||||
g_req_mq.Receive(&storage_uptr);
|
g_req_mq.Receive(&storage_uptr);
|
||||||
|
@ -100,7 +100,6 @@ namespace ams::mitm::fs {
|
||||||
|
|
||||||
Result LayeredRomfsStorage::Read(s64 offset, void *buffer, size_t size) {
|
Result LayeredRomfsStorage::Read(s64 offset, void *buffer, size_t size) {
|
||||||
/* Check if we can succeed immediately. */
|
/* Check if we can succeed immediately. */
|
||||||
R_UNLESS(size >= 0, fs::ResultInvalidSize());
|
|
||||||
R_SUCCEED_IF(size == 0);
|
R_SUCCEED_IF(size == 0);
|
||||||
|
|
||||||
/* Ensure we're initialized. */
|
/* Ensure we're initialized. */
|
||||||
|
@ -112,8 +111,8 @@ namespace ams::mitm::fs {
|
||||||
const s64 virt_size = this->GetSize();
|
const s64 virt_size = this->GetSize();
|
||||||
R_UNLESS(offset >= 0, fs::ResultInvalidOffset());
|
R_UNLESS(offset >= 0, fs::ResultInvalidOffset());
|
||||||
R_UNLESS(offset < virt_size, fs::ResultInvalidOffset());
|
R_UNLESS(offset < virt_size, fs::ResultInvalidOffset());
|
||||||
if (size_t(virt_size - offset) < size) {
|
if (static_cast<size_t>(virt_size - offset) < size) {
|
||||||
size = size_t(virt_size - offset);
|
size = static_cast<size_t>(virt_size - offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Find first source info via binary search. */
|
/* Find first source info via binary search. */
|
||||||
|
@ -130,7 +129,7 @@ namespace ams::mitm::fs {
|
||||||
|
|
||||||
if (offset < cur_source.virtual_offset + cur_source.size) {
|
if (offset < cur_source.virtual_offset + cur_source.size) {
|
||||||
const s64 offset_within_source = offset - cur_source.virtual_offset;
|
const s64 offset_within_source = offset - cur_source.virtual_offset;
|
||||||
const size_t cur_read_size = std::min(size - read_so_far, size_t(cur_source.size - offset_within_source));
|
const size_t cur_read_size = std::min(size - read_so_far, static_cast<size_t>(cur_source.size - offset_within_source));
|
||||||
switch (cur_source.source_type) {
|
switch (cur_source.source_type) {
|
||||||
case romfs::DataSourceType::Storage:
|
case romfs::DataSourceType::Storage:
|
||||||
R_ABORT_UNLESS(this->storage_romfs->Read(cur_source.storage_source_info.offset + offset_within_source, cur_dst, cur_read_size));
|
R_ABORT_UNLESS(this->storage_romfs->Read(cur_source.storage_source_info.offset + offset_within_source, cur_dst, cur_read_size));
|
||||||
|
@ -167,7 +166,7 @@ namespace ams::mitm::fs {
|
||||||
} else {
|
} else {
|
||||||
/* Explicitly handle padding. */
|
/* Explicitly handle padding. */
|
||||||
const auto &next_source = *(++it);
|
const auto &next_source = *(++it);
|
||||||
const size_t padding_size = size_t(next_source.virtual_offset - offset);
|
const size_t padding_size = static_cast<size_t>(next_source.virtual_offset - offset);
|
||||||
|
|
||||||
std::memset(cur_dst, 0, padding_size);
|
std::memset(cur_dst, 0, padding_size);
|
||||||
read_so_far += padding_size;
|
read_so_far += padding_size;
|
||||||
|
@ -194,6 +193,8 @@ namespace ams::mitm::fs {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result LayeredRomfsStorage::OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) {
|
Result LayeredRomfsStorage::OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) {
|
||||||
|
AMS_UNUSED(offset, src, src_size);
|
||||||
|
|
||||||
switch (op_id) {
|
switch (op_id) {
|
||||||
case OperationId::Invalidate:
|
case OperationId::Invalidate:
|
||||||
case OperationId::QueryRange:
|
case OperationId::QueryRange:
|
||||||
|
|
|
@ -52,11 +52,13 @@ namespace ams::mitm::fs {
|
||||||
|
|
||||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
||||||
/* TODO: Better result code? */
|
/* TODO: Better result code? */
|
||||||
|
AMS_UNUSED(offset, buffer, size);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result SetSize(s64 size) override {
|
virtual Result SetSize(s64 size) override {
|
||||||
/* TODO: Better result code? */
|
/* TODO: Better result code? */
|
||||||
|
AMS_UNUSED(size);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace ams::mitm::fs {
|
||||||
|
|
||||||
os::ThreadType g_extra_threads[NumExtraThreads];
|
os::ThreadType g_extra_threads[NumExtraThreads];
|
||||||
|
|
||||||
void LoopServerThread(void *arg) {
|
void LoopServerThread(void *) {
|
||||||
/* Loop forever, servicing our services. */
|
/* Loop forever, servicing our services. */
|
||||||
g_server_manager.LoopProcess();
|
g_server_manager.LoopProcess();
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ namespace ams::mitm::fs {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MitmModule::ThreadFunction(void *arg) {
|
void MitmModule::ThreadFunction(void *) {
|
||||||
/* Create fs mitm. */
|
/* Create fs mitm. */
|
||||||
R_ABORT_UNLESS((g_server_manager.RegisterMitmServer<FsMitmService>(PortIndex_Mitm, MitmServiceName)));
|
R_ABORT_UNLESS((g_server_manager.RegisterMitmServer<FsMitmService>(PortIndex_Mitm, MitmServiceName)));
|
||||||
|
|
||||||
|
|
|
@ -28,45 +28,52 @@ namespace ams::mitm::fs {
|
||||||
virtual ~ReadOnlyLayeredFileSystem() { /* ... */ }
|
virtual ~ReadOnlyLayeredFileSystem() { /* ... */ }
|
||||||
private:
|
private:
|
||||||
virtual Result DoCreateFile(const char *path, s64 size, int flags) override final {
|
virtual Result DoCreateFile(const char *path, s64 size, int flags) override final {
|
||||||
|
AMS_UNUSED(path, size, flags);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoDeleteFile(const char *path) override final {
|
virtual Result DoDeleteFile(const char *path) override final {
|
||||||
|
AMS_UNUSED(path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoCreateDirectory(const char *path) override final {
|
virtual Result DoCreateDirectory(const char *path) override final {
|
||||||
|
AMS_UNUSED(path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoDeleteDirectory(const char *path) override final {
|
virtual Result DoDeleteDirectory(const char *path) override final {
|
||||||
|
AMS_UNUSED(path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoDeleteDirectoryRecursively(const char *path) override final {
|
virtual Result DoDeleteDirectoryRecursively(const char *path) override final {
|
||||||
|
AMS_UNUSED(path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoRenameFile(const char *old_path, const char *new_path) override final {
|
virtual Result DoRenameFile(const char *old_path, const char *new_path) override final {
|
||||||
|
AMS_UNUSED(old_path, new_path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoRenameDirectory(const char *old_path, const char *new_path) override final {
|
virtual Result DoRenameDirectory(const char *old_path, const char *new_path) override final {
|
||||||
|
AMS_UNUSED(old_path, new_path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoGetEntryType(ams::fs::DirectoryEntryType *out, const char *path) override final {
|
virtual Result DoGetEntryType(ams::fs::DirectoryEntryType *out, const char *path) override final {
|
||||||
R_UNLESS(R_FAILED(this->fs_1.GetEntryType(out, path)), ResultSuccess());
|
R_SUCCEED_IF(R_SUCCEEDED(this->fs_1.GetEntryType(out, path)));
|
||||||
return this->fs_2.GetEntryType(out, path);
|
return this->fs_2.GetEntryType(out, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoOpenFile(std::unique_ptr<ams::fs::fsa::IFile> *out_file, const char *path, ams::fs::OpenMode mode) override final {
|
virtual Result DoOpenFile(std::unique_ptr<ams::fs::fsa::IFile> *out_file, const char *path, ams::fs::OpenMode mode) override final {
|
||||||
R_UNLESS(R_FAILED(this->fs_1.OpenFile(out_file, path, mode)), ResultSuccess());
|
R_SUCCEED_IF(R_SUCCEEDED(this->fs_1.OpenFile(out_file, path, mode)));
|
||||||
return this->fs_2.OpenFile(out_file, path, mode);
|
return this->fs_2.OpenFile(out_file, path, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoOpenDirectory(std::unique_ptr<ams::fs::fsa::IDirectory> *out_dir, const char *path, ams::fs::OpenDirectoryMode mode) override final {
|
virtual Result DoOpenDirectory(std::unique_ptr<ams::fs::fsa::IDirectory> *out_dir, const char *path, ams::fs::OpenDirectoryMode mode) override final {
|
||||||
R_UNLESS(R_FAILED(this->fs_1.OpenDirectory(out_dir, path, mode)), ResultSuccess());
|
R_SUCCEED_IF(R_SUCCEEDED(this->fs_1.OpenDirectory(out_dir, path, mode)));
|
||||||
return this->fs_2.OpenDirectory(out_dir, path, mode);
|
return this->fs_2.OpenDirectory(out_dir, path, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,19 +82,22 @@ namespace ams::mitm::fs {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoGetFreeSpaceSize(s64 *out, const char *path) {
|
virtual Result DoGetFreeSpaceSize(s64 *out, const char *path) {
|
||||||
|
AMS_UNUSED(out, path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoGetTotalSpaceSize(s64 *out, const char *path) {
|
virtual Result DoGetTotalSpaceSize(s64 *out, const char *path) {
|
||||||
|
AMS_UNUSED(out, path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoCleanDirectoryRecursively(const char *path) {
|
virtual Result DoCleanDirectoryRecursively(const char *path) {
|
||||||
|
AMS_UNUSED(path);
|
||||||
return ams::fs::ResultUnsupportedOperation();
|
return ams::fs::ResultUnsupportedOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Result DoGetFileTimeStampRaw(ams::fs::FileTimeStampRaw *out, const char *path) {
|
virtual Result DoGetFileTimeStampRaw(ams::fs::FileTimeStampRaw *out, const char *path) {
|
||||||
R_UNLESS(R_FAILED(this->fs_1.GetFileTimeStampRaw(out, path)), ResultSuccess());
|
R_SUCCEED_IF(R_SUCCEEDED(this->fs_1.GetFileTimeStampRaw(out, path)));
|
||||||
return this->fs_2.GetFileTimeStampRaw(out, path);
|
return this->fs_2.GetFileTimeStampRaw(out, path);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace ams::mitm::ns {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MitmModule::ThreadFunction(void *arg) {
|
void MitmModule::ThreadFunction(void *) {
|
||||||
/* Wait until initialization is complete. */
|
/* Wait until initialization is complete. */
|
||||||
mitm::WaitInitialized();
|
mitm::WaitInitialized();
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace ams::mitm::settings {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MitmModule::ThreadFunction(void *arg) {
|
void MitmModule::ThreadFunction(void *) {
|
||||||
/* Wait until initialization is complete. */
|
/* Wait until initialization is complete. */
|
||||||
mitm::WaitInitialized();
|
mitm::WaitInitialized();
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ namespace ams::mitm::settings {
|
||||||
/* We will mitm:
|
/* We will mitm:
|
||||||
* - everything, because we want to intercept all settings requests.
|
* - everything, because we want to intercept all settings requests.
|
||||||
*/
|
*/
|
||||||
|
AMS_UNUSED(client_info);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace ams::mitm::sysupdater {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MitmModule::ThreadFunction(void *arg) {
|
void MitmModule::ThreadFunction(void *) {
|
||||||
/* Wait until initialization is complete. */
|
/* Wait until initialization is complete. */
|
||||||
mitm::WaitInitialized();
|
mitm::WaitInitialized();
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,8 @@ namespace ams {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetClockRate(const ClkRstDefinition &def, u32 hz) {
|
void SetClockRate(const ClkRstDefinition &def, u32 hz) {
|
||||||
|
AMS_UNUSED(hz);
|
||||||
|
|
||||||
/* Enable clock. */
|
/* Enable clock. */
|
||||||
reg::ReadWrite(g_clkrst_registers + def.clk_en_ofs, 1u << def.clk_en_index, 1u << def.clk_en_index);
|
reg::ReadWrite(g_clkrst_registers + def.clk_en_ofs, 1u << def.clk_en_index, 1u << def.clk_en_index);
|
||||||
|
|
||||||
|
@ -166,6 +168,7 @@ namespace ams {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetClockDisabled(ClkRstSession *session) {
|
void SetClockDisabled(ClkRstSession *session) {
|
||||||
|
AMS_UNUSED(session);
|
||||||
AMS_ABORT("SetClockDisabled not implemented for boot system module");
|
AMS_ABORT("SetClockDisabled not implemented for boot system module");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,8 @@ namespace ams::boot {
|
||||||
bool present;
|
bool present;
|
||||||
R_TRY(powctl::IsBatteryPresent(std::addressof(present), this->battery_session));
|
R_TRY(powctl::IsBatteryPresent(std::addressof(present), this->battery_session));
|
||||||
|
|
||||||
return present == false;
|
*out = !present;
|
||||||
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
Result GetSocRep(float *out) {
|
Result GetSocRep(float *out) {
|
||||||
|
|
|
@ -143,25 +143,25 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,6 +177,10 @@ void operator delete(void *p) {
|
||||||
return Deallocate(p, 0);
|
return Deallocate(p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator delete(void *p, size_t size) {
|
||||||
|
return Deallocate(p, size);
|
||||||
|
}
|
||||||
|
|
||||||
void *operator new[](size_t size) {
|
void *operator new[](size_t size) {
|
||||||
return Allocate(size);
|
return Allocate(size);
|
||||||
}
|
}
|
||||||
|
@ -189,8 +193,14 @@ void operator delete[](void *p) {
|
||||||
return Deallocate(p, 0);
|
return Deallocate(p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator delete[](void *p, size_t size) {
|
||||||
|
return Deallocate(p, size);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(boot, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(boot, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(boot, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(boot, Main));
|
||||||
|
|
|
@ -68,6 +68,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeallocateForFs(void *p, size_t size) {
|
void DeallocateForFs(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,38 +112,44 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(boot2, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(boot2, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(boot2, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(boot2, Main));
|
||||||
|
|
|
@ -71,6 +71,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeallocateForFs(void *p, size_t size) {
|
void DeallocateForFs(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,33 +101,37 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,8 @@ namespace ams::cs {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Deallocate(void *p, size_t size) {
|
void Deallocate(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
|
|
||||||
std::scoped_lock lk(g_heap_mutex);
|
std::scoped_lock lk(g_heap_mutex);
|
||||||
lmem::FreeToExpHeap(g_heap_handle, p);
|
lmem::FreeToExpHeap(g_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
@ -131,33 +133,37 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,6 +184,8 @@ namespace ams::cs {
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
using namespace ams::cs;
|
using namespace ams::cs;
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
|
|
|
@ -389,6 +389,7 @@ namespace ams::dmnt {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* TODO aarch32 branch decoding */
|
/* TODO aarch32 branch decoding */
|
||||||
|
AMS_UNUSED(ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1096,6 +1096,7 @@ namespace ams::dmnt {
|
||||||
reply = true;
|
reply = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case svc::DebugEvent_ExitThread:
|
case svc::DebugEvent_ExitThread:
|
||||||
{
|
{
|
||||||
AMS_DMNT2_GDB_LOG_DEBUG("ExitThread %lx\n", thread_id);
|
AMS_DMNT2_GDB_LOG_DEBUG("ExitThread %lx\n", thread_id);
|
||||||
|
|
|
@ -91,6 +91,8 @@ namespace ams::dmnt {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result HardwareBreakPoint::Clear(DebugProcess *debug_process) {
|
Result HardwareBreakPoint::Clear(DebugProcess *debug_process) {
|
||||||
|
AMS_UNUSED(debug_process);
|
||||||
|
|
||||||
Result result = svc::ResultInvalidArgument();
|
Result result = svc::ResultInvalidArgument();
|
||||||
if (m_in_use) {
|
if (m_in_use) {
|
||||||
AMS_DMNT2_GDB_LOG_DEBUG("HardwareBreakPoint::Clear %p 0x%lx\n", this, m_address);
|
AMS_DMNT2_GDB_LOG_DEBUG("HardwareBreakPoint::Clear %p 0x%lx\n", this, m_address);
|
||||||
|
|
|
@ -93,6 +93,8 @@ namespace ams::dmnt {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result WatchPoint::Clear(DebugProcess *debug_process) {
|
Result WatchPoint::Clear(DebugProcess *debug_process) {
|
||||||
|
AMS_UNUSED(debug_process);
|
||||||
|
|
||||||
Result result = svc::ResultInvalidArgument();
|
Result result = svc::ResultInvalidArgument();
|
||||||
if (m_in_use) {
|
if (m_in_use) {
|
||||||
AMS_DMNT2_GDB_LOG_DEBUG("WatchPoint::Clear %p 0x%lx\n", this, m_address);
|
AMS_DMNT2_GDB_LOG_DEBUG("WatchPoint::Clear %p 0x%lx\n", this, m_address);
|
||||||
|
|
|
@ -95,38 +95,44 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* TODO ThreadName */
|
/* TODO ThreadName */
|
||||||
|
|
||||||
/* Initialize htcs. */
|
/* Initialize htcs. */
|
||||||
|
|
|
@ -81,6 +81,8 @@ namespace ams::dmnt::cheat::impl {
|
||||||
}
|
}
|
||||||
|
|
||||||
fs::WriteFile(this->debug_log_file, this->debug_log_offset, this->debug_log_format_buf, fmt_len, fs::WriteOption::Flush);
|
fs::WriteFile(this->debug_log_file, this->debug_log_offset, this->debug_log_format_buf, fmt_len, fs::WriteOption::Flush);
|
||||||
|
#else
|
||||||
|
AMS_UNUSED(format);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeallocateForFs(void *p, size_t size) {
|
void DeallocateForFs(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +127,7 @@ namespace {
|
||||||
|
|
||||||
constinit sf::UnmanagedServiceObject<dmnt::cheat::impl::ICheatInterface, dmnt::cheat::CheatService> g_cheat_service;
|
constinit sf::UnmanagedServiceObject<dmnt::cheat::impl::ICheatInterface, dmnt::cheat::CheatService> g_cheat_service;
|
||||||
|
|
||||||
void LoopServerThread(void *arg) {
|
void LoopServerThread(void *) {
|
||||||
g_server_manager.LoopProcess();
|
g_server_manager.LoopProcess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,40 +141,48 @@ namespace {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(dmnt, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(dmnt, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(dmnt, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(dmnt, Main));
|
||||||
|
|
|
@ -62,6 +62,7 @@ void __appExit(void) {
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,38 +115,44 @@ namespace ams::erpt {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(erpt, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(erpt, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(erpt, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(erpt, Main));
|
||||||
|
|
|
@ -143,6 +143,7 @@ namespace ams::fatal::srv {
|
||||||
if (request.meta.num_send_buffers != 1) {
|
if (request.meta.num_send_buffers != 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,7 @@ namespace ams::fatal {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeallocateForFs(void *p, size_t size) {
|
void DeallocateForFs(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
return lmem::FreeToExpHeap(g_fs_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,38 +163,44 @@ namespace {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Disable auto-abort in fs operations. */
|
/* Disable auto-abort in fs operations. */
|
||||||
fs::SetEnabledAutoAbort(false);
|
fs::SetEnabledAutoAbort(false);
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,8 @@ namespace ams::htc {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Deallocate(void *p, size_t size) {
|
void Deallocate(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
|
|
||||||
return lmem::FreeToExpHeap(g_heap_handle, p);
|
return lmem::FreeToExpHeap(g_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,48 +119,51 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *MallocForRapidJson(size_t size) {
|
void *MallocForRapidJson(size_t) {
|
||||||
AMS_ABORT("ams::MallocForRapidJson was called");
|
AMS_ABORT("ams::MallocForRapidJson was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *ReallocForRapidJson(void *ptr, size_t size) {
|
void *ReallocForRapidJson(void *, size_t) {
|
||||||
AMS_ABORT("ams::ReallocForRapidJson was called");
|
AMS_ABORT("ams::ReallocForRapidJson was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FreeForRapidJson(void *ptr) {
|
void FreeForRapidJson(void *ptr) {
|
||||||
if (ptr == nullptr) {
|
if (ptr != nullptr) {
|
||||||
return;
|
AMS_ABORT("ams::FreeForRapidJson was called");
|
||||||
}
|
}
|
||||||
AMS_ABORT("ams::FreeForRapidJson was called");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,15 +216,15 @@ namespace ams::htc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HtcIpcThreadFunction(void *arg) {
|
void HtcIpcThreadFunction(void *) {
|
||||||
htc::server::LoopHtcmiscServer();
|
htc::server::LoopHtcmiscServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HtcfsIpcThreadFunction(void *arg) {
|
void HtcfsIpcThreadFunction(void *) {
|
||||||
htcfs::LoopHipcServer();
|
htcfs::LoopHipcServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HtcsIpcThreadFunction(void *arg) {
|
void HtcsIpcThreadFunction(void *) {
|
||||||
htcs::server::LoopHipcServer();
|
htcs::server::LoopHipcServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,6 +249,8 @@ namespace ams::htclow::driver {
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(htc, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(htc, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(htc, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(htc, Main));
|
||||||
|
|
|
@ -67,6 +67,8 @@ void __appExit(void) {
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(jpegdec, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(jpegdec, Main));
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,12 @@ namespace ams::ldr {
|
||||||
R_TRY(ldr::GetProgramInfo(out, &status, loc));
|
R_TRY(ldr::GetProgramInfo(out, &status, loc));
|
||||||
|
|
||||||
if (loc.storage_id != static_cast<u8>(ncm::StorageId::None) && loc.program_id != out->program_id) {
|
if (loc.storage_id != static_cast<u8>(ncm::StorageId::None) && loc.program_id != out->program_id) {
|
||||||
char path[FS_MAX_PATH];
|
char path[fs::EntryNameLengthMax];
|
||||||
const ncm::ProgramLocation new_loc = ncm::ProgramLocation::Make(out->program_id, static_cast<ncm::StorageId>(loc.storage_id));
|
const ncm::ProgramLocation new_loc = ncm::ProgramLocation::Make(out->program_id, static_cast<ncm::StorageId>(loc.storage_id));
|
||||||
|
|
||||||
R_TRY(ResolveContentPath(path, loc));
|
R_TRY(ResolveContentPath(path, loc));
|
||||||
|
path[sizeof(path) - 1] = '\x00';
|
||||||
|
|
||||||
R_TRY(RedirectContentPath(path, new_loc));
|
R_TRY(RedirectContentPath(path, new_loc));
|
||||||
|
|
||||||
const auto arg_info = args::Get(loc.program_id);
|
const auto arg_info = args::Get(loc.program_id);
|
||||||
|
@ -59,13 +61,16 @@ namespace ams::ldr {
|
||||||
Result LoaderService::CreateProcess(sf::OutMoveHandle out, PinId id, u32 flags, sf::CopyHandle &&reslimit_h) {
|
Result LoaderService::CreateProcess(sf::OutMoveHandle out, PinId id, u32 flags, sf::CopyHandle &&reslimit_h) {
|
||||||
ncm::ProgramLocation loc;
|
ncm::ProgramLocation loc;
|
||||||
cfg::OverrideStatus override_status;
|
cfg::OverrideStatus override_status;
|
||||||
char path[FS_MAX_PATH];
|
char path[fs::EntryNameLengthMax];
|
||||||
|
|
||||||
/* Get location and override status. */
|
/* Get location and override status. */
|
||||||
R_TRY(ldr::ro::GetProgramLocationAndStatus(&loc, &override_status, id));
|
R_TRY(ldr::ro::GetProgramLocationAndStatus(&loc, &override_status, id));
|
||||||
|
|
||||||
if (loc.storage_id != static_cast<u8>(ncm::StorageId::None)) {
|
if (loc.storage_id != static_cast<u8>(ncm::StorageId::None)) {
|
||||||
R_TRY(ResolveContentPath(path, loc));
|
R_TRY(ResolveContentPath(path, loc));
|
||||||
|
path[sizeof(path) - 1] = '\x00';
|
||||||
|
} else {
|
||||||
|
path[0] = '\x00';
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the process. */
|
/* Create the process. */
|
||||||
|
|
|
@ -60,6 +60,7 @@ namespace ams::ldr {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Deallocate(void *p, size_t size) {
|
void Deallocate(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
return lmem::FreeToExpHeap(g_server_heap_handle, p);
|
return lmem::FreeToExpHeap(g_server_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,11 +160,11 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,20 +178,26 @@ void operator delete(void *p) {
|
||||||
return ldr::Deallocate(p, 0);
|
return ldr::Deallocate(p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *p, size_t size) {
|
||||||
|
return ldr::Deallocate(p, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Disable auto-abort in fs operations. */
|
/* Disable auto-abort in fs operations. */
|
||||||
fs::SetEnabledAutoAbort(false);
|
fs::SetEnabledAutoAbort(false);
|
||||||
|
|
||||||
|
|
|
@ -123,6 +123,8 @@ namespace ams::ldr {
|
||||||
R_UNLESS(entries[i].version <= version, ResultInvalidVersion());
|
R_UNLESS(entries[i].version <= version, ResultInvalidVersion());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
AMS_UNUSED(program_id, version);
|
||||||
#endif
|
#endif
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
@ -662,6 +664,7 @@ namespace ams::ldr {
|
||||||
|
|
||||||
{
|
{
|
||||||
/* Mount code. */
|
/* Mount code. */
|
||||||
|
AMS_UNUSED(path);
|
||||||
ScopedCodeMount mount(loc, override_status);
|
ScopedCodeMount mount(loc, override_status);
|
||||||
R_TRY(mount.GetResult());
|
R_TRY(mount.GetResult());
|
||||||
|
|
||||||
|
|
|
@ -103,25 +103,25 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +137,10 @@ void operator delete(void *p) {
|
||||||
return Deallocate(p, 0);
|
return Deallocate(p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator delete(void *p, size_t size) {
|
||||||
|
return Deallocate(p, size);
|
||||||
|
}
|
||||||
|
|
||||||
void *operator new[](size_t size) {
|
void *operator new[](size_t size) {
|
||||||
return Allocate(size);
|
return Allocate(size);
|
||||||
}
|
}
|
||||||
|
@ -149,6 +153,11 @@ void operator delete[](void *p) {
|
||||||
return Deallocate(p, 0);
|
return Deallocate(p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator delete[](void *p, size_t size) {
|
||||||
|
return Deallocate(p, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
struct ContentManagerServerOptions {
|
struct ContentManagerServerOptions {
|
||||||
|
@ -265,6 +274,8 @@ namespace {
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Disable auto-abort in fs operations. */
|
/* Disable auto-abort in fs operations. */
|
||||||
fs::SetEnabledAutoAbort(false);
|
fs::SetEnabledAutoAbort(false);
|
||||||
|
|
||||||
|
|
|
@ -87,11 +87,11 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,20 +105,26 @@ void operator delete(void *p) {
|
||||||
return pgl::srv::Deallocate(p, 0);
|
return pgl::srv::Deallocate(p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *p, size_t size) {
|
||||||
|
return pgl::srv::Deallocate(p, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Disable auto-abort in fs operations. */
|
/* Disable auto-abort in fs operations. */
|
||||||
fs::SetEnabledAutoAbort(false);
|
fs::SetEnabledAutoAbort(false);
|
||||||
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ namespace ams::pm::impl {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Process Tracking globals. */
|
/* Process Tracking globals. */
|
||||||
void ProcessTrackingMain(void *arg);
|
void ProcessTrackingMain(void *);
|
||||||
|
|
||||||
constinit os::ThreadType g_process_track_thread;
|
constinit os::ThreadType g_process_track_thread;
|
||||||
alignas(os::ThreadStackAlignment) constinit u8 g_process_track_thread_stack[16_KB];
|
alignas(os::ThreadStackAlignment) constinit u8 g_process_track_thread_stack[16_KB];
|
||||||
|
@ -154,7 +154,7 @@ namespace ams::pm::impl {
|
||||||
void OnProcessSignaled(ProcessListAccessor &list, ProcessInfo *process_info);
|
void OnProcessSignaled(ProcessListAccessor &list, ProcessInfo *process_info);
|
||||||
|
|
||||||
/* Helpers. */
|
/* Helpers. */
|
||||||
void ProcessTrackingMain(void *arg) {
|
void ProcessTrackingMain(void *) {
|
||||||
/* This is the main loop of the process tracking thread. */
|
/* This is the main loop of the process tracking thread. */
|
||||||
|
|
||||||
/* Setup multi wait/holders. */
|
/* Setup multi wait/holders. */
|
||||||
|
@ -552,6 +552,7 @@ namespace ams::pm::impl {
|
||||||
/* Information Getters. */
|
/* Information Getters. */
|
||||||
Result GetModuleIdList(u32 *out_count, u8 *out_buf, size_t max_out_count, u64 unused) {
|
Result GetModuleIdList(u32 *out_count, u8 *out_buf, size_t max_out_count, u64 unused) {
|
||||||
/* This function was always stubbed... */
|
/* This function was always stubbed... */
|
||||||
|
AMS_UNUSED(out_buf, max_out_count, unused);
|
||||||
*out_count = 0;
|
*out_count = 0;
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
@ -560,11 +561,19 @@ namespace ams::pm::impl {
|
||||||
ProcessListAccessor list(g_process_list);
|
ProcessListAccessor list(g_process_list);
|
||||||
|
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
for (auto &process : *list) {
|
|
||||||
if (process.HasExceptionWaitingAttach()) {
|
if (max_out_count > 0) {
|
||||||
out_process_ids[count++] = process.GetProcessId();
|
for (auto &process : *list) {
|
||||||
|
if (process.HasExceptionWaitingAttach()) {
|
||||||
|
out_process_ids[count++] = process.GetProcessId();
|
||||||
|
|
||||||
|
if (count >= max_out_count) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*out_count = static_cast<u32>(count);
|
*out_count = static_cast<u32>(count);
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,28 +218,46 @@ namespace {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
namespace ams {
|
||||||
|
|
||||||
|
void *Malloc(size_t) {
|
||||||
|
AMS_ABORT("ams::Malloc was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Free(void *) {
|
||||||
|
AMS_ABORT("ams::Free was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(pm, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(pm, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(pm, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(pm, Main));
|
||||||
|
|
|
@ -95,6 +95,8 @@ namespace ams::ro {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Deallocate(void *p, size_t size) {
|
void Deallocate(void *p, size_t size) {
|
||||||
|
AMS_UNUSED(size);
|
||||||
|
|
||||||
return lmem::FreeToExpHeap(g_server_heap_handle, p);
|
return lmem::FreeToExpHeap(g_server_heap_handle, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,38 +160,44 @@ void __appExit(void) {
|
||||||
|
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void *Malloc(size_t size) {
|
void *Malloc(size_t) {
|
||||||
AMS_ABORT("ams::Malloc was called");
|
AMS_ABORT("ams::Malloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Free(void *ptr) {
|
void Free(void *) {
|
||||||
AMS_ABORT("ams::Free was called");
|
AMS_ABORT("ams::Free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(ro, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(ro, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(ro, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(ro, Main));
|
||||||
|
|
|
@ -52,6 +52,7 @@ namespace {
|
||||||
namespace ams {
|
namespace ams {
|
||||||
|
|
||||||
void NORETURN Exit(int rc) {
|
void NORETURN Exit(int rc) {
|
||||||
|
AMS_UNUSED(rc);
|
||||||
AMS_ABORT("Exit called by immortal process");
|
AMS_ABORT("Exit called by immortal process");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,28 +93,34 @@ void __appExit(void) {
|
||||||
/* Nothing to clean up, because we're sm. */
|
/* Nothing to clean up, because we're sm. */
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(sm, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(sm, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(sm, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(sm, Main));
|
||||||
|
|
|
@ -52,6 +52,8 @@ namespace ams::sm {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result UserService::DetachClient(const tipc::ClientProcessId client_process_id) {
|
Result UserService::DetachClient(const tipc::ClientProcessId client_process_id) {
|
||||||
|
AMS_UNUSED(client_process_id);
|
||||||
|
|
||||||
m_initialized = false;
|
m_initialized = false;
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,28 +175,46 @@ namespace {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *operator new(size_t size) {
|
namespace ams {
|
||||||
|
|
||||||
|
void *Malloc(size_t) {
|
||||||
|
AMS_ABORT("ams::Malloc was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Free(void *) {
|
||||||
|
AMS_ABORT("ams::Free was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void *operator new(size_t) {
|
||||||
AMS_ABORT("operator new(size_t) was called");
|
AMS_ABORT("operator new(size_t) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *p) {
|
void operator delete(void *) {
|
||||||
AMS_ABORT("operator delete(void *) was called");
|
AMS_ABORT("operator delete(void *) was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_alloc(size_t size) {
|
void operator delete(void *, size_t) {
|
||||||
|
AMS_ABORT("operator delete(void *, size_t) was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
void *__libnx_alloc(size_t) {
|
||||||
AMS_ABORT("__libnx_alloc was called");
|
AMS_ABORT("__libnx_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *__libnx_aligned_alloc(size_t alignment, size_t size) {
|
void *__libnx_aligned_alloc(size_t, size_t) {
|
||||||
AMS_ABORT("__libnx_aligned_alloc was called");
|
AMS_ABORT("__libnx_aligned_alloc was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libnx_free(void *mem) {
|
void __libnx_free(void *) {
|
||||||
AMS_ABORT("__libnx_free was called");
|
AMS_ABORT("__libnx_free was called");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
AMS_UNUSED(argc, argv);
|
||||||
|
|
||||||
/* Set thread name. */
|
/* Set thread name. */
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(spl, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(spl, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(spl, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(spl, Main));
|
||||||
|
|
Loading…
Reference in a new issue