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

This commit is contained in:
Michael Scire authored and SciresM committed 2022-03-21 17:21:44 -07:00
1 parent 9a38be201a
commit 64a97576d0
756 files changed
+33359 -9372

No files matched your search

@@ -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();
}
}