view TaskManager/kernel/schedule/Scheduler.cc @ 42:aa11038dbdc1

*** empty log message ***
author gongo
date Thu, 14 Feb 2008 18:27:37 +0900
parents
children 70a0ac46133e
line wrap: on
line source

#include "Scheduler.h"
#include "SchedNop.h"
#include "error.h"

void
Scheduler::init(void)
{
    init_impl();
    
    listBufFlg = 0;
    readBufFlg = 0;
    writeBufFlg = 0;
}

void
Scheduler::run(void)
{
    SchedTaskBase* taskTmp;
    task1 = new SchedNop();
    task2 = new SchedNop();
    task3 = new SchedNop();

    // main loop
    do {
	__debug("----------\n");
	task3->write();
	task2->exec();
	task1->read();

	taskTmp = task3;
	task3 = task2;
	task2 = task1;
	task1 = task1->next(this, taskTmp);
    } while (task1);

    delete task3;
    delete task2;
}

TaskListPtr
Scheduler::get_curListBuf(void)
{
    listBufFlg ^= 1;
    return listBuf[listBufFlg];
}


void *
Scheduler::get_curWriteBuf(void)
{
    writeBufFlg ^= 1;
    return writeBuf[writeBufFlg];
}


void*
Scheduler::get_curReadBuf(void)
{
    readBufFlg ^= 1;
    return readBuf[readBufFlg];
}