Main Page   Modules   Alphabetical List   Data Structures   File List   Data Fields  

Toy Segment Manager
[Toy Memory Page Manager]


Data Structures

struct  SegList
 Structure defining the nodes of linked lists of segments. More...


Defines

#define SegEnd(x)   ((x)->pos + (x)->len)

Typedefs

typedef SegList SegList
 Structure defining the nodes of linked lists of segments.


Functions

int TMM_SegListSize (SegList *list)
 Returns size of list in nodes.

SegListTMM_OrderedInsert (SegList *list, SegList *node)
 Inserts a node into the list in sorted order.

void TMM_RemoveFromList (SegList *node)
 Deletes a node from the list. Does not deallocate.

SegListTMM_CopySegList (SegList *list)
 Makes a newly-allocated copy of a segment list.

SegListTMM_CreateSegList (int pos, int len, SegList *prev, SegList *next)
 Creates a new node for a segment list.

SegListTMM_SeekSegListHead (SegList *list)
 Returns the head of the passed list.

SegListTMM_SeekSegListEnd (SegList *list)
 Returns the tail of the passed list.

SegListTMM_AppendSegList (SegList *list, SegList *node)
 Appends a node or nodes to the end of the list.

int TMM_FreeSegList (SegList *list)
 Frees a linked list of segments from memory.

int TMM_CompSegList (const SegList *l1, const SegList *l2)
 Compares two segments for sorting.

SegListTMM_SortSegList (SegList *list)
 Sorts the list in ascending order of segment address.

SegListTMM_RemoveAreaFromSegList (SegList *list, int pos, int len)
 Removes a memory area from the list.

SegListTMM_MergeSegList (SegList *list)
 Merges end-to-end segments.

int TMM_AreaIntersectsSeg (ToySegment *seg1, ToySegment *seg2)
 Returns nonzero if the segments overlap, 0 if not.

SegListTMM_AddAreaToSegList (SegList *list, int pos, int len)
 Adds another segment to the list, if the new segment doesn't overlap with any existing ones.

void TMM_PrintSegList (SegList *list)
 Prints the list of segments.

int TMM_SubtractSegs (ToySegment *seg1, ToySegment *seg2, ToySegment segOut[2])
 Returns # of resultant segments.

int TMM_FindSegSpace (SegList *list, int n)
 Tries to find space for a segment int a list of free memory segments.


Typedef Documentation

typedef struct SegList SegList
 

Structure defining the nodes of linked lists of segments.

Doubly linked because they work without bother, and I'm lazy.


Function Documentation

SegList* TMM_AddAreaToSegList SegList   list,
int    pos,
int    len
 

Adds another segment to the list, if the new segment doesn't overlap with any existing ones.

Definition at line 146 of file ToySegmentList.c.

References len, pos, TMM_AppendSegList(), TMM_AreaIntersectsSeg(), TMM_CreateSegList(), TMM_MergeSegList(), TMM_SeekSegListHead(), and TMM_SortSegList().

SegList* TMM_AppendSegList SegList   list,
SegList   node
 

Appends a node or nodes to the end of the list.

Definition at line 344 of file ToySegmentList.c.

References SegList::next, SegList::prev, TMM_SeekSegListEnd(), and TMM_SeekSegListHead().

Referenced by TMM_AddAreaToSegList(), TMM_CopySegList(), and TMM_RemoveAreaFromSegList().

int TMM_AreaIntersectsSeg ToySegment   seg1,
ToySegment   seg2
 

Returns nonzero if the segments overlap, 0 if not.

Definition at line 420 of file ToySegmentList.c.

References len, and pos.

Referenced by TMM_AddAreaToSegList(), and TMM_SubtractSegs().

int TMM_CompSegList const SegList   l1,
const SegList   l2
 

Compares two segments for sorting.

Definition at line 215 of file ToySegmentList.c.

References pos, and SegList::seg.

Referenced by TMM_SortSegList().

SegList* TMM_CopySegList SegList   list
 

Makes a newly-allocated copy of a segment list.

Definition at line 132 of file ToySegmentList.c.

References len, SegList::next, pos, SegList::seg, TMM_AppendSegList(), TMM_CreateSegList(), and TMM_SeekSegListHead().

SegList* TMM_CreateSegList int    pos,
int    len,
SegList   prev,
SegList   next
 

Creates a new node for a segment list.

Definition at line 362 of file ToySegmentList.c.

References len, SegList::next, pos, SegList::prev, and SegList::seg.

Referenced by TMM_AddAreaToSegList(), TMM_AllocateHeap(), TMM_CopySegList(), TMM_Create(), TMM_PagedAllocateProcess(), TMM_ReallocateHeap(), and TMM_RemoveAreaFromSegList().

int TMM_FindSegSpace SegList   list,
int    n
 

Tries to find space for a segment int a list of free memory segments.

Definition at line 119 of file ToySegmentList.c.

References len, SegList::next, pos, SegList::seg, and TMM_SeekSegListHead().

int TMM_FreeSegList SegList   list
 

Frees a linked list of segments from memory.

Definition at line 403 of file ToySegmentList.c.

References SegList::next, and TMM_SeekSegListHead().

Referenced by TMM_EnablePaging(), TMM_Free(), TMM_PagedTerminateProcess(), and TMM_TerminateProcess().

SegList* TMM_MergeSegList SegList   list
 

Merges end-to-end segments.

Definition at line 182 of file ToySegmentList.c.

References len, SegList::next, SegList::prev, SegList::seg, and TMM_SeekSegListHead().

Referenced by TMM_AddAreaToSegList().

SegList* TMM_OrderedInsert SegList   list,
SegList   node
 

Inserts a node into the list in sorted order.

Note - not for use with circular lists.

Definition at line 66 of file ToySegmentList.c.

References SegList::next, pos, SegList::prev, SegList::seg, and TMM_SeekSegListHead().

Referenced by TMM_AllocateHeap(), and TMM_ReallocateHeap().

void TMM_PrintSegList SegList   list
 

Prints the list of segments.

Definition at line 329 of file ToySegmentList.c.

References len, SegList::next, pos, SegList::seg, and TMM_SeekSegListHead().

SegList* TMM_RemoveAreaFromSegList SegList   list,
int    pos,
int    len
 

Removes a memory area from the list.

Definition at line 248 of file ToySegmentList.c.

References len, SegList::next, pos, SegList::prev, SegList::seg, TMM_AppendSegList(), TMM_CreateSegList(), TMM_SeekSegListEnd(), TMM_SeekSegListHead(), TMM_SortSegList(), and TMM_SubtractSegs().

void TMM_RemoveFromList SegList   node
 

Deletes a node from the list. Does not deallocate.

Definition at line 19 of file ToySegmentList.c.

References SegList::next, and SegList::prev.

Referenced by TMM_FreeHeap(), and TMM_ReallocateHeap().

SegList* TMM_SeekSegListEnd SegList   list
 

Returns the tail of the passed list.

Definition at line 392 of file ToySegmentList.c.

References SegList::next.

Referenced by TMM_AppendSegList(), and TMM_RemoveAreaFromSegList().

SegList* TMM_SeekSegListHead SegList   list
 

Returns the head of the passed list.

Definition at line 381 of file ToySegmentList.c.

References SegList::prev.

Referenced by TMM_AddAreaToSegList(), TMM_AppendSegList(), TMM_CopySegList(), TMM_FindSegSpace(), TMM_FreeSegList(), TMM_MergeSegList(), TMM_OrderedInsert(), TMM_PrintProcessMemory(), TMM_PrintProcessTable(), TMM_PrintSegList(), TMM_RemoveAreaFromSegList(), TMM_SegListSize(), TMM_SortSegList(), TMM_StoreInteger(), TMM_StoreString(), and TMM_TerminateProcess().

int TMM_SegListSize SegList   list
 

Returns size of list in nodes.

Definition at line 97 of file ToySegmentList.c.

References SegList::next, and TMM_SeekSegListHead().

SegList* TMM_SortSegList SegList   list
 

Sorts the list in ascending order of segment address.

Definition at line 222 of file ToySegmentList.c.

References SegList::next, SegList::prev, SegList::seg, TMM_CompSegList(), and TMM_SeekSegListHead().

Referenced by TMM_AddAreaToSegList(), and TMM_RemoveAreaFromSegList().

int TMM_SubtractSegs ToySegment   seg1,
ToySegment   seg2,
ToySegment    segOut[2]
 

Returns # of resultant segments.

-1 means they don't intersect. 0 means they cancelled out. 1 or 2 means the result is in segOut.

Definition at line 438 of file ToySegmentList.c.

References len, pos, and TMM_AreaIntersectsSeg().

Referenced by TMM_RemoveAreaFromSegList().


Generated on Fri Apr 4 14:29:08 2003 for ToyMem by doxygen1.3-rc3