asid.c File Reference

ASID management. More...

Include dependency graph for asid.c:

Go to the source code of this file.

Functions

 SPINLOCK_INITIALIZE (asidlock)
asid_t asid_get (void)
void asid_put (asid_t asid)

Variables

static count_t asids_allocated = 0


Detailed Description

Modern processor architectures optimize TLB utilization by using ASIDs (a.k.a. memory contexts on sparc64 and region identifiers on ia64). These ASIDs help to associate each TLB item with an address space, thus making finer-grained TLB invalidation possible.

Unfortunatelly, there are usually less ASIDs available than there can be unique as_t structures (i.e. address spaces recognized by the kernel).

When system runs short of ASIDs, it will attempt to steal ASID from an address space that has not been active for a while.

This code depends on the fact that ASIDS_ALLOCABLE is greater than number of supported CPUs (i.e. the amount of concurently active address spaces).

Architectures that don't have hardware support for address spaces do not compile with this file.

Definition in file asid.c.


Generated on Sun Jun 18 17:28:12 2006 for HelenOS Kernel (ppc64) by  doxygen 1.4.6