[VFS] Rewrote STFS to use memory mapping
- Replaced old-style buffer, buffer_length with std::span - Added STFS and SVOD specific Entry and File classes - Other smaller improvements
This commit is contained in:
committed by
Radosław Gliński
parent
e85c2392ba
commit
fe739208b6
@@ -143,12 +143,14 @@ X_STATUS XFile::Read(uint32_t buffer_guest_address, uint32_t buffer_length,
|
||||
result = X_STATUS_ACCESS_VIOLATION;
|
||||
} else {
|
||||
result = file_->ReadSync(
|
||||
buffer_physical_heap
|
||||
? memory()->TranslatePhysical(
|
||||
buffer_physical_heap->GetPhysicalAddress(
|
||||
buffer_guest_address))
|
||||
: memory()->TranslateVirtual(buffer_guest_address),
|
||||
buffer_length, size_t(byte_offset), &bytes_read);
|
||||
std::span<uint8_t>(
|
||||
buffer_physical_heap
|
||||
? memory()->TranslatePhysical(
|
||||
buffer_physical_heap->GetPhysicalAddress(
|
||||
buffer_guest_address))
|
||||
: memory()->TranslateVirtual(buffer_guest_address),
|
||||
buffer_length),
|
||||
size_t(byte_offset), &bytes_read);
|
||||
if (XSUCCEEDED(result)) {
|
||||
if (buffer_physical_heap) {
|
||||
buffer_physical_heap->TriggerCallbacks(
|
||||
@@ -245,9 +247,10 @@ X_STATUS XFile::Write(uint32_t buffer_guest_address, uint32_t buffer_length,
|
||||
}
|
||||
|
||||
size_t bytes_written = 0;
|
||||
X_STATUS result =
|
||||
file_->WriteSync(memory()->TranslateVirtual(buffer_guest_address),
|
||||
buffer_length, size_t(byte_offset), &bytes_written);
|
||||
X_STATUS result = file_->WriteSync(
|
||||
std::span<uint8_t>(memory()->TranslateVirtual(buffer_guest_address),
|
||||
buffer_length),
|
||||
size_t(byte_offset), &bytes_written);
|
||||
if (XSUCCEEDED(result)) {
|
||||
position_ += bytes_written;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user