view TaskManager/Cell/CellBufferManager.cc @ 57:1f8a23cdeec3

*** empty log message ***
author gongo
date Sat, 16 Feb 2008 19:40:20 +0900
parents
children f50c74835a9b
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include "CellBufferManager.h"
#include "CellTaskListInfo.h"

void
BufferManager::init(void)
{
    tlistImpl  = new CellTaskListInfo;
    tqueueImpl = new TaskQueueInfo;
    htaskImpl  = new HTaskInfo;

    tlistImpl->init(machineNum*2);
    tqueueImpl->init(TASK_MAX_SIZE*4);
    htaskImpl->init(TASK_MAX_SIZE*2);
    
    machineTaskList = new TaskListPtr[machineNum];

    for (int i = 0; i < machineNum; i++) {
	machineTaskList[i] = tlistImpl->create();
    }
}

#if 0 // 継承するかもしれないので保存
void
BufferManager::append_activeTask(HTaskPtr task)
{
    TaskQueuePtr q;

    q = tqueueImpl->create(task);
    activeTaskQueue = tqueueImpl->append(activeTaskQueue, q);
}

void
BufferManager::append_waitTask(HTaskPtr task)
{
    TaskQueuePtr q;

    q = tqueueImpl->create(task);
    waitTaskQueue = tqueueImpl->append(waitTaskQueue, q);
}

TaskListPtr
BufferManager::get_available_taskList(void)
{
    TaskListPtr list, q;

    list = machineTaskList[0];

    while (list->next) list = list->next;

    if (list->length < TASK_MAX_SIZE) {
	return list;
    } else {
	q = tlistImpl->create();
	machineTaskList[0] = tlistImpl->append(machineTaskList[0], q);
	return q;
    }
}

void
BufferManager::clear_taskList(void)
{
    TaskListPtr p, p1;

    machineTaskList[0]->length = 0;

    p = machineTaskList[0]->next;
    while (p) {
	p1 = p;
	p = p->next;
	tlistImpl->free(p1);
    }
}
#endif