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: