orbis: log out of fmem/dmem budget

This commit is contained in:
DH 2025-11-30 20:38:19 +03:00
parent eeb3de8f74
commit c650ac482b
2 changed files with 12 additions and 0 deletions

View file

@ -68,6 +68,7 @@ orbis::fmem::allocate(std::uint64_t size) {
0, size, allocation, kernel::AllocationFlags::NoMerge, vmem::kPageSize);
if (errc != std::errc{}) {
rx::println(stderr, "fmem: failed to allocate {:#x} bytes", size);
return {{}, toErrorCode(errc)};
}

View file

@ -445,6 +445,8 @@ std::pair<rx::AddressRange, orbis::ErrorCode> orbis::vmem::mapFile(
if (blockFlags & BlockFlags::FlexibleMemory) {
if (!budget->acquire(BudgetResource::Fmem, size)) {
rx::println(stderr, "map: fmem budget: failed to allocate {:#x} bytes",
size);
return {{}, ErrorCode::INVAL};
}
@ -457,6 +459,8 @@ std::pair<rx::AddressRange, orbis::ErrorCode> orbis::vmem::mapFile(
if (blockFlags & BlockFlags::DirectMemory) {
if (!budget->acquire(BudgetResource::Dmem, size)) {
rx::println(stderr, "map: dmem budget: failed to allocate {:#x} bytes",
size);
return {{}, ErrorCode::INVAL};
}
@ -538,6 +542,10 @@ std::pair<rx::AddressRange, orbis::ErrorCode> orbis::vmem::mapDirect(
ScopedBudgetAcquire dmemResource(process->getBudget(), BudgetResource::Dmem,
directRange.size());
if (!dmemResource) {
rx::println(stderr,
"mapDirect: dmem budget: failed to allocate {:#x} bytes",
directRange.size());
return {{}, ErrorCode::INVAL};
}
@ -630,6 +638,9 @@ orbis::vmem::mapFlex(Process *process, std::uint64_t size,
ScopedBudgetAcquire fmemResource(process->getBudget(), BudgetResource::Fmem,
size);
if (!fmemResource) {
rx::println(stderr, "mapFlex: fmem budget: failed to allocate {:#x} bytes",
size);
return {{}, ErrorCode::INVAL};
}