1// SPDX-License-Identifier: GPL-3.0-or-later
2
3#pragma once
4
5#include "mos/syslog/syslog.hpp"
6#include "mos/types.hpp"
7
8#include <mos/mm/mm_types.h>
9
10enum VMFlag : unsigned int
11{
12 VM_NONE = 0,
13 VM_READ = MEM_PERM_READ, // 1 << 0
14 VM_WRITE = MEM_PERM_WRITE, // 1 << 1
15 VM_EXEC = MEM_PERM_EXEC, // 1 << 2
16
17 VM_USER = 1 << 3,
18 VM_WRITE_THROUGH = 1 << 4,
19 VM_CACHE_DISABLED = 1 << 5,
20 VM_GLOBAL = 1 << 6,
21
22 // composite flags (for convenience)
23 VM_RW = VM_READ | VM_WRITE,
24 VM_RX = VM_READ | VM_EXEC,
25 VM_RWX = VM_READ | VM_WRITE | VM_EXEC,
26 VM_USER_RW = VM_USER | VM_RW,
27 VM_USER_RX = VM_USER | VM_RX,
28 VM_USER_RO = VM_USER | VM_READ,
29 VM_USER_RWX = VM_USER | VM_RWX,
30};
31MOS_ENUM_FLAGS(VMFlag, VMFlags);
32
33inline mos::SyslogStreamWriter operator<<(mos::SyslogStreamWriter stream, VMFlags flags)
34{
35 return stream << (flags.test(b: VM_READ) ? 'r' : '-') << (flags.test(b: VM_WRITE) ? 'w' : '-') << (flags.test(b: VM_EXEC) ? 'x' : '-');
36}
37