view TaskManager/kernel/ppe/BufferManager.cc @ 391:492e60453124 draft

fix...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 07 Aug 2009 02:24:06 +0900
parents 028ffc9c0375
children
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include "BufferManager.h"

BufferManager::BufferManager(int num) : machineNum(num) {}

BufferManager::~BufferManager(void) { finish(); }

void
BufferManager::init(void)
{
    taskListImpl  = new TaskListInfo;
    taskQueueImpl = new TaskQueueInfo;
    htaskImpl     = new HTaskInfo;

    taskListImpl->init(machineNum*2);
    taskQueueImpl->init(TASK_MAX_SIZE*4);
    htaskImpl->init(TASK_MAX_SIZE*2);
}

TaskListPtr
BufferManager::create_taskList(void)
{
    return taskListImpl->create();
}

TaskQueuePtr
BufferManager::create_taskQueue(HTaskPtr task)
{
    return taskQueueImpl->create(task);
}

HTaskPtr
BufferManager::create_task(int cmd)
{
    return htaskImpl->create(cmd);
}

void
BufferManager::free_taskList(TaskListPtr q)
{
    taskListImpl->free(q);
}

void
BufferManager::free_taskQueue(TaskQueuePtr q)
{
    taskQueueImpl->free(q);
}

void
BufferManager::free_task(HTaskPtr task)
{
    htaskImpl->free(task);
}

void
BufferManager::finish(void)
{
    delete taskListImpl;
    delete taskQueueImpl;
    delete htaskImpl;
}

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

    list->length = 0;

    p = list->next;
    while (p) {
	p1 = p;
	p = p->next;
	taskListImpl->free(p1);
    }

    list->next = NULL;
    return list;
}