diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TaskManager/Cell/CellBufferManager.cc	Sat Feb 16 19:40:20 2008 +0900
@@ -0,0 +1,75 @@
+#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