diff options
| author | 2022-12-25 13:42:32 -0500 | |
|---|---|---|
| committer | 2022-12-25 17:04:02 -0500 | |
| commit | 7ffd62424804eceb73f01b1c4e8dc216134c8295 (patch) | |
| tree | 2bfe2a9b5d0a3f0857c73475cbdf24f6fe66c740 /src | |
| parent | fsp_srv: Use ReadBufferSpan (diff) | |
| download | yuzu-7ffd62424804eceb73f01b1c4e8dc216134c8295.tar.gz yuzu-7ffd62424804eceb73f01b1c4e8dc216134c8295.tar.xz yuzu-7ffd62424804eceb73f01b1c4e8dc216134c8295.zip | |
service: Use ReadBufferSpan where it is trivial to do so
Diffstat (limited to 'src')
31 files changed, 78 insertions, 77 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 549fd8aea..9bc72da02 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp | |||
| @@ -346,7 +346,6 @@ std::vector<u8> HLERequestContext::ReadBuffer(std::size_t buffer_index) const { | |||
| 346 | } | 346 | } |
| 347 | 347 | ||
| 348 | std::span<const u8> HLERequestContext::ReadBufferSpan(std::size_t buffer_index) const { | 348 | std::span<const u8> HLERequestContext::ReadBufferSpan(std::size_t buffer_index) const { |
| 349 | LOG_CRITICAL(Debug, "called"); | ||
| 350 | const bool is_buffer_a{BufferDescriptorA().size() > buffer_index && | 349 | const bool is_buffer_a{BufferDescriptorA().size() > buffer_index && |
| 351 | BufferDescriptorA()[buffer_index].Size()}; | 350 | BufferDescriptorA()[buffer_index].Size()}; |
| 352 | if (is_buffer_a) { | 351 | if (is_buffer_a) { |
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 6d1084fd1..398bbc793 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp | |||
| @@ -367,7 +367,7 @@ protected: | |||
| 367 | IPC::RequestParser rp{ctx}; | 367 | IPC::RequestParser rp{ctx}; |
| 368 | const auto base = rp.PopRaw<ProfileBase>(); | 368 | const auto base = rp.PopRaw<ProfileBase>(); |
| 369 | 369 | ||
| 370 | const auto user_data = ctx.ReadBuffer(); | 370 | const auto user_data = ctx.ReadBufferSpan(); |
| 371 | 371 | ||
| 372 | LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}", | 372 | LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}", |
| 373 | Common::StringFromFixedZeroTerminatedBuffer( | 373 | Common::StringFromFixedZeroTerminatedBuffer( |
| @@ -399,8 +399,8 @@ protected: | |||
| 399 | IPC::RequestParser rp{ctx}; | 399 | IPC::RequestParser rp{ctx}; |
| 400 | const auto base = rp.PopRaw<ProfileBase>(); | 400 | const auto base = rp.PopRaw<ProfileBase>(); |
| 401 | 401 | ||
| 402 | const auto user_data = ctx.ReadBuffer(); | 402 | const auto user_data = ctx.ReadBufferSpan(); |
| 403 | const auto image_data = ctx.ReadBuffer(1); | 403 | const auto image_data = ctx.ReadBufferSpan(1); |
| 404 | 404 | ||
| 405 | LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}", | 405 | LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}", |
| 406 | Common::StringFromFixedZeroTerminatedBuffer( | 406 | Common::StringFromFixedZeroTerminatedBuffer( |
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 22999c942..958e40648 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp | |||
| @@ -1124,7 +1124,7 @@ void IStorageAccessor::Write(Kernel::HLERequestContext& ctx) { | |||
| 1124 | IPC::RequestParser rp{ctx}; | 1124 | IPC::RequestParser rp{ctx}; |
| 1125 | 1125 | ||
| 1126 | const u64 offset{rp.Pop<u64>()}; | 1126 | const u64 offset{rp.Pop<u64>()}; |
| 1127 | const std::vector<u8> data{ctx.ReadBuffer()}; | 1127 | const auto data{ctx.ReadBufferSpan()}; |
| 1128 | const std::size_t size{std::min<u64>(data.size(), backing.GetSize() - offset)}; | 1128 | const std::size_t size{std::min<u64>(data.size(), backing.GetSize() - offset)}; |
| 1129 | 1129 | ||
| 1130 | LOG_DEBUG(Service_AM, "called, offset={}, size={}", offset, size); | 1130 | LOG_DEBUG(Service_AM, "called, offset={}, size={}", offset, size); |
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp index 368ccd52f..cc976b155 100644 --- a/src/core/hle/service/aoc/aoc_u.cpp +++ b/src/core/hle/service/aoc/aoc_u.cpp | |||
| @@ -72,7 +72,7 @@ private: | |||
| 72 | IPC::RequestParser rp{ctx}; | 72 | IPC::RequestParser rp{ctx}; |
| 73 | 73 | ||
| 74 | const auto unknown_1 = rp.Pop<u64>(); | 74 | const auto unknown_1 = rp.Pop<u64>(); |
| 75 | [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer(); | 75 | [[maybe_unused]] const auto unknown_2 = ctx.ReadBufferSpan(); |
| 76 | 76 | ||
| 77 | LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); | 77 | LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); |
| 78 | 78 | ||
| @@ -84,7 +84,7 @@ private: | |||
| 84 | IPC::RequestParser rp{ctx}; | 84 | IPC::RequestParser rp{ctx}; |
| 85 | 85 | ||
| 86 | const auto unknown_1 = rp.Pop<u64>(); | 86 | const auto unknown_1 = rp.Pop<u64>(); |
| 87 | [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer(); | 87 | [[maybe_unused]] const auto unknown_2 = ctx.ReadBufferSpan(); |
| 88 | 88 | ||
| 89 | LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); | 89 | LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); |
| 90 | 90 | ||
diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp index 053e8f9dd..f3dd8397d 100644 --- a/src/core/hle/service/audio/audin_u.cpp +++ b/src/core/hle/service/audio/audin_u.cpp | |||
| @@ -98,7 +98,7 @@ private: | |||
| 98 | LOG_ERROR(Service_Audio, "Input buffer is too small for an AudioInBuffer!"); | 98 | LOG_ERROR(Service_Audio, "Input buffer is too small for an AudioInBuffer!"); |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | const auto& in_buffer = ctx.ReadBuffer(); | 101 | const auto& in_buffer = ctx.ReadBufferSpan(); |
| 102 | AudioInBuffer buffer{}; | 102 | AudioInBuffer buffer{}; |
| 103 | std::memcpy(&buffer, in_buffer.data(), sizeof(AudioInBuffer)); | 103 | std::memcpy(&buffer, in_buffer.data(), sizeof(AudioInBuffer)); |
| 104 | 104 | ||
| @@ -266,7 +266,7 @@ void AudInU::OpenAudioIn(Kernel::HLERequestContext& ctx) { | |||
| 266 | IPC::RequestParser rp{ctx}; | 266 | IPC::RequestParser rp{ctx}; |
| 267 | auto in_params{rp.PopRaw<AudioInParameter>()}; | 267 | auto in_params{rp.PopRaw<AudioInParameter>()}; |
| 268 | auto applet_resource_user_id{rp.PopRaw<u64>()}; | 268 | auto applet_resource_user_id{rp.PopRaw<u64>()}; |
| 269 | const auto device_name_data{ctx.ReadBuffer()}; | 269 | const auto device_name_data{ctx.ReadBufferSpan()}; |
| 270 | auto device_name = Common::StringFromBuffer(device_name_data); | 270 | auto device_name = Common::StringFromBuffer(device_name_data); |
| 271 | auto handle{ctx.GetCopyHandle(0)}; | 271 | auto handle{ctx.GetCopyHandle(0)}; |
| 272 | 272 | ||
| @@ -317,7 +317,7 @@ void AudInU::OpenAudioInProtocolSpecified(Kernel::HLERequestContext& ctx) { | |||
| 317 | auto protocol_specified{rp.PopRaw<u64>()}; | 317 | auto protocol_specified{rp.PopRaw<u64>()}; |
| 318 | auto in_params{rp.PopRaw<AudioInParameter>()}; | 318 | auto in_params{rp.PopRaw<AudioInParameter>()}; |
| 319 | auto applet_resource_user_id{rp.PopRaw<u64>()}; | 319 | auto applet_resource_user_id{rp.PopRaw<u64>()}; |
| 320 | const auto device_name_data{ctx.ReadBuffer()}; | 320 | const auto device_name_data{ctx.ReadBufferSpan()}; |
| 321 | auto device_name = Common::StringFromBuffer(device_name_data); | 321 | auto device_name = Common::StringFromBuffer(device_name_data); |
| 322 | auto handle{ctx.GetCopyHandle(0)}; | 322 | auto handle{ctx.GetCopyHandle(0)}; |
| 323 | 323 | ||
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index 29751f075..4bf388055 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp | |||
| @@ -105,7 +105,7 @@ private: | |||
| 105 | LOG_ERROR(Service_Audio, "Input buffer is too small for an AudioOutBuffer!"); | 105 | LOG_ERROR(Service_Audio, "Input buffer is too small for an AudioOutBuffer!"); |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | const auto& in_buffer = ctx.ReadBuffer(); | 108 | const auto& in_buffer = ctx.ReadBufferSpan(); |
| 109 | AudioOutBuffer buffer{}; | 109 | AudioOutBuffer buffer{}; |
| 110 | std::memcpy(&buffer, in_buffer.data(), sizeof(AudioOutBuffer)); | 110 | std::memcpy(&buffer, in_buffer.data(), sizeof(AudioOutBuffer)); |
| 111 | 111 | ||
| @@ -264,7 +264,7 @@ void AudOutU::OpenAudioOut(Kernel::HLERequestContext& ctx) { | |||
| 264 | IPC::RequestParser rp{ctx}; | 264 | IPC::RequestParser rp{ctx}; |
| 265 | auto in_params{rp.PopRaw<AudioOutParameter>()}; | 265 | auto in_params{rp.PopRaw<AudioOutParameter>()}; |
| 266 | auto applet_resource_user_id{rp.PopRaw<u64>()}; | 266 | auto applet_resource_user_id{rp.PopRaw<u64>()}; |
| 267 | const auto device_name_data{ctx.ReadBuffer()}; | 267 | const auto device_name_data{ctx.ReadBufferSpan()}; |
| 268 | auto device_name = Common::StringFromBuffer(device_name_data); | 268 | auto device_name = Common::StringFromBuffer(device_name_data); |
| 269 | auto handle{ctx.GetCopyHandle(0)}; | 269 | auto handle{ctx.GetCopyHandle(0)}; |
| 270 | 270 | ||
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index 3a1c231b6..1a48c155e 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp | |||
| @@ -112,7 +112,7 @@ private: | |||
| 112 | void RequestUpdate(Kernel::HLERequestContext& ctx) { | 112 | void RequestUpdate(Kernel::HLERequestContext& ctx) { |
| 113 | LOG_TRACE(Service_Audio, "called"); | 113 | LOG_TRACE(Service_Audio, "called"); |
| 114 | 114 | ||
| 115 | std::vector<u8> input{ctx.ReadBuffer(0)}; | 115 | const auto input{ctx.ReadBufferSpan(0)}; |
| 116 | 116 | ||
| 117 | // These buffers are written manually to avoid an issue with WriteBuffer throwing errors for | 117 | // These buffers are written manually to avoid an issue with WriteBuffer throwing errors for |
| 118 | // checking size 0. Performance size is 0 for most games. | 118 | // checking size 0. Performance size is 0 for most games. |
| @@ -306,7 +306,7 @@ private: | |||
| 306 | IPC::RequestParser rp{ctx}; | 306 | IPC::RequestParser rp{ctx}; |
| 307 | const f32 volume = rp.Pop<f32>(); | 307 | const f32 volume = rp.Pop<f32>(); |
| 308 | 308 | ||
| 309 | const auto device_name_buffer = ctx.ReadBuffer(); | 309 | const auto device_name_buffer = ctx.ReadBufferSpan(); |
| 310 | const std::string name = Common::StringFromBuffer(device_name_buffer); | 310 | const std::string name = Common::StringFromBuffer(device_name_buffer); |
| 311 | 311 | ||
| 312 | LOG_DEBUG(Service_Audio, "called. name={}, volume={}", name, volume); | 312 | LOG_DEBUG(Service_Audio, "called. name={}, volume={}", name, volume); |
| @@ -320,7 +320,7 @@ private: | |||
| 320 | } | 320 | } |
| 321 | 321 | ||
| 322 | void GetAudioDeviceOutputVolume(Kernel::HLERequestContext& ctx) { | 322 | void GetAudioDeviceOutputVolume(Kernel::HLERequestContext& ctx) { |
| 323 | const auto device_name_buffer = ctx.ReadBuffer(); | 323 | const auto device_name_buffer = ctx.ReadBufferSpan(); |
| 324 | const std::string name = Common::StringFromBuffer(device_name_buffer); | 324 | const std::string name = Common::StringFromBuffer(device_name_buffer); |
| 325 | 325 | ||
| 326 | LOG_DEBUG(Service_Audio, "called. Name={}", name); | 326 | LOG_DEBUG(Service_Audio, "called. Name={}", name); |
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp index 825fb8bcc..7c3f25c67 100644 --- a/src/core/hle/service/audio/hwopus.cpp +++ b/src/core/hle/service/audio/hwopus.cpp | |||
| @@ -74,7 +74,7 @@ private: | |||
| 74 | ResetDecoderContext(); | 74 | ResetDecoderContext(); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | if (!DecodeOpusData(consumed, sample_count, ctx.ReadBuffer(), samples, performance)) { | 77 | if (!DecodeOpusData(consumed, sample_count, ctx.ReadBufferSpan(), samples, performance)) { |
| 78 | LOG_ERROR(Audio, "Failed to decode opus data"); | 78 | LOG_ERROR(Audio, "Failed to decode opus data"); |
| 79 | IPC::ResponseBuilder rb{ctx, 2}; | 79 | IPC::ResponseBuilder rb{ctx, 2}; |
| 80 | // TODO(ogniK): Use correct error code | 80 | // TODO(ogniK): Use correct error code |
| @@ -93,7 +93,7 @@ private: | |||
| 93 | ctx.WriteBuffer(samples); | 93 | ctx.WriteBuffer(samples); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | bool DecodeOpusData(u32& consumed, u32& sample_count, const std::vector<u8>& input, | 96 | bool DecodeOpusData(u32& consumed, u32& sample_count, std::span<const u8> input, |
| 97 | std::vector<opus_int16>& output, u64* out_performance_time) const { | 97 | std::vector<opus_int16>& output, u64* out_performance_time) const { |
| 98 | const auto start_time = std::chrono::steady_clock::now(); | 98 | const auto start_time = std::chrono::steady_clock::now(); |
| 99 | const std::size_t raw_output_sz = output.size() * sizeof(opus_int16); | 99 | const std::size_t raw_output_sz = output.size() * sizeof(opus_int16); |
| @@ -257,7 +257,7 @@ void HwOpus::GetWorkBufferSizeEx(Kernel::HLERequestContext& ctx) { | |||
| 257 | 257 | ||
| 258 | void HwOpus::GetWorkBufferSizeForMultiStreamEx(Kernel::HLERequestContext& ctx) { | 258 | void HwOpus::GetWorkBufferSizeForMultiStreamEx(Kernel::HLERequestContext& ctx) { |
| 259 | OpusMultiStreamParametersEx param; | 259 | OpusMultiStreamParametersEx param; |
| 260 | std::memcpy(¶m, ctx.ReadBuffer().data(), ctx.GetReadBufferSize()); | 260 | std::memcpy(¶m, ctx.ReadBufferSpan().data(), ctx.GetReadBufferSize()); |
| 261 | 261 | ||
| 262 | const auto sample_rate = param.sample_rate; | 262 | const auto sample_rate = param.sample_rate; |
| 263 | const auto channel_count = param.channel_count; | 263 | const auto channel_count = param.channel_count; |
diff --git a/src/core/hle/service/bcat/bcat_module.cpp b/src/core/hle/service/bcat/bcat_module.cpp index cbe690a5d..c1a012739 100644 --- a/src/core/hle/service/bcat/bcat_module.cpp +++ b/src/core/hle/service/bcat/bcat_module.cpp | |||
| @@ -206,7 +206,7 @@ private: | |||
| 206 | IPC::RequestParser rp{ctx}; | 206 | IPC::RequestParser rp{ctx}; |
| 207 | const auto title_id = rp.PopRaw<u64>(); | 207 | const auto title_id = rp.PopRaw<u64>(); |
| 208 | 208 | ||
| 209 | const auto passphrase_raw = ctx.ReadBuffer(); | 209 | const auto passphrase_raw = ctx.ReadBufferSpan(); |
| 210 | 210 | ||
| 211 | LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, passphrase={}", title_id, | 211 | LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, passphrase={}", title_id, |
| 212 | Common::HexToString(passphrase_raw)); | 212 | Common::HexToString(passphrase_raw)); |
diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index d183e5829..5ea61c430 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp | |||
| @@ -121,8 +121,8 @@ private: | |||
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | void ImportTicket(Kernel::HLERequestContext& ctx) { | 123 | void ImportTicket(Kernel::HLERequestContext& ctx) { |
| 124 | const auto ticket = ctx.ReadBuffer(); | 124 | const auto ticket = ctx.ReadBufferSpan(); |
| 125 | const auto cert = ctx.ReadBuffer(1); | 125 | [[maybe_unused]] const auto cert = ctx.ReadBufferSpan(1); |
| 126 | 126 | ||
| 127 | if (ticket.size() < sizeof(Core::Crypto::Ticket)) { | 127 | if (ticket.size() < sizeof(Core::Crypto::Ticket)) { |
| 128 | LOG_ERROR(Service_ETicket, "The input buffer is not large enough!"); | 128 | LOG_ERROR(Service_ETicket, "The input buffer is not large enough!"); |
diff --git a/src/core/hle/service/fatal/fatal.cpp b/src/core/hle/service/fatal/fatal.cpp index 27675615b..ff896ea10 100644 --- a/src/core/hle/service/fatal/fatal.cpp +++ b/src/core/hle/service/fatal/fatal.cpp | |||
| @@ -152,7 +152,7 @@ void Module::Interface::ThrowFatalWithCpuContext(Kernel::HLERequestContext& ctx) | |||
| 152 | IPC::RequestParser rp(ctx); | 152 | IPC::RequestParser rp(ctx); |
| 153 | const auto error_code = rp.Pop<Result>(); | 153 | const auto error_code = rp.Pop<Result>(); |
| 154 | const auto fatal_type = rp.PopEnum<FatalType>(); | 154 | const auto fatal_type = rp.PopEnum<FatalType>(); |
| 155 | const auto fatal_info = ctx.ReadBuffer(); | 155 | const auto fatal_info = ctx.ReadBufferSpan(); |
| 156 | FatalInfo info{}; | 156 | FatalInfo info{}; |
| 157 | 157 | ||
| 158 | ASSERT_MSG(fatal_info.size() == sizeof(FatalInfo), "Invalid fatal info buffer size!"); | 158 | ASSERT_MSG(fatal_info.size() == sizeof(FatalInfo), "Invalid fatal info buffer size!"); |
diff --git a/src/core/hle/service/glue/notif.cpp b/src/core/hle/service/glue/notif.cpp index 3ace2dabd..ee5c6d3a4 100644 --- a/src/core/hle/service/glue/notif.cpp +++ b/src/core/hle/service/glue/notif.cpp | |||
| @@ -38,7 +38,7 @@ void NOTIF_A::RegisterAlarmSetting(Kernel::HLERequestContext& ctx) { | |||
| 38 | "application_parameter_size is bigger than 0x400 bytes"); | 38 | "application_parameter_size is bigger than 0x400 bytes"); |
| 39 | 39 | ||
| 40 | AlarmSetting new_alarm{}; | 40 | AlarmSetting new_alarm{}; |
| 41 | memcpy(&new_alarm, ctx.ReadBuffer(0).data(), sizeof(AlarmSetting)); | 41 | memcpy(&new_alarm, ctx.ReadBufferSpan(0).data(), sizeof(AlarmSetting)); |
| 42 | 42 | ||
| 43 | // TODO: Count alarms per game id | 43 | // TODO: Count alarms per game id |
| 44 | if (alarms.size() >= max_alarms) { | 44 | if (alarms.size() >= max_alarms) { |
| @@ -73,7 +73,7 @@ void NOTIF_A::UpdateAlarmSetting(Kernel::HLERequestContext& ctx) { | |||
| 73 | "application_parameter_size is bigger than 0x400 bytes"); | 73 | "application_parameter_size is bigger than 0x400 bytes"); |
| 74 | 74 | ||
| 75 | AlarmSetting alarm_setting{}; | 75 | AlarmSetting alarm_setting{}; |
| 76 | memcpy(&alarm_setting, ctx.ReadBuffer(0).data(), sizeof(AlarmSetting)); | 76 | memcpy(&alarm_setting, ctx.ReadBufferSpan(0).data(), sizeof(AlarmSetting)); |
| 77 | 77 | ||
| 78 | const auto alarm_it = GetAlarmFromId(alarm_setting.alarm_setting_id); | 78 | const auto alarm_it = GetAlarmFromId(alarm_setting.alarm_setting_id); |
| 79 | if (alarm_it != alarms.end()) { | 79 | if (alarm_it != alarms.end()) { |
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 2f871de31..df63083a8 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -737,7 +737,7 @@ Core::HID::NpadStyleTag Controller_NPad::GetSupportedStyleSet() const { | |||
| 737 | return hid_core.GetSupportedStyleTag(); | 737 | return hid_core.GetSupportedStyleTag(); |
| 738 | } | 738 | } |
| 739 | 739 | ||
| 740 | void Controller_NPad::SetSupportedNpadIdTypes(u8* data, std::size_t length) { | 740 | void Controller_NPad::SetSupportedNpadIdTypes(const u8* const data, std::size_t length) { |
| 741 | ASSERT(length > 0 && (length % sizeof(u32)) == 0); | 741 | ASSERT(length > 0 && (length % sizeof(u32)) == 0); |
| 742 | supported_npad_id_types.clear(); | 742 | supported_npad_id_types.clear(); |
| 743 | supported_npad_id_types.resize(length / sizeof(u32)); | 743 | supported_npad_id_types.resize(length / sizeof(u32)); |
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index 1a589cca2..988ac8ec4 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h | |||
| @@ -95,7 +95,7 @@ public: | |||
| 95 | void SetSupportedStyleSet(Core::HID::NpadStyleTag style_set); | 95 | void SetSupportedStyleSet(Core::HID::NpadStyleTag style_set); |
| 96 | Core::HID::NpadStyleTag GetSupportedStyleSet() const; | 96 | Core::HID::NpadStyleTag GetSupportedStyleSet() const; |
| 97 | 97 | ||
| 98 | void SetSupportedNpadIdTypes(u8* data, std::size_t length); | 98 | void SetSupportedNpadIdTypes(const u8* const data, std::size_t length); |
| 99 | void GetSupportedNpadIdTypes(u32* data, std::size_t max_length); | 99 | void GetSupportedNpadIdTypes(u32* data, std::size_t max_length); |
| 100 | std::size_t GetSupportedNpadIdTypesSize() const; | 100 | std::size_t GetSupportedNpadIdTypesSize() const; |
| 101 | 101 | ||
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index bf28440c6..80db6af06 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -1026,7 +1026,7 @@ void Hid::SetSupportedNpadIdType(Kernel::HLERequestContext& ctx) { | |||
| 1026 | const auto applet_resource_user_id{rp.Pop<u64>()}; | 1026 | const auto applet_resource_user_id{rp.Pop<u64>()}; |
| 1027 | 1027 | ||
| 1028 | applet_resource->GetController<Controller_NPad>(HidController::NPad) | 1028 | applet_resource->GetController<Controller_NPad>(HidController::NPad) |
| 1029 | .SetSupportedNpadIdTypes(ctx.ReadBuffer().data(), ctx.GetReadBufferSize()); | 1029 | .SetSupportedNpadIdTypes(ctx.ReadBufferSpan().data(), ctx.GetReadBufferSize()); |
| 1030 | 1030 | ||
| 1031 | LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id); | 1031 | LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id); |
| 1032 | 1032 | ||
| @@ -1564,8 +1564,8 @@ void Hid::SendVibrationValues(Kernel::HLERequestContext& ctx) { | |||
| 1564 | IPC::RequestParser rp{ctx}; | 1564 | IPC::RequestParser rp{ctx}; |
| 1565 | const auto applet_resource_user_id{rp.Pop<u64>()}; | 1565 | const auto applet_resource_user_id{rp.Pop<u64>()}; |
| 1566 | 1566 | ||
| 1567 | const auto handles = ctx.ReadBuffer(0); | 1567 | const auto handles = ctx.ReadBufferSpan(0); |
| 1568 | const auto vibrations = ctx.ReadBuffer(1); | 1568 | const auto vibrations = ctx.ReadBufferSpan(1); |
| 1569 | 1569 | ||
| 1570 | std::vector<Core::HID::VibrationDeviceHandle> vibration_device_handles( | 1570 | std::vector<Core::HID::VibrationDeviceHandle> vibration_device_handles( |
| 1571 | handles.size() / sizeof(Core::HID::VibrationDeviceHandle)); | 1571 | handles.size() / sizeof(Core::HID::VibrationDeviceHandle)); |
| @@ -2104,7 +2104,7 @@ void Hid::WritePalmaRgbLedPatternEntry(Kernel::HLERequestContext& ctx) { | |||
| 2104 | const auto connection_handle{rp.PopRaw<Controller_Palma::PalmaConnectionHandle>()}; | 2104 | const auto connection_handle{rp.PopRaw<Controller_Palma::PalmaConnectionHandle>()}; |
| 2105 | const auto unknown{rp.Pop<u64>()}; | 2105 | const auto unknown{rp.Pop<u64>()}; |
| 2106 | 2106 | ||
| 2107 | const auto buffer = ctx.ReadBuffer(); | 2107 | [[maybe_unused]] const auto buffer = ctx.ReadBufferSpan(); |
| 2108 | 2108 | ||
| 2109 | LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, unknown={}", | 2109 | LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, unknown={}", |
| 2110 | connection_handle.npad_id, unknown); | 2110 | connection_handle.npad_id, unknown); |
diff --git a/src/core/hle/service/jit/jit.cpp b/src/core/hle/service/jit/jit.cpp index 8f2920c51..534639ff9 100644 --- a/src/core/hle/service/jit/jit.cpp +++ b/src/core/hle/service/jit/jit.cpp | |||
| @@ -62,7 +62,7 @@ public: | |||
| 62 | const auto parameters{rp.PopRaw<InputParameters>()}; | 62 | const auto parameters{rp.PopRaw<InputParameters>()}; |
| 63 | 63 | ||
| 64 | // Optional input/output buffers | 64 | // Optional input/output buffers |
| 65 | std::vector<u8> input_buffer{ctx.CanReadBuffer() ? ctx.ReadBuffer() : std::vector<u8>()}; | 65 | const auto input_buffer{ctx.CanReadBuffer() ? ctx.ReadBufferSpan() : std::span<const u8>()}; |
| 66 | std::vector<u8> output_buffer(ctx.CanWriteBuffer() ? ctx.GetWriteBufferSize() : 0); | 66 | std::vector<u8> output_buffer(ctx.CanWriteBuffer() ? ctx.GetWriteBufferSize() : 0); |
| 67 | 67 | ||
| 68 | // Function call prototype: | 68 | // Function call prototype: |
| @@ -132,7 +132,7 @@ public: | |||
| 132 | const auto command{rp.PopRaw<u64>()}; | 132 | const auto command{rp.PopRaw<u64>()}; |
| 133 | 133 | ||
| 134 | // Optional input/output buffers | 134 | // Optional input/output buffers |
| 135 | std::vector<u8> input_buffer{ctx.CanReadBuffer() ? ctx.ReadBuffer() : std::vector<u8>()}; | 135 | const auto input_buffer{ctx.CanReadBuffer() ? ctx.ReadBufferSpan() : std::span<const u8>()}; |
| 136 | std::vector<u8> output_buffer(ctx.CanWriteBuffer() ? ctx.GetWriteBufferSize() : 0); | 136 | std::vector<u8> output_buffer(ctx.CanWriteBuffer() ? ctx.GetWriteBufferSize() : 0); |
| 137 | 137 | ||
| 138 | // Function call prototype: | 138 | // Function call prototype: |
| @@ -176,7 +176,7 @@ public: | |||
| 176 | IPC::RequestParser rp{ctx}; | 176 | IPC::RequestParser rp{ctx}; |
| 177 | const auto tmem_size{rp.PopRaw<u64>()}; | 177 | const auto tmem_size{rp.PopRaw<u64>()}; |
| 178 | const auto tmem_handle{ctx.GetCopyHandle(0)}; | 178 | const auto tmem_handle{ctx.GetCopyHandle(0)}; |
| 179 | const auto nro_plugin{ctx.ReadBuffer(1)}; | 179 | const auto nro_plugin{ctx.ReadBufferSpan(1)}; |
| 180 | 180 | ||
| 181 | if (tmem_size == 0) { | 181 | if (tmem_size == 0) { |
| 182 | LOG_ERROR(Service_JIT, "attempted to load plugin with empty transfer memory"); | 182 | LOG_ERROR(Service_JIT, "attempted to load plugin with empty transfer memory"); |
diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp index c49c61cff..ad097a6ef 100644 --- a/src/core/hle/service/ldn/ldn.cpp +++ b/src/core/hle/service/ldn/ldn.cpp | |||
| @@ -412,7 +412,7 @@ public: | |||
| 412 | } | 412 | } |
| 413 | 413 | ||
| 414 | void SetAdvertiseData(Kernel::HLERequestContext& ctx) { | 414 | void SetAdvertiseData(Kernel::HLERequestContext& ctx) { |
| 415 | std::vector<u8> read_buffer = ctx.ReadBuffer(); | 415 | const auto read_buffer = ctx.ReadBufferSpan(); |
| 416 | 416 | ||
| 417 | IPC::ResponseBuilder rb{ctx, 2}; | 417 | IPC::ResponseBuilder rb{ctx, 2}; |
| 418 | rb.Push(lan_discovery.SetAdvertiseData(read_buffer)); | 418 | rb.Push(lan_discovery.SetAdvertiseData(read_buffer)); |
| @@ -464,7 +464,7 @@ public: | |||
| 464 | parameters.security_config.passphrase_size, | 464 | parameters.security_config.passphrase_size, |
| 465 | parameters.security_config.security_mode, parameters.local_communication_version); | 465 | parameters.security_config.security_mode, parameters.local_communication_version); |
| 466 | 466 | ||
| 467 | const std::vector<u8> read_buffer = ctx.ReadBuffer(); | 467 | const auto read_buffer = ctx.ReadBufferSpan(); |
| 468 | if (read_buffer.size() != sizeof(NetworkInfo)) { | 468 | if (read_buffer.size() != sizeof(NetworkInfo)) { |
| 469 | LOG_ERROR(Frontend, "NetworkInfo doesn't match read_buffer size!"); | 469 | LOG_ERROR(Frontend, "NetworkInfo doesn't match read_buffer size!"); |
| 470 | IPC::ResponseBuilder rb{ctx, 2}; | 470 | IPC::ResponseBuilder rb{ctx, 2}; |
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp index ef4b54046..0da461e6c 100644 --- a/src/core/hle/service/lm/lm.cpp +++ b/src/core/hle/service/lm/lm.cpp | |||
| @@ -94,7 +94,7 @@ public: | |||
| 94 | private: | 94 | private: |
| 95 | void Log(Kernel::HLERequestContext& ctx) { | 95 | void Log(Kernel::HLERequestContext& ctx) { |
| 96 | std::size_t offset{}; | 96 | std::size_t offset{}; |
| 97 | const auto data = ctx.ReadBuffer(); | 97 | const auto data = ctx.ReadBufferSpan(); |
| 98 | 98 | ||
| 99 | // This function only succeeds - Get that out of the way | 99 | // This function only succeeds - Get that out of the way |
| 100 | IPC::ResponseBuilder rb{ctx, 2}; | 100 | IPC::ResponseBuilder rb{ctx, 2}; |
diff --git a/src/core/hle/service/nfc/mifare_user.cpp b/src/core/hle/service/nfc/mifare_user.cpp index 51523a3ae..7d391c936 100644 --- a/src/core/hle/service/nfc/mifare_user.cpp +++ b/src/core/hle/service/nfc/mifare_user.cpp | |||
| @@ -168,7 +168,7 @@ void MFIUser::StopDetection(Kernel::HLERequestContext& ctx) { | |||
| 168 | void MFIUser::Read(Kernel::HLERequestContext& ctx) { | 168 | void MFIUser::Read(Kernel::HLERequestContext& ctx) { |
| 169 | IPC::RequestParser rp{ctx}; | 169 | IPC::RequestParser rp{ctx}; |
| 170 | const auto device_handle{rp.Pop<u64>()}; | 170 | const auto device_handle{rp.Pop<u64>()}; |
| 171 | const auto buffer{ctx.ReadBuffer()}; | 171 | const auto buffer{ctx.ReadBufferSpan()}; |
| 172 | const auto number_of_commands{ctx.GetReadBufferNumElements<NFP::MifareReadBlockParameter>()}; | 172 | const auto number_of_commands{ctx.GetReadBufferNumElements<NFP::MifareReadBlockParameter>()}; |
| 173 | std::vector<NFP::MifareReadBlockParameter> read_commands(number_of_commands); | 173 | std::vector<NFP::MifareReadBlockParameter> read_commands(number_of_commands); |
| 174 | 174 | ||
| @@ -209,7 +209,7 @@ void MFIUser::Read(Kernel::HLERequestContext& ctx) { | |||
| 209 | void MFIUser::Write(Kernel::HLERequestContext& ctx) { | 209 | void MFIUser::Write(Kernel::HLERequestContext& ctx) { |
| 210 | IPC::RequestParser rp{ctx}; | 210 | IPC::RequestParser rp{ctx}; |
| 211 | const auto device_handle{rp.Pop<u64>()}; | 211 | const auto device_handle{rp.Pop<u64>()}; |
| 212 | const auto buffer{ctx.ReadBuffer()}; | 212 | const auto buffer{ctx.ReadBufferSpan()}; |
| 213 | const auto number_of_commands{ctx.GetReadBufferNumElements<NFP::MifareWriteBlockParameter>()}; | 213 | const auto number_of_commands{ctx.GetReadBufferNumElements<NFP::MifareWriteBlockParameter>()}; |
| 214 | std::vector<NFP::MifareWriteBlockParameter> write_commands(number_of_commands); | 214 | std::vector<NFP::MifareWriteBlockParameter> write_commands(number_of_commands); |
| 215 | 215 | ||
diff --git a/src/core/hle/service/nfc/nfc_user.cpp b/src/core/hle/service/nfc/nfc_user.cpp index 89aa6b3f5..5dcf8a423 100644 --- a/src/core/hle/service/nfc/nfc_user.cpp +++ b/src/core/hle/service/nfc/nfc_user.cpp | |||
| @@ -325,7 +325,7 @@ void IUser::SendCommandByPassThrough(Kernel::HLERequestContext& ctx) { | |||
| 325 | IPC::RequestParser rp{ctx}; | 325 | IPC::RequestParser rp{ctx}; |
| 326 | const auto device_handle{rp.Pop<u64>()}; | 326 | const auto device_handle{rp.Pop<u64>()}; |
| 327 | const auto timeout{rp.PopRaw<Time::Clock::TimeSpanType>()}; | 327 | const auto timeout{rp.PopRaw<Time::Clock::TimeSpanType>()}; |
| 328 | const auto command_data{ctx.ReadBuffer()}; | 328 | const auto command_data{ctx.ReadBufferSpan()}; |
| 329 | 329 | ||
| 330 | LOG_INFO(Service_NFC, "(STUBBED) called, device_handle={}, timeout={}, data_size={}", | 330 | LOG_INFO(Service_NFC, "(STUBBED) called, device_handle={}, timeout={}, data_size={}", |
| 331 | device_handle, timeout.ToSeconds(), command_data.size()); | 331 | device_handle, timeout.ToSeconds(), command_data.size()); |
diff --git a/src/core/hle/service/nfp/nfp_user.cpp b/src/core/hle/service/nfp/nfp_user.cpp index a4d3d1bc7..0a5606756 100644 --- a/src/core/hle/service/nfp/nfp_user.cpp +++ b/src/core/hle/service/nfp/nfp_user.cpp | |||
| @@ -290,7 +290,7 @@ void IUser::GetApplicationArea(Kernel::HLERequestContext& ctx) { | |||
| 290 | void IUser::SetApplicationArea(Kernel::HLERequestContext& ctx) { | 290 | void IUser::SetApplicationArea(Kernel::HLERequestContext& ctx) { |
| 291 | IPC::RequestParser rp{ctx}; | 291 | IPC::RequestParser rp{ctx}; |
| 292 | const auto device_handle{rp.Pop<u64>()}; | 292 | const auto device_handle{rp.Pop<u64>()}; |
| 293 | const auto data{ctx.ReadBuffer()}; | 293 | const auto data{ctx.ReadBufferSpan()}; |
| 294 | LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}", device_handle, data.size()); | 294 | LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}", device_handle, data.size()); |
| 295 | 295 | ||
| 296 | if (state == State::NonInitialized) { | 296 | if (state == State::NonInitialized) { |
| @@ -370,7 +370,7 @@ void IUser::CreateApplicationArea(Kernel::HLERequestContext& ctx) { | |||
| 370 | IPC::RequestParser rp{ctx}; | 370 | IPC::RequestParser rp{ctx}; |
| 371 | const auto device_handle{rp.Pop<u64>()}; | 371 | const auto device_handle{rp.Pop<u64>()}; |
| 372 | const auto access_id{rp.Pop<u32>()}; | 372 | const auto access_id{rp.Pop<u32>()}; |
| 373 | const auto data{ctx.ReadBuffer()}; | 373 | const auto data{ctx.ReadBufferSpan()}; |
| 374 | LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}, access_id={}", device_handle, | 374 | LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}, access_id={}", device_handle, |
| 375 | access_id, data.size()); | 375 | access_id, data.size()); |
| 376 | 376 | ||
| @@ -637,7 +637,7 @@ void IUser::RecreateApplicationArea(Kernel::HLERequestContext& ctx) { | |||
| 637 | IPC::RequestParser rp{ctx}; | 637 | IPC::RequestParser rp{ctx}; |
| 638 | const auto device_handle{rp.Pop<u64>()}; | 638 | const auto device_handle{rp.Pop<u64>()}; |
| 639 | const auto access_id{rp.Pop<u32>()}; | 639 | const auto access_id{rp.Pop<u32>()}; |
| 640 | const auto data{ctx.ReadBuffer()}; | 640 | const auto data{ctx.ReadBufferSpan()}; |
| 641 | LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}, access_id={}", device_handle, | 641 | LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}, access_id={}", device_handle, |
| 642 | access_id, data.size()); | 642 | access_id, data.size()); |
| 643 | 643 | ||
diff --git a/src/core/hle/service/ngct/ngct.cpp b/src/core/hle/service/ngct/ngct.cpp index 8af8a835d..bee62b054 100644 --- a/src/core/hle/service/ngct/ngct.cpp +++ b/src/core/hle/service/ngct/ngct.cpp | |||
| @@ -24,7 +24,7 @@ public: | |||
| 24 | 24 | ||
| 25 | private: | 25 | private: |
| 26 | void Match(Kernel::HLERequestContext& ctx) { | 26 | void Match(Kernel::HLERequestContext& ctx) { |
| 27 | const auto buffer = ctx.ReadBuffer(); | 27 | const auto buffer = ctx.ReadBufferSpan(); |
| 28 | const auto text = Common::StringFromFixedZeroTerminatedBuffer( | 28 | const auto text = Common::StringFromFixedZeroTerminatedBuffer( |
| 29 | reinterpret_cast<const char*>(buffer.data()), buffer.size()); | 29 | reinterpret_cast<const char*>(buffer.data()), buffer.size()); |
| 30 | 30 | ||
| @@ -37,7 +37,7 @@ private: | |||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | void Filter(Kernel::HLERequestContext& ctx) { | 39 | void Filter(Kernel::HLERequestContext& ctx) { |
| 40 | const auto buffer = ctx.ReadBuffer(); | 40 | const auto buffer = ctx.ReadBufferSpan(); |
| 41 | const auto text = Common::StringFromFixedZeroTerminatedBuffer( | 41 | const auto text = Common::StringFromFixedZeroTerminatedBuffer( |
| 42 | reinterpret_cast<const char*>(buffer.data()), buffer.size()); | 42 | reinterpret_cast<const char*>(buffer.data()), buffer.size()); |
| 43 | 43 | ||
diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp index 4fa9f51a6..a6446fdcc 100644 --- a/src/core/hle/service/nifm/nifm.cpp +++ b/src/core/hle/service/nifm/nifm.cpp | |||
| @@ -414,7 +414,7 @@ void IGeneralService::CreateTemporaryNetworkProfile(Kernel::HLERequestContext& c | |||
| 414 | 414 | ||
| 415 | ASSERT_MSG(ctx.GetReadBufferSize() == 0x17c, "SfNetworkProfileData is not the correct size"); | 415 | ASSERT_MSG(ctx.GetReadBufferSize() == 0x17c, "SfNetworkProfileData is not the correct size"); |
| 416 | u128 uuid{}; | 416 | u128 uuid{}; |
| 417 | auto buffer = ctx.ReadBuffer(); | 417 | auto buffer = ctx.ReadBufferSpan(); |
| 418 | std::memcpy(&uuid, buffer.data() + 8, sizeof(u128)); | 418 | std::memcpy(&uuid, buffer.data() + 8, sizeof(u128)); |
| 419 | 419 | ||
| 420 | IPC::ResponseBuilder rb{ctx, 6, 0, 1}; | 420 | IPC::ResponseBuilder rb{ctx, 6, 0, 1}; |
diff --git a/src/core/hle/service/prepo/prepo.cpp b/src/core/hle/service/prepo/prepo.cpp index 78f897d3e..f6a141b2e 100644 --- a/src/core/hle/service/prepo/prepo.cpp +++ b/src/core/hle/service/prepo/prepo.cpp | |||
| @@ -57,13 +57,13 @@ private: | |||
| 57 | IPC::RequestParser rp{ctx}; | 57 | IPC::RequestParser rp{ctx}; |
| 58 | const auto process_id = rp.PopRaw<u64>(); | 58 | const auto process_id = rp.PopRaw<u64>(); |
| 59 | 59 | ||
| 60 | const auto data1 = ctx.ReadBuffer(0); | 60 | const auto data1 = ctx.ReadBufferSpan(0); |
| 61 | const auto data2 = [&ctx] { | 61 | const auto data2 = [&ctx] { |
| 62 | if (ctx.CanReadBuffer(1)) { | 62 | if (ctx.CanReadBuffer(1)) { |
| 63 | return ctx.ReadBuffer(1); | 63 | return ctx.ReadBufferSpan(1); |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | return std::vector<u8>{}; | 66 | return std::span<const u8>{}; |
| 67 | }(); | 67 | }(); |
| 68 | 68 | ||
| 69 | LOG_DEBUG(Service_PREPO, | 69 | LOG_DEBUG(Service_PREPO, |
| @@ -84,13 +84,13 @@ private: | |||
| 84 | const auto user_id = rp.PopRaw<u128>(); | 84 | const auto user_id = rp.PopRaw<u128>(); |
| 85 | const auto process_id = rp.PopRaw<u64>(); | 85 | const auto process_id = rp.PopRaw<u64>(); |
| 86 | 86 | ||
| 87 | const auto data1 = ctx.ReadBuffer(0); | 87 | const auto data1 = ctx.ReadBufferSpan(0); |
| 88 | const auto data2 = [&ctx] { | 88 | const auto data2 = [&ctx] { |
| 89 | if (ctx.CanReadBuffer(1)) { | 89 | if (ctx.CanReadBuffer(1)) { |
| 90 | return ctx.ReadBuffer(1); | 90 | return ctx.ReadBufferSpan(1); |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | return std::vector<u8>{}; | 93 | return std::span<const u8>{}; |
| 94 | }(); | 94 | }(); |
| 95 | 95 | ||
| 96 | LOG_DEBUG(Service_PREPO, | 96 | LOG_DEBUG(Service_PREPO, |
| @@ -136,13 +136,13 @@ private: | |||
| 136 | IPC::RequestParser rp{ctx}; | 136 | IPC::RequestParser rp{ctx}; |
| 137 | const auto title_id = rp.PopRaw<u64>(); | 137 | const auto title_id = rp.PopRaw<u64>(); |
| 138 | 138 | ||
| 139 | const auto data1 = ctx.ReadBuffer(0); | 139 | const auto data1 = ctx.ReadBufferSpan(0); |
| 140 | const auto data2 = [&ctx] { | 140 | const auto data2 = [&ctx] { |
| 141 | if (ctx.CanReadBuffer(1)) { | 141 | if (ctx.CanReadBuffer(1)) { |
| 142 | return ctx.ReadBuffer(1); | 142 | return ctx.ReadBufferSpan(1); |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | return std::vector<u8>{}; | 145 | return std::span<const u8>{}; |
| 146 | }(); | 146 | }(); |
| 147 | 147 | ||
| 148 | LOG_DEBUG(Service_PREPO, "called, title_id={:016X}, data1_size={:016X}, data2_size={:016X}", | 148 | LOG_DEBUG(Service_PREPO, "called, title_id={:016X}, data1_size={:016X}, data2_size={:016X}", |
| @@ -160,13 +160,13 @@ private: | |||
| 160 | const auto user_id = rp.PopRaw<u128>(); | 160 | const auto user_id = rp.PopRaw<u128>(); |
| 161 | const auto title_id = rp.PopRaw<u64>(); | 161 | const auto title_id = rp.PopRaw<u64>(); |
| 162 | 162 | ||
| 163 | const auto data1 = ctx.ReadBuffer(0); | 163 | const auto data1 = ctx.ReadBufferSpan(0); |
| 164 | const auto data2 = [&ctx] { | 164 | const auto data2 = [&ctx] { |
| 165 | if (ctx.CanReadBuffer(1)) { | 165 | if (ctx.CanReadBuffer(1)) { |
| 166 | return ctx.ReadBuffer(1); | 166 | return ctx.ReadBufferSpan(1); |
| 167 | } | 167 | } |
| 168 | 168 | ||
| 169 | return std::vector<u8>{}; | 169 | return std::span<const u8>{}; |
| 170 | }(); | 170 | }(); |
| 171 | 171 | ||
| 172 | LOG_DEBUG(Service_PREPO, | 172 | LOG_DEBUG(Service_PREPO, |
diff --git a/src/core/hle/service/set/set_sys.cpp b/src/core/hle/service/set/set_sys.cpp index 94c20edda..f1ace8184 100644 --- a/src/core/hle/service/set/set_sys.cpp +++ b/src/core/hle/service/set/set_sys.cpp | |||
| @@ -131,12 +131,12 @@ void SET_SYS::GetSettingsItemValueSize(Kernel::HLERequestContext& ctx) { | |||
| 131 | 131 | ||
| 132 | // The category of the setting. This corresponds to the top-level keys of | 132 | // The category of the setting. This corresponds to the top-level keys of |
| 133 | // system_settings.ini. | 133 | // system_settings.ini. |
| 134 | const auto setting_category_buf{ctx.ReadBuffer(0)}; | 134 | const auto setting_category_buf{ctx.ReadBufferSpan(0)}; |
| 135 | const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()}; | 135 | const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()}; |
| 136 | 136 | ||
| 137 | // The name of the setting. This corresponds to the second-level keys of | 137 | // The name of the setting. This corresponds to the second-level keys of |
| 138 | // system_settings.ini. | 138 | // system_settings.ini. |
| 139 | const auto setting_name_buf{ctx.ReadBuffer(1)}; | 139 | const auto setting_name_buf{ctx.ReadBufferSpan(1)}; |
| 140 | const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()}; | 140 | const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()}; |
| 141 | 141 | ||
| 142 | auto settings{GetSettings()}; | 142 | auto settings{GetSettings()}; |
| @@ -156,12 +156,12 @@ void SET_SYS::GetSettingsItemValue(Kernel::HLERequestContext& ctx) { | |||
| 156 | 156 | ||
| 157 | // The category of the setting. This corresponds to the top-level keys of | 157 | // The category of the setting. This corresponds to the top-level keys of |
| 158 | // system_settings.ini. | 158 | // system_settings.ini. |
| 159 | const auto setting_category_buf{ctx.ReadBuffer(0)}; | 159 | const auto setting_category_buf{ctx.ReadBufferSpan(0)}; |
| 160 | const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()}; | 160 | const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()}; |
| 161 | 161 | ||
| 162 | // The name of the setting. This corresponds to the second-level keys of | 162 | // The name of the setting. This corresponds to the second-level keys of |
| 163 | // system_settings.ini. | 163 | // system_settings.ini. |
| 164 | const auto setting_name_buf{ctx.ReadBuffer(1)}; | 164 | const auto setting_name_buf{ctx.ReadBufferSpan(1)}; |
| 165 | const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()}; | 165 | const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()}; |
| 166 | 166 | ||
| 167 | auto settings{GetSettings()}; | 167 | auto settings{GetSettings()}; |
diff --git a/src/core/hle/service/sockets/sfdnsres.cpp b/src/core/hle/service/sockets/sfdnsres.cpp index 097c37d7a..6d0e1dd6c 100644 --- a/src/core/hle/service/sockets/sfdnsres.cpp +++ b/src/core/hle/service/sockets/sfdnsres.cpp | |||
| @@ -199,10 +199,10 @@ static std::pair<u32, s32> GetAddrInfoRequestImpl(Kernel::HLERequestContext& ctx | |||
| 199 | "called with ignored parameters: use_nsd_resolve={}, unknown={}, process_id={}", | 199 | "called with ignored parameters: use_nsd_resolve={}, unknown={}, process_id={}", |
| 200 | parameters.use_nsd_resolve, parameters.unknown, parameters.process_id); | 200 | parameters.use_nsd_resolve, parameters.unknown, parameters.process_id); |
| 201 | 201 | ||
| 202 | const auto host_buffer = ctx.ReadBuffer(0); | 202 | const auto host_buffer = ctx.ReadBufferSpan(0); |
| 203 | const std::string host = Common::StringFromBuffer(host_buffer); | 203 | const std::string host = Common::StringFromBuffer(host_buffer); |
| 204 | 204 | ||
| 205 | const auto service_buffer = ctx.ReadBuffer(1); | 205 | const auto service_buffer = ctx.ReadBufferSpan(1); |
| 206 | const std::string service = Common::StringFromBuffer(service_buffer); | 206 | const std::string service = Common::StringFromBuffer(service_buffer); |
| 207 | 207 | ||
| 208 | addrinfo* addrinfo; | 208 | addrinfo* addrinfo; |
| @@ -243,4 +243,4 @@ void SFDNSRES::GetAddrInfoRequestWithOptions(Kernel::HLERequestContext& ctx) { | |||
| 243 | rb.Push(0); | 243 | rb.Push(0); |
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | } // namespace Service::Sockets \ No newline at end of file | 246 | } // namespace Service::Sockets |
diff --git a/src/core/hle/service/ssl/ssl.cpp b/src/core/hle/service/ssl/ssl.cpp index 3735e0452..10851f08f 100644 --- a/src/core/hle/service/ssl/ssl.cpp +++ b/src/core/hle/service/ssl/ssl.cpp | |||
| @@ -101,7 +101,7 @@ private: | |||
| 101 | void ImportServerPki(Kernel::HLERequestContext& ctx) { | 101 | void ImportServerPki(Kernel::HLERequestContext& ctx) { |
| 102 | IPC::RequestParser rp{ctx}; | 102 | IPC::RequestParser rp{ctx}; |
| 103 | const auto certificate_format = rp.PopEnum<CertificateFormat>(); | 103 | const auto certificate_format = rp.PopEnum<CertificateFormat>(); |
| 104 | const auto pkcs_12_certificates = ctx.ReadBuffer(0); | 104 | [[maybe_unused]] const auto pkcs_12_certificates = ctx.ReadBufferSpan(0); |
| 105 | 105 | ||
| 106 | constexpr u64 server_id = 0; | 106 | constexpr u64 server_id = 0; |
| 107 | 107 | ||
| @@ -113,13 +113,13 @@ private: | |||
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | void ImportClientPki(Kernel::HLERequestContext& ctx) { | 115 | void ImportClientPki(Kernel::HLERequestContext& ctx) { |
| 116 | const auto pkcs_12_certificate = ctx.ReadBuffer(0); | 116 | [[maybe_unused]] const auto pkcs_12_certificate = ctx.ReadBufferSpan(0); |
| 117 | const auto ascii_password = [&ctx] { | 117 | [[maybe_unused]] const auto ascii_password = [&ctx] { |
| 118 | if (ctx.CanReadBuffer(1)) { | 118 | if (ctx.CanReadBuffer(1)) { |
| 119 | return ctx.ReadBuffer(1); | 119 | return ctx.ReadBufferSpan(1); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | return std::vector<u8>{}; | 122 | return std::span<const u8>{}; |
| 123 | }(); | 123 | }(); |
| 124 | 124 | ||
| 125 | constexpr u64 client_id = 0; | 125 | constexpr u64 client_id = 0; |
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index f77cdbb43..9376e0902 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp | |||
| @@ -328,8 +328,8 @@ void Module::Interface::CalculateStandardUserSystemClockDifferenceByUser( | |||
| 328 | Clock::ClockSnapshot snapshot_a; | 328 | Clock::ClockSnapshot snapshot_a; |
| 329 | Clock::ClockSnapshot snapshot_b; | 329 | Clock::ClockSnapshot snapshot_b; |
| 330 | 330 | ||
| 331 | const auto snapshot_a_data = ctx.ReadBuffer(0); | 331 | const auto snapshot_a_data = ctx.ReadBufferSpan(0); |
| 332 | const auto snapshot_b_data = ctx.ReadBuffer(1); | 332 | const auto snapshot_b_data = ctx.ReadBufferSpan(1); |
| 333 | 333 | ||
| 334 | std::memcpy(&snapshot_a, snapshot_a_data.data(), sizeof(Clock::ClockSnapshot)); | 334 | std::memcpy(&snapshot_a, snapshot_a_data.data(), sizeof(Clock::ClockSnapshot)); |
| 335 | std::memcpy(&snapshot_b, snapshot_b_data.data(), sizeof(Clock::ClockSnapshot)); | 335 | std::memcpy(&snapshot_b, snapshot_b_data.data(), sizeof(Clock::ClockSnapshot)); |
| @@ -355,8 +355,8 @@ void Module::Interface::CalculateSpanBetween(Kernel::HLERequestContext& ctx) { | |||
| 355 | Clock::ClockSnapshot snapshot_a; | 355 | Clock::ClockSnapshot snapshot_a; |
| 356 | Clock::ClockSnapshot snapshot_b; | 356 | Clock::ClockSnapshot snapshot_b; |
| 357 | 357 | ||
| 358 | const auto snapshot_a_data = ctx.ReadBuffer(0); | 358 | const auto snapshot_a_data = ctx.ReadBufferSpan(0); |
| 359 | const auto snapshot_b_data = ctx.ReadBuffer(1); | 359 | const auto snapshot_b_data = ctx.ReadBufferSpan(1); |
| 360 | 360 | ||
| 361 | std::memcpy(&snapshot_a, snapshot_a_data.data(), sizeof(Clock::ClockSnapshot)); | 361 | std::memcpy(&snapshot_a, snapshot_a_data.data(), sizeof(Clock::ClockSnapshot)); |
| 362 | std::memcpy(&snapshot_b, snapshot_b_data.data(), sizeof(Clock::ClockSnapshot)); | 362 | std::memcpy(&snapshot_b, snapshot_b_data.data(), sizeof(Clock::ClockSnapshot)); |
diff --git a/src/core/hle/service/time/time_zone_service.cpp b/src/core/hle/service/time/time_zone_service.cpp index 961040bfc..6d05a66f1 100644 --- a/src/core/hle/service/time/time_zone_service.cpp +++ b/src/core/hle/service/time/time_zone_service.cpp | |||
| @@ -84,7 +84,7 @@ void ITimeZoneService::ToCalendarTime(Kernel::HLERequestContext& ctx) { | |||
| 84 | LOG_DEBUG(Service_Time, "called, posix_time=0x{:016X}", posix_time); | 84 | LOG_DEBUG(Service_Time, "called, posix_time=0x{:016X}", posix_time); |
| 85 | 85 | ||
| 86 | TimeZone::TimeZoneRule time_zone_rule{}; | 86 | TimeZone::TimeZoneRule time_zone_rule{}; |
| 87 | const auto buffer{ctx.ReadBuffer()}; | 87 | const auto buffer{ctx.ReadBufferSpan()}; |
| 88 | std::memcpy(&time_zone_rule, buffer.data(), buffer.size()); | 88 | std::memcpy(&time_zone_rule, buffer.data(), buffer.size()); |
| 89 | 89 | ||
| 90 | TimeZone::CalendarInfo calendar_info{}; | 90 | TimeZone::CalendarInfo calendar_info{}; |
| @@ -128,7 +128,7 @@ void ITimeZoneService::ToPosixTime(Kernel::HLERequestContext& ctx) { | |||
| 128 | IPC::RequestParser rp{ctx}; | 128 | IPC::RequestParser rp{ctx}; |
| 129 | const auto calendar_time{rp.PopRaw<TimeZone::CalendarTime>()}; | 129 | const auto calendar_time{rp.PopRaw<TimeZone::CalendarTime>()}; |
| 130 | TimeZone::TimeZoneRule time_zone_rule{}; | 130 | TimeZone::TimeZoneRule time_zone_rule{}; |
| 131 | std::memcpy(&time_zone_rule, ctx.ReadBuffer().data(), sizeof(TimeZone::TimeZoneRule)); | 131 | std::memcpy(&time_zone_rule, ctx.ReadBufferSpan().data(), sizeof(TimeZone::TimeZoneRule)); |
| 132 | 132 | ||
| 133 | s64 posix_time{}; | 133 | s64 posix_time{}; |
| 134 | if (const Result result{time_zone_content_manager.GetTimeZoneManager().ToPosixTime( | 134 | if (const Result result{time_zone_content_manager.GetTimeZoneManager().ToPosixTime( |
diff --git a/src/core/reporter.cpp b/src/core/reporter.cpp index 77821e047..59dfb8767 100644 --- a/src/core/reporter.cpp +++ b/src/core/reporter.cpp | |||
| @@ -312,7 +312,7 @@ void Reporter::SaveUnimplementedAppletReport( | |||
| 312 | } | 312 | } |
| 313 | 313 | ||
| 314 | void Reporter::SavePlayReport(PlayReportType type, u64 title_id, | 314 | void Reporter::SavePlayReport(PlayReportType type, u64 title_id, |
| 315 | const std::vector<std::vector<u8>>& data, | 315 | const std::vector<std::span<const u8>>& data, |
| 316 | std::optional<u64> process_id, std::optional<u128> user_id) const { | 316 | std::optional<u64> process_id, std::optional<u128> user_id) const { |
| 317 | if (!IsReportingEnabled()) { | 317 | if (!IsReportingEnabled()) { |
| 318 | return; | 318 | return; |
diff --git a/src/core/reporter.h b/src/core/reporter.h index 9fdb9d6c1..bb11f8e7c 100644 --- a/src/core/reporter.h +++ b/src/core/reporter.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | #include <array> | 6 | #include <array> |
| 7 | #include <optional> | 7 | #include <optional> |
| 8 | #include <span> | ||
| 8 | #include <string> | 9 | #include <string> |
| 9 | #include <vector> | 10 | #include <vector> |
| 10 | #include "common/common_types.h" | 11 | #include "common/common_types.h" |
| @@ -56,7 +57,8 @@ public: | |||
| 56 | System, | 57 | System, |
| 57 | }; | 58 | }; |
| 58 | 59 | ||
| 59 | void SavePlayReport(PlayReportType type, u64 title_id, const std::vector<std::vector<u8>>& data, | 60 | void SavePlayReport(PlayReportType type, u64 title_id, |
| 61 | const std::vector<std::span<const u8>>& data, | ||
| 60 | std::optional<u64> process_id = {}, std::optional<u128> user_id = {}) const; | 62 | std::optional<u64> process_id = {}, std::optional<u128> user_id = {}) const; |
| 61 | 63 | ||
| 62 | // Used by error applet | 64 | // Used by error applet |