My Project
Public Member Functions | Data Fields
vspace::internals::Block Struct Reference

#include <vspace.h>

Public Member Functions

bool is_free ()
 
int level ()
 
void mark_as_allocated (vaddr_t vaddr, int level)
 
void mark_as_free (int level)
 

Data Fields

vaddr_t prev
 
vaddr_t next
 
size_t data [1]
 

Detailed Description

Definition at line 196 of file vspace.h.

Member Function Documentation

◆ is_free()

bool vspace::internals::Block::is_free ( )
inline

Definition at line 210 of file vspace.h.

210 {
211 return (prev & 3) != 1;
212 }

◆ level()

int vspace::internals::Block::level ( )
inline

Definition at line 213 of file vspace.h.

213 {
214 if (is_free())
215 return (int) data[0];
216 else
217 return (int) (prev >> (LOG2_MAX_SEGMENTS + 2));
218 }
static const int LOG2_MAX_SEGMENTS
Definition: vspace.h:89

◆ mark_as_allocated()

void vspace::internals::Block::mark_as_allocated ( vaddr_t  vaddr,
int  level 
)
inline

Definition at line 219 of file vspace.h.

219 {
220 vaddr_t bits = level;
221 bits <<= LOG2_MAX_SEGMENTS;
222 bits |= vaddr >> LOG2_SEGMENT_SIZE;
223 bits <<= 2;
224 bits |= 1;
225 prev = bits;
226 next = 0;
227 }
size_t vaddr_t
Definition: vspace.h:81
static const int LOG2_SEGMENT_SIZE
Definition: vspace.h:88

◆ mark_as_free()

void vspace::internals::Block::mark_as_free ( int  level)
inline

Definition at line 228 of file vspace.h.

228 {
229 data[0] = level;
230 }

Field Documentation

◆ data

size_t vspace::internals::Block::data[1]

Definition at line 209 of file vspace.h.

◆ next

vaddr_t vspace::internals::Block::next

Definition at line 208 of file vspace.h.

◆ prev

vaddr_t vspace::internals::Block::prev

Definition at line 207 of file vspace.h.


The documentation for this struct was generated from the following file: