The Pedigree Project 0.1
PosixMemoryLockAccount.cc
1/*
2 * Copyright (c) 2026, Pedigree Developers
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted.
6 */
7
8#include "PosixMemoryLockAccount.h"
9#include "pedigree/kernel/processor/PhysicalMemoryManager.h"
10
12
13PosixMemoryLockAccount::PosixMemoryLockAccount(const PosixMemoryLockAccount& parent)
16 m_Limit = parent.m_Limit;
17}
18
19bool PosixMemoryLockAccount::permitsTotalPages(size_t total, bool privileged) const {
20 return privileged || total <= m_Limit.current / PhysicalMemoryManager::getPageSize();
21}
22
23PosixMemoryLockAccount::LimitStatus PosixMemoryLockAccount::setLimit(const LinuxRlimit64& limit,
24 bool privileged) {
25 if (limit.current > limit.maximum)
26 return LimitStatus::Invalid;
27 if (limit.maximum > m_Limit.maximum && !privileged)
28 return LimitStatus::PermissionDenied;
29 m_Limit = limit;
30 return LimitStatus::Success;
31}
Memory-mapped file interface.
static MemoryMapManager & instance()