view TaskManager/kernel/memory/MemList.cc @ 368:126f90e8582c

change TaskManager
author aaa
date Mon, 27 Jul 2009 18:26:50 +0900
parents TaskManager/kernel/memory/MemList.cpp@c7a4818cdfcb
children 03ae2929c931
line wrap: on
line source

/*!
  MemList は空にならない。最低1個は要素が入っていて
  1個目は特別扱いする。getFirst すると first->next を返す
 */

#include "MemorySegment.h"

/*!
  最初の1個は特別扱いなので、それの後に追加していく
 */
void
addFirst(MemorySegment* e)
{
    e->prev = first;
    e->next = first->next;
    first->next->prev = e;
    first->next = e;
}

void
addLast(MemorySegment* e)
{
    e->next = first;
    e->prev = last;
    last->next = e;
    last = e;
}

MemorySegment
getFirst()
{
    return first->next;
}

MemorySegment
getLast()
{
    return last;
}

int
remove(MemorySegment* e)
{
    e->prev->next = e->next;
    if (e->next != NULL) {
	e->next->prev = e->prev;
    }
    e->prev = NULL;
    e->next = NULL;

    return 1;
}

void
moveToFirst(MemorySegment* e)
{
    remove(e);
    addFirst(e);
}