pgtab.c File Reference

Go to the source code of this file.

Classes

struct  pgtab_object
 "Page-table" object More...

Functions

ddekit_addr_t ddekit_pgtab_get_physaddr (const void *virtual)
 Get physical address for virtual address.
ddekit_addr_t ddekit_pgtab_get_virtaddr (const ddekit_addr_t physical)
 Get virtual address for physical address.
int ddekit_pgtab_get_type (const void *virtual)
 Get type of VM region.
int ddekit_pgtab_get_size (const void *virtual)
 Get size of VM region.
void ddekit_pgtab_clear_region (void *virtual, int type)
 Clear virtual->physical mapping for VM region.
void ddekit_pgtab_set_region (void *virtual, ddekit_addr_t physical, int pages, int type)
 Set virtual->physical mapping for VM region.
void ddekit_pgtab_set_region_with_size (void *virt, ddekit_addr_t phys, int size, int type)
 Set virtual->physical mapping for VM region given a specific size in bytes.

Variables

static struct pgtab_object pa_list_head
 pa_list_head of page-table object list (for get_virtaddr())
static l4lock_t pa_list_lock = L4LOCK_UNLOCKED


Function Documentation

void ddekit_pgtab_clear_region ( void *  virtual,
int  type 
)

Clear virtual->physical mapping for VM region.

Parameters:
virtual virtual start address for region
type pgtab type for region

Definition at line 147 of file pgtab.c.

ddekit_addr_t ddekit_pgtab_get_physaddr ( const void *  virtual  ) 

Get physical address for virtual address.

Parameters:
virtual virtual address
Returns:
physical address or 0

Definition at line 65 of file pgtab.c.

int ddekit_pgtab_get_size ( const void *  virt  ) 

Get size of VM region.

Parameters:
virt virtual address
Returns:
VM region size (in bytes)

Definition at line 127 of file pgtab.c.

int ddekit_pgtab_get_type ( const void *  virt  ) 

Get type of VM region.

Parameters:
virt virtual address
Returns:
VM region type

Definition at line 113 of file pgtab.c.

ddekit_addr_t ddekit_pgtab_get_virtaddr ( const ddekit_addr_t  physical  ) 

Get virtual address for physical address.

Parameters:
physical physical address
Returns:
virtual address or 0

Definition at line 87 of file pgtab.c.

void ddekit_pgtab_set_region ( void *  virtual,
ddekit_addr_t  physical,
int  pages,
int  type 
)

Set virtual->physical mapping for VM region.

Parameters:
virtual virtual start address for region
physical physical start address for region
pages number of pages in region
type pgtab type for region

Definition at line 182 of file pgtab.c.

void ddekit_pgtab_set_region_with_size ( void *  virt,
ddekit_addr_t  phys,
int  size,
int  type 
)

Set virtual->physical mapping for VM region given a specific size in bytes.

Internally, DDEKit manages regions with pages. However, DDEs do not need to tangle with the underlying mechanism and therefore can use this function that takes care of translating a size to an amount of pages.

Definition at line 213 of file pgtab.c.


Variable Documentation

struct pgtab_object pa_list_head [static]

Initial value:

 
        {
                .va   = 0,
                .pa   = 0,
                .size = 0,
                .next = &pa_list_head,
                .prev = &pa_list_head
        }
pa_list_head of page-table object list (for get_virtaddr())

Definition at line 44 of file pgtab.c.

l4lock_t pa_list_lock = L4LOCK_UNLOCKED [static]

Definition at line 53 of file pgtab.c.


Generated on Wed Apr 11 06:39:16 2012 for DDE - The L4 Device Driver Environment by  doxygen 1.5.6