citra-emu
/
citra-canary
Archived
1
0
Fork 0

service: Mark variables as [[maybe_unused]] where applicable (#5318)

Quite a few service functions are stubbed but still pop all their
arguments, which can lead to unused variable warnings.

We can mark the unused arguments with [[maybe_unused]] to silence these
warnings until a full implementation of these functions are made.
This commit is contained in:
Mat M 2020-05-04 06:22:33 -04:00 committed by GitHub
parent 6e48149ee1
commit e9819b61a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 103 additions and 102 deletions

View File

@ -103,7 +103,7 @@ void Module::Interface::GetWifiStatus(Kernel::HLERequestContext& ctx) {
void Module::Interface::GetInfraPriority(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x27, 0, 2);
const std::vector<u8>& ac_config = rp.PopStaticBuffer();
[[maybe_unused]] const std::vector<u8>& ac_config = rp.PopStaticBuffer();
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);

View File

@ -1093,7 +1093,7 @@ void Module::Interface::BeginImportProgramTemporarily(Kernel::HLERequestContext&
void Module::Interface::EndImportProgram(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0405, 0, 2); // 0x04050002
auto cia = rp.PopObject<Kernel::ClientSession>();
[[maybe_unused]] const auto cia = rp.PopObject<Kernel::ClientSession>();
am->ScanForAllTitles();
@ -1104,7 +1104,7 @@ void Module::Interface::EndImportProgram(Kernel::HLERequestContext& ctx) {
void Module::Interface::EndImportProgramWithoutCommit(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0406, 0, 2); // 0x04060002
auto cia = rp.PopObject<Kernel::ClientSession>();
[[maybe_unused]] const auto cia = rp.PopObject<Kernel::ClientSession>();
// Note: This function is basically a no-op for us since we don't use title.db or ticket.db
// files to keep track of installed titles.
@ -1117,10 +1117,10 @@ void Module::Interface::EndImportProgramWithoutCommit(Kernel::HLERequestContext&
void Module::Interface::CommitImportPrograms(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0407, 3, 2); // 0x040700C2
auto media_type = static_cast<Service::FS::MediaType>(rp.Pop<u8>());
u32 title_count = rp.Pop<u32>();
u8 database = rp.Pop<u8>();
auto buffer = rp.PopMappedBuffer();
[[maybe_unused]] const auto media_type = static_cast<FS::MediaType>(rp.Pop<u8>());
[[maybe_unused]] const u32 title_count = rp.Pop<u32>();
[[maybe_unused]] const u8 database = rp.Pop<u8>();
const auto buffer = rp.PopMappedBuffer();
// Note: This function is basically a no-op for us since we don't use title.db or ticket.db
// files to keep track of installed titles.
@ -1204,7 +1204,7 @@ ResultVal<std::unique_ptr<AMFileWrapper>> GetFileFromSession(
void Module::Interface::GetProgramInfoFromCia(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0408, 1, 2); // 0x04080042
auto media_type = static_cast<Service::FS::MediaType>(rp.Pop<u8>());
[[maybe_unused]] const auto media_type = static_cast<FS::MediaType>(rp.Pop<u8>());
auto cia = rp.PopObject<Kernel::ClientSession>();
auto file_res = GetFileFromSession(cia);
@ -1360,7 +1360,7 @@ void Module::Interface::GetCoreVersionFromCia(Kernel::HLERequestContext& ctx) {
void Module::Interface::GetRequiredSizeFromCia(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x040D, 1, 2); // 0x040D0042
auto media_type = static_cast<Service::FS::MediaType>(rp.Pop<u8>());
[[maybe_unused]] const auto media_type = static_cast<FS::MediaType>(rp.Pop<u8>());
auto cia = rp.PopObject<Kernel::ClientSession>();
auto file_res = GetFileFromSession(cia);

View File

@ -449,11 +449,11 @@ void Module::APTInterface::PrepareToDoApplicationJump(Kernel::HLERequestContext&
void Module::APTInterface::DoApplicationJump(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x32, 2, 4); // 0x00320084
u32 param_size = rp.Pop<u32>();
u32 hmac_size = rp.Pop<u32>();
const auto param_size = rp.Pop<u32>();
const auto hmac_size = rp.Pop<u32>();
auto param = rp.PopStaticBuffer();
auto hmac = rp.PopStaticBuffer();
[[maybe_unused]] const auto param = rp.PopStaticBuffer();
[[maybe_unused]] const auto hmac = rp.PopStaticBuffer();
LOG_WARNING(Service_APT, "(STUBBED) called param_size={:08X}, hmac_size={:08X}", param_size,
hmac_size);
@ -502,11 +502,11 @@ void Module::APTInterface::PrepareToStartApplication(Kernel::HLERequestContext&
void Module::APTInterface::StartApplication(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1B, 3, 4); // 0x001B00C4
u32 buffer1_size = rp.Pop<u32>();
u32 buffer2_size = rp.Pop<u32>();
u32 flag = rp.Pop<u32>();
std::vector<u8> buffer1 = rp.PopStaticBuffer();
std::vector<u8> buffer2 = rp.PopStaticBuffer();
const auto buffer1_size = rp.Pop<u32>();
const auto buffer2_size = rp.Pop<u32>();
const auto flag = rp.Pop<u32>();
[[maybe_unused]] const std::vector<u8> buffer1 = rp.PopStaticBuffer();
[[maybe_unused]] const std::vector<u8> buffer2 = rp.PopStaticBuffer();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS); // No error
@ -520,10 +520,10 @@ void Module::APTInterface::AppletUtility(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x4B, 3, 2); // 0x004B00C2
// These are from 3dbrew - I'm not really sure what they're used for.
u32 utility_command = rp.Pop<u32>();
u32 input_size = rp.Pop<u32>();
u32 output_size = rp.Pop<u32>();
std::vector<u8> input = rp.PopStaticBuffer();
const auto utility_command = rp.Pop<u32>();
const auto input_size = rp.Pop<u32>();
const auto output_size = rp.Pop<u32>();
[[maybe_unused]] const std::vector<u8> input = rp.PopStaticBuffer();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS); // No error
@ -611,21 +611,21 @@ void Module::APTInterface::StartLibraryApplet(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1E, 2, 4); // 0x1E0084
AppletId applet_id = rp.PopEnum<AppletId>();
std::size_t buffer_size = rp.Pop<u32>();
[[maybe_unused]] const std::size_t buffer_size = rp.Pop<u32>();
std::shared_ptr<Kernel::Object> object = rp.PopGenericObject();
std::vector<u8> buffer = rp.PopStaticBuffer();
const std::vector<u8> buffer = rp.PopStaticBuffer();
LOG_DEBUG(Service_APT, "called, applet_id={:08X}", static_cast<u32>(applet_id));
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(apt->applet_manager->StartLibraryApplet(applet_id, object, buffer));
rb.Push(apt->applet_manager->StartLibraryApplet(applet_id, std::move(object), buffer));
}
void Module::APTInterface::CloseApplication(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x27, 1, 4);
u32 parameters_size = rp.Pop<u32>();
std::shared_ptr<Kernel::Object> object = rp.PopGenericObject();
std::vector<u8> buffer = rp.PopStaticBuffer();
[[maybe_unused]] const u32 parameters_size = rp.Pop<u32>();
[[maybe_unused]] const std::shared_ptr<Kernel::Object> object = rp.PopGenericObject();
[[maybe_unused]] const std::vector<u8> buffer = rp.PopStaticBuffer();
LOG_DEBUG(Service_APT, "called");

View File

@ -58,7 +58,7 @@ void Module::Interface::GetStorageInfo(Kernel::HLERequestContext& ctx) {
void Module::Interface::RegisterPrivateRootCa(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x05, 1, 2);
const u32 size = rp.Pop<u32>();
[[maybe_unused]] const u32 size = rp.Pop<u32>();
auto& buffer = rp.PopMappedBuffer();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 2);
@ -96,7 +96,7 @@ void Module::Interface::GetNewArrivalFlag(Kernel::HLERequestContext& ctx) {
void Module::Interface::RegisterNewArrivalEvent(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x08, 0, 2);
const auto event = rp.PopObject<Kernel::Event>();
[[maybe_unused]] const auto event = rp.PopObject<Kernel::Event>();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -282,7 +282,7 @@ void Module::Interface::SendProperty(Kernel::HLERequestContext& ctx) {
void Module::Interface::SendPropertyHandle(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x15, 1, 2);
const u16 property_id = rp.Pop<u16>();
const std::shared_ptr<Kernel::Object> object = rp.PopGenericObject();
[[maybe_unused]] const std::shared_ptr<Kernel::Object> object = rp.PopGenericObject();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);

View File

@ -371,7 +371,7 @@ void Module::Interface::Write(Kernel::HLERequestContext& ctx) {
buffer);
}
const u32 bytes_written = static_cast<u32>(
[[maybe_unused]] const u32 bytes_written = static_cast<u32>(
session_data->file->Write(0, buffer.size(), true, buffer.data()).Unwrap());
session_data->file->Close();
@ -433,7 +433,7 @@ void Module::Interface::WriteMessage(Kernel::HLERequestContext& ctx) {
msg_header.sender_id, msg_header.sender_id2, msg_header.send_count,
msg_header.forward_count, msg_header.user_data);
const u32 bytes_written =
[[maybe_unused]] const u32 bytes_written =
static_cast<u32>(message->Write(0, buffer_size, true, buffer.data()).Unwrap());
message->Close();
@ -520,7 +520,7 @@ void Module::Interface::WriteMessageWithHMAC(Kernel::HLERequestContext& ctx) {
hmac.CalculateDigest(hmac_digest.data(), message_body.data(), msg_header.body_size);
std::memcpy(buffer.data() + hmac_offset, hmac_digest.data(), hmac_size);
const u32 bytes_written =
[[maybe_unused]] const u32 bytes_written =
static_cast<u32>(message->Write(0, buffer_size, true, buffer.data()).Unwrap());
message->Close();
@ -763,7 +763,7 @@ void Module::Interface::OpenAndWrite(Kernel::HLERequestContext& ctx) {
cecd->CheckAndUpdateFile(path_type, ncch_program_id, buffer);
}
const u32 bytes_written =
[[maybe_unused]] const u32 bytes_written =
static_cast<u32>(file->Write(0, buffer.size(), true, buffer.data()).Unwrap());
file->Close();

View File

@ -41,7 +41,7 @@ void Module::serialize(Archive& ar, const unsigned int) {
SERIALIZE_IMPL(Module)
/// The maximum number of block entries that can exist in the config file
static const u32 CONFIG_FILE_MAX_BLOCK_ENTRIES = 1479;
constexpr u32 CONFIG_FILE_MAX_BLOCK_ENTRIES = 1479;
namespace {
@ -104,23 +104,23 @@ struct ConsoleCountryInfo {
static_assert(sizeof(ConsoleCountryInfo) == 4, "ConsoleCountryInfo must be exactly 4 bytes");
} // namespace
static const EULAVersion MAX_EULA_VERSION = {0x7F, 0x7F};
static const ConsoleModelInfo CONSOLE_MODEL_OLD = {NINTENDO_3DS_XL, {0, 0, 0}};
static const ConsoleModelInfo CONSOLE_MODEL_NEW = {NEW_NINTENDO_3DS_XL, {0, 0, 0}};
static const u8 CONSOLE_LANGUAGE = LANGUAGE_EN;
static const UsernameBlock CONSOLE_USERNAME_BLOCK = {u"CITRA", 0, 0};
static const BirthdayBlock PROFILE_BIRTHDAY = {3, 25}; // March 25th, 2014
static const u8 SOUND_OUTPUT_MODE = SOUND_SURROUND;
static const u8 UNITED_STATES_COUNTRY_ID = 49;
constexpr EULAVersion MAX_EULA_VERSION{0x7F, 0x7F};
constexpr ConsoleModelInfo CONSOLE_MODEL_OLD{NINTENDO_3DS_XL, {0, 0, 0}};
constexpr ConsoleModelInfo CONSOLE_MODEL_NEW{NEW_NINTENDO_3DS_XL, {0, 0, 0}};
constexpr u8 CONSOLE_LANGUAGE = LANGUAGE_EN;
constexpr UsernameBlock CONSOLE_USERNAME_BLOCK{u"CITRA", 0, 0};
constexpr BirthdayBlock PROFILE_BIRTHDAY{3, 25}; // March 25th, 2014
constexpr u8 SOUND_OUTPUT_MODE = SOUND_SURROUND;
constexpr u8 UNITED_STATES_COUNTRY_ID = 49;
/// TODO(Subv): Find what the other bytes are
static const ConsoleCountryInfo COUNTRY_INFO = {{0, 0, 0}, UNITED_STATES_COUNTRY_ID};
constexpr ConsoleCountryInfo COUNTRY_INFO{{0, 0, 0}, UNITED_STATES_COUNTRY_ID};
/**
* TODO(Subv): Find out what this actually is, these values fix some NaN uniforms in some games,
* for example Nintendo Zone
* Thanks Normmatt for providing this information
*/
static const std::array<float, 8> STEREO_CAMERA_SETTINGS = {
constexpr std::array<float, 8> STEREO_CAMERA_SETTINGS = {
62.0f, 289.0f, 76.80000305175781f, 46.08000183105469f,
10.0f, 5.0f, 55.58000183105469f, 21.56999969482422f,
};

View File

@ -220,15 +220,15 @@ void FS_USER::CreateFile(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x808, 8, 2);
rp.Skip(1, false); // TransactionId
ArchiveHandle archive_handle = rp.PopRaw<ArchiveHandle>();
auto filename_type = rp.PopEnum<FileSys::LowPathType>();
u32 filename_size = rp.Pop<u32>();
u32 attributes = rp.Pop<u32>();
u64 file_size = rp.Pop<u64>();
const auto archive_handle = rp.PopRaw<ArchiveHandle>();
const auto filename_type = rp.PopEnum<FileSys::LowPathType>();
const auto filename_size = rp.Pop<u32>();
const auto attributes = rp.Pop<u32>();
const auto file_size = rp.Pop<u64>();
std::vector<u8> filename = rp.PopStaticBuffer();
ASSERT(filename.size() == filename_size);
FileSys::Path file_path(filename_type, filename);
const FileSys::Path file_path(filename_type, std::move(filename));
LOG_DEBUG(Service_FS, "type={} attributes={} size={:x} data={}",
static_cast<u32>(filename_type), attributes, file_size, file_path.DebugStr());
@ -240,13 +240,13 @@ void FS_USER::CreateFile(Kernel::HLERequestContext& ctx) {
void FS_USER::CreateDirectory(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x809, 6, 2);
rp.Skip(1, false); // TransactionId
ArchiveHandle archive_handle = rp.PopRaw<ArchiveHandle>();
auto dirname_type = rp.PopEnum<FileSys::LowPathType>();
u32 dirname_size = rp.Pop<u32>();
u32 attributes = rp.Pop<u32>();
const auto archive_handle = rp.PopRaw<ArchiveHandle>();
const auto dirname_type = rp.PopEnum<FileSys::LowPathType>();
const auto dirname_size = rp.Pop<u32>();
[[maybe_unused]] const auto attributes = rp.Pop<u32>();
std::vector<u8> dirname = rp.PopStaticBuffer();
ASSERT(dirname.size() == dirname_size);
FileSys::Path dir_path(dirname_type, dirname);
const FileSys::Path dir_path(dirname_type, std::move(dirname));
LOG_DEBUG(Service_FS, "type={} size={} data={}", static_cast<u32>(dirname_type), dirname_size,
dir_path.DebugStr());
@ -366,18 +366,18 @@ void FS_USER::FormatSaveData(Kernel::HLERequestContext& ctx) {
LOG_WARNING(Service_FS, "(STUBBED)");
IPC::RequestParser rp(ctx, 0x84C, 9, 2);
auto archive_id = rp.PopEnum<FS::ArchiveIdCode>();
auto archivename_type = rp.PopEnum<FileSys::LowPathType>();
u32 archivename_size = rp.Pop<u32>();
u32 block_size = rp.Pop<u32>();
u32 number_directories = rp.Pop<u32>();
u32 number_files = rp.Pop<u32>();
u32 directory_buckets = rp.Pop<u32>();
u32 file_buckets = rp.Pop<u32>();
bool duplicate_data = rp.Pop<bool>();
const auto archive_id = rp.PopEnum<ArchiveIdCode>();
const auto archivename_type = rp.PopEnum<FileSys::LowPathType>();
const auto archivename_size = rp.Pop<u32>();
const auto block_size = rp.Pop<u32>();
const auto number_directories = rp.Pop<u32>();
const auto number_files = rp.Pop<u32>();
[[maybe_unused]] const auto directory_buckets = rp.Pop<u32>();
[[maybe_unused]] const auto file_buckets = rp.Pop<u32>();
const bool duplicate_data = rp.Pop<bool>();
std::vector<u8> archivename = rp.PopStaticBuffer();
ASSERT(archivename.size() == archivename_size);
FileSys::Path archive_path(archivename_type, archivename);
const FileSys::Path archive_path(archivename_type, std::move(archivename));
LOG_DEBUG(Service_FS, "archive_path={}", archive_path.DebugStr());
@ -409,12 +409,12 @@ void FS_USER::FormatSaveData(Kernel::HLERequestContext& ctx) {
void FS_USER::FormatThisUserSaveData(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x80F, 6, 0);
u32 block_size = rp.Pop<u32>();
u32 number_directories = rp.Pop<u32>();
u32 number_files = rp.Pop<u32>();
u32 directory_buckets = rp.Pop<u32>();
u32 file_buckets = rp.Pop<u32>();
bool duplicate_data = rp.Pop<bool>();
const auto block_size = rp.Pop<u32>();
const auto number_directories = rp.Pop<u32>();
const auto number_files = rp.Pop<u32>();
[[maybe_unused]] const auto directory_buckets = rp.Pop<u32>();
[[maybe_unused]] const auto file_buckets = rp.Pop<u32>();
const auto duplicate_data = rp.Pop<bool>();
FileSys::ArchiveFormatInfo format_info;
format_info.duplicate_data = duplicate_data;

View File

@ -421,7 +421,7 @@ void HTTP_C::CloseContext(Kernel::HLERequestContext& ctx) {
void HTTP_C::AddRequestHeader(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x11, 3, 4);
const u32 context_handle = rp.Pop<u32>();
const u32 name_size = rp.Pop<u32>();
[[maybe_unused]] const u32 name_size = rp.Pop<u32>();
const u32 value_size = rp.Pop<u32>();
const std::vector<u8> name_buffer = rp.PopStaticBuffer();
Kernel::MappedBuffer& value_buffer = rp.PopMappedBuffer();
@ -497,7 +497,7 @@ void HTTP_C::AddRequestHeader(Kernel::HLERequestContext& ctx) {
void HTTP_C::AddPostDataAscii(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x12, 3, 4);
const u32 context_handle = rp.Pop<u32>();
const u32 name_size = rp.Pop<u32>();
[[maybe_unused]] const u32 name_size = rp.Pop<u32>();
const u32 value_size = rp.Pop<u32>();
const std::vector<u8> name_buffer = rp.PopStaticBuffer();
Kernel::MappedBuffer& value_buffer = rp.PopMappedBuffer();

View File

@ -1219,8 +1219,8 @@ void NWM_UDS::ConnectToNetwork(Kernel::HLERequestContext& ctx, u16 command_id,
void NWM_UDS::ConnectToNetwork(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1E, 2, 4);
u8 connection_type = rp.Pop<u8>();
u32 passphrase_size = rp.Pop<u32>();
const auto connection_type = rp.Pop<u8>();
[[maybe_unused]] const auto passphrase_size = rp.Pop<u32>();
const std::vector<u8> network_info_buffer = rp.PopStaticBuffer();
ASSERT(network_info_buffer.size() == sizeof(NetworkInfo));
@ -1240,8 +1240,8 @@ void NWM_UDS::ConnectToNetworkDeprecated(Kernel::HLERequestContext& ctx) {
// info
const auto network_info_buffer = rp.PopRaw<std::array<u8, 0x3C>>();
u8 connection_type = rp.Pop<u8>();
u32 passphrase_size = rp.Pop<u32>();
const auto connection_type = rp.Pop<u8>();
[[maybe_unused]] const auto passphrase_size = rp.Pop<u32>();
std::vector<u8> passphrase = rp.PopStaticBuffer();

View File

@ -42,8 +42,8 @@ constexpr std::array<u8, 10> KeyTypes{{
void PS_PS::EncryptDecryptAes(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x4, 8, 4);
u32 src_size = rp.Pop<u32>();
u32 dest_size = rp.Pop<u32>();
auto src_size = rp.Pop<u32>();
[[maybe_unused]] const auto dest_size = rp.Pop<u32>();
using CryptoPP::AES;
std::array<u8, AES::BLOCKSIZE> iv;

View File

@ -50,17 +50,17 @@ constexpr int MAX_PENDING_NOTIFICATIONS = 16;
void SRV::RegisterClient(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1, 0, 2);
u32 pid_descriptor = rp.Pop<u32>();
const auto pid_descriptor = rp.Pop<u32>();
if (pid_descriptor != IPC::CallingPidDesc()) {
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(IPC::ERR_INVALID_BUFFER_DESCRIPTOR);
return;
}
u32 caller_pid = rp.Pop<u32>();
const auto caller_pid = rp.Pop<u32>();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
LOG_WARNING(Service_SRV, "(STUBBED) called");
LOG_WARNING(Service_SRV, "(STUBBED) called. Caller PID={}", caller_pid);
}
/**

View File

@ -504,8 +504,8 @@ void SOC_U::Accept(Kernel::HLERequestContext& ctx) {
// preventing graceful shutdown when closing the emulator, this can be fixed by always
// performing nonblocking operations and spinlock until the data is available
IPC::RequestParser rp(ctx, 0x04, 2, 2);
u32 socket_handle = rp.Pop<u32>();
socklen_t max_addr_len = static_cast<socklen_t>(rp.Pop<u32>());
const auto socket_handle = rp.Pop<u32>();
[[maybe_unused]] const auto max_addr_len = static_cast<socklen_t>(rp.Pop<u32>());
rp.PopPID();
sockaddr addr;
socklen_t addr_len = sizeof(addr);
@ -724,8 +724,8 @@ void SOC_U::Poll(Kernel::HLERequestContext& ctx) {
void SOC_U::GetSockName(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x17, 2, 2);
u32 socket_handle = rp.Pop<u32>();
u32 max_addr_len = rp.Pop<u32>();
const auto socket_handle = rp.Pop<u32>();
[[maybe_unused]] const auto max_addr_len = rp.Pop<u32>();
rp.PopPID();
sockaddr dest_addr;
@ -761,25 +761,26 @@ void SOC_U::Shutdown(Kernel::HLERequestContext& ctx) {
void SOC_U::GetPeerName(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x18, 2, 2);
u32 socket_handle = rp.Pop<u32>();
u32 max_addr_len = rp.Pop<u32>();
const auto socket_handle = rp.Pop<u32>();
[[maybe_unused]] const auto max_addr_len = rp.Pop<u32>();
rp.PopPID();
sockaddr dest_addr;
socklen_t dest_addr_len = sizeof(dest_addr);
int ret = ::getpeername(socket_handle, &dest_addr, &dest_addr_len);
const int ret = ::getpeername(socket_handle, &dest_addr, &dest_addr_len);
CTRSockAddr ctr_dest_addr = CTRSockAddr::FromPlatform(dest_addr);
std::vector<u8> dest_addr_buff(sizeof(ctr_dest_addr));
std::memcpy(dest_addr_buff.data(), &ctr_dest_addr, sizeof(ctr_dest_addr));
int result = 0;
if (ret != 0)
ret = TranslateError(GET_ERRNO);
if (ret != 0) {
result = TranslateError(GET_ERRNO);
}
IPC::RequestBuilder rb = rp.MakeBuilder(2, 2);
rb.Push(RESULT_SUCCESS);
rb.Push(ret);
rb.Push(result);
rb.PushStaticBuffer(std::move(dest_addr_buff), 0);
}
@ -788,8 +789,8 @@ void SOC_U::Connect(Kernel::HLERequestContext& ctx) {
// preventing graceful shutdown when closing the emulator, this can be fixed by always
// performing nonblocking operations and spinlock until the data is available
IPC::RequestParser rp(ctx, 0x06, 2, 4);
u32 socket_handle = rp.Pop<u32>();
u32 input_addr_len = rp.Pop<u32>();
const auto socket_handle = rp.Pop<u32>();
[[maybe_unused]] const auto input_addr_len = rp.Pop<u32>();
rp.PopPID();
auto input_addr_buf = rp.PopStaticBuffer();
@ -809,7 +810,7 @@ void SOC_U::Connect(Kernel::HLERequestContext& ctx) {
void SOC_U::InitializeSockets(Kernel::HLERequestContext& ctx) {
// TODO(Subv): Implement
IPC::RequestParser rp(ctx, 0x01, 1, 4);
u32 memory_block_size = rp.Pop<u32>();
[[maybe_unused]] const auto memory_block_size = rp.Pop<u32>();
rp.PopPID();
rp.PopObject<Kernel::SharedMemory>();
@ -861,12 +862,12 @@ void SOC_U::GetSockOpt(Kernel::HLERequestContext& ctx) {
void SOC_U::SetSockOpt(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x12, 4, 4);
u32 socket_handle = rp.Pop<u32>();
u32 level = rp.Pop<u32>();
s32 optname = rp.Pop<s32>();
socklen_t optlen = static_cast<socklen_t>(rp.Pop<u32>());
const auto socket_handle = rp.Pop<u32>();
const auto level = rp.Pop<u32>();
const auto optname = rp.Pop<s32>();
[[maybe_unused]] const auto optlen = static_cast<socklen_t>(rp.Pop<u32>());
rp.PopPID();
auto optval = rp.PopStaticBuffer();
const auto optval = rp.PopStaticBuffer();
s32 err = 0;