Mercurial > hg > Members > kono > Cerium
view TaskManager/Cell/CellBufferManager.cc @ 58:7492eb28b577
*** empty log message ***
author | gongo |
---|---|
date | Sat, 16 Feb 2008 19:40:20 +0900 |
parents | 1f8a23cdeec3 |
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