ams: support building unit test programs on windows/linux/macos

This commit is contained in:
Michael Scire
2022-03-06 12:08:20 -08:00
committed by SciresM
parent 9a38be201a
commit 64a97576d0
756 changed files with 33359 additions and 9372 deletions

View File

@@ -14,25 +14,54 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stratosphere.hpp>
#include "impl/os_vamm_manager.hpp"
namespace ams::os {
namespace {
void InitializeVirtualAddressMemory() {
return impl::GetVammManager().InitializeIfEnabled();
}
/* TODO: Remove, add VammManager/horizon-impl */
size_t GetSystemResourceSize() {
u64 v;
if (R_SUCCEEDED(svc::GetInfo(std::addressof(v), svc::InfoType_SystemResourceSizeTotal, os::GetCurrentProcessHandle(), 0))) {
return v;
} else {
return 0;
}
}
Result AllocateAddressRegion(uintptr_t *out, size_t size) {
AMS_ASSERT(size > 0);
AMS_ASSERT(util::IsAligned(size, MemoryPageSize));
R_RETURN(impl::GetVammManager().AllocateAddressRegion(out, size));
}
Result AllocateMemory(uintptr_t *out, size_t size) {
AMS_ASSERT(size > 0);
AMS_ASSERT(util::IsAligned(size, MemoryPageSize));
R_RETURN(impl::GetVammManager().AllocateMemory(out, size));
}
Result AllocateMemoryPages(uintptr_t address, size_t size) {
AMS_ASSERT(size > 0);
AMS_ASSERT(util::IsAligned(size, MemoryPageSize));
AMS_ASSERT(util::IsAligned(address, MemoryPageSize));
R_RETURN(impl::GetVammManager().AllocateMemoryPages(address, size));
}
Result FreeAddressRegion(uintptr_t address) {
R_RETURN(impl::GetVammManager().FreeAddressRegion(address));
}
Result FreeMemoryPages(uintptr_t address, size_t size) {
AMS_ASSERT(size > 0);
AMS_ASSERT(util::IsAligned(size, MemoryPageSize));
AMS_ASSERT(util::IsAligned(address, MemoryPageSize));
R_RETURN(impl::GetVammManager().FreeMemoryPages(address, size));
}
VirtualAddressMemoryResourceUsage GetVirtualAddressMemoryResourceUsage() {
return impl::GetVammManager().GetVirtualAddressMemoryResourceUsage();
}
bool IsVirtualAddressMemoryEnabled() {
return GetSystemResourceSize() > 0;
return impl::VammManager::IsVirtualAddressMemoryEnabled();
}
}