SimpleKernel 1.17.0
Loading...
Searching...
No Matches
cpu_io.h File Reference
#include <atomic>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <mutex>
#include <thread>
#include <unordered_map>
#include "test_environment_state.hpp"
Include dependency graph for cpu_io.h:

Go to the source code of this file.

Classes

struct  cpu_io::TrapContext
 
struct  cpu_io::CalleeSavedContext
 

Namespaces

namespace  cpu_io
 
namespace  cpu_io::virtual_memory
 

Functions

void cpu_io::Pause ()
 
auto cpu_io::GetCurrentCoreId () -> size_t
 
void cpu_io::EnableInterrupt ()
 
void cpu_io::DisableInterrupt ()
 
bool cpu_io::GetInterruptStatus ()
 
void cpu_io::Mb ()
 
void cpu_io::Rmb ()
 
void cpu_io::Wmb ()
 
auto cpu_io::virtual_memory::GetUserPagePermissions (bool readable=true, bool writable=false, bool executable=false, bool global=false) -> uint64_t
 
auto cpu_io::virtual_memory::GetKernelPagePermissions (bool readable=true, bool writable=false, bool executable=false, bool global=false) -> uint64_t
 
void cpu_io::virtual_memory::SetPageDirectory (uint64_t pd)
 
auto cpu_io::virtual_memory::GetPageDirectory () -> uint64_t
 
void cpu_io::virtual_memory::EnablePage ()
 
void cpu_io::virtual_memory::FlushTLBAll ()
 
auto cpu_io::virtual_memory::GetTableEntryPermissions () -> uint64_t
 
auto cpu_io::virtual_memory::GetVirtualPageNumber (uint64_t virtual_addr, size_t level) -> uint64_t
 
auto cpu_io::virtual_memory::PageAlign (uint64_t addr) -> uint64_t
 
auto cpu_io::virtual_memory::PageAlignUp (uint64_t addr) -> uint64_t
 
auto cpu_io::virtual_memory::IsPageAligned (uint64_t addr) -> bool
 
auto cpu_io::virtual_memory::IsPageTableEntryValid (uint64_t pte) -> bool
 
auto cpu_io::virtual_memory::PageTableEntryToPhysical (uint64_t pte) -> uint64_t
 
auto cpu_io::virtual_memory::PhysicalToPageTableEntry (uint64_t physical_addr, uint64_t flags) -> uint64_t
 

Variables

static constexpr size_t cpu_io::virtual_memory::kPageSize = 4096
 
static constexpr size_t cpu_io::virtual_memory::kPteAttributeBits = 12
 
static constexpr size_t cpu_io::virtual_memory::kPageOffsetBits = 12
 
static constexpr size_t cpu_io::virtual_memory::kVpnBits = 9
 
static constexpr size_t cpu_io::virtual_memory::kVpnMask = 0x1FF
 
static constexpr size_t cpu_io::virtual_memory::kPageTableLevels = 4
 
static constexpr uint64_t cpu_io::virtual_memory::kValid = 0x1
 
static constexpr uint64_t cpu_io::virtual_memory::kWrite = 0x2
 
static constexpr uint64_t cpu_io::virtual_memory::kUser = 0x4
 
static constexpr uint64_t cpu_io::virtual_memory::kRead = 0x200
 
static constexpr uint64_t cpu_io::virtual_memory::kExec = 0x400
 
static constexpr uint64_t cpu_io::virtual_memory::kGlobal = 0x100