svc/kern/dd: remove MapDeviceAddressSpace()

This commit is contained in:
Michael Scire 2021-09-18 11:28:39 -07:00 committed by SciresM
parent 481ce12b7b
commit ce7dd55257
15 changed files with 53 additions and 238 deletions

View file

@ -115,64 +115,6 @@ namespace ams::dd {
return impl::DeviceAddressSpaceImpl::Unmap(das->device_handle, process_handle, process_address, size, device_address);
}
void InitializeDeviceAddressSpaceMapInfo(DeviceAddressSpaceMapInfo *info, DeviceAddressSpaceType *das, ProcessHandle process_handle, u64 process_address, size_t size, DeviceVirtualAddress device_address, MemoryPermission device_perm) {
/* Check pre-conditions. */
AMS_ASSERT(das->state == DeviceAddressSpaceType::State_Initialized);
AMS_ASSERT(util::IsAligned(process_address, os::MemoryPageSize));
AMS_ASSERT(util::IsAligned(device_address, os::MemoryPageSize));
AMS_ASSERT(util::IsAligned(size, os::MemoryPageSize));
AMS_ASSERT(process_address + size > process_address);
AMS_ASSERT(device_address + size > device_address);
AMS_ASSERT(size > 0);
info->last_mapped_size = 0;
info->process_address = process_address;
info->size = size;
info->device_start_address = device_address;
info->device_end_address = device_address + size;
info->process_handle = process_handle;
info->device_permission = device_perm;
info->device_address_space = das;
}
Result MapNextDeviceAddressSpaceRegion(size_t *out_mapped_size, DeviceAddressSpaceMapInfo *info) {
/* Check pre-conditions. */
AMS_ASSERT(info->last_mapped_size == 0);
size_t mapped_size = 0;
if (info->device_start_address < info->device_end_address) {
R_TRY(impl::DeviceAddressSpaceImpl::MapPartially(std::addressof(mapped_size), info->device_address_space->device_handle, info->process_handle, info->process_address, info->size, info->device_start_address, info->device_permission));
}
info->last_mapped_size = mapped_size;
*out_mapped_size = mapped_size;
return ResultSuccess();
}
void UnmapDeviceAddressSpaceRegion(DeviceAddressSpaceMapInfo *info) {
/* Check pre-conditions. */
const size_t last_mapped_size = info->last_mapped_size;
AMS_ASSERT(last_mapped_size > 0);
impl::DeviceAddressSpaceImpl::Unmap(info->device_address_space->device_handle, info->process_handle, info->process_address, last_mapped_size, info->device_start_address);
info->last_mapped_size = 0;
info->process_address += last_mapped_size;
info->device_start_address += last_mapped_size;
}
u64 GetMappedProcessAddress(DeviceAddressSpaceMapInfo *info) {
return info->process_address;
}
DeviceVirtualAddress GetMappedDeviceVirtualAddress(DeviceAddressSpaceMapInfo *info) {
return info->device_start_address;
}
size_t GetMappedSize(DeviceAddressSpaceMapInfo *info) {
return info->last_mapped_size;
}
Result AttachDeviceAddressSpace(DeviceAddressSpaceType *das, DeviceName device_name) {
/* Check pre-conditions. */
AMS_ASSERT(das->state == DeviceAddressSpaceType::State_Initialized);