Mercurial > hg > Members > kono > Cerium
view TaskManager/kernel/schedule/TaskGroup.cc @ 499:eacbcdb23986
still fixing...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 11 Oct 2009 15:42:00 +0900 |
parents | 0b933bef0328 |
children | 14428eda75ba |
line wrap: on
line source
#include "TaskGroup.h" #include <stdlib.h> void TaskGroup::add(TaskPtr add_task) { struct groupQueue *q = (struct groupQueue *)malloc(sizeof(struct groupQueue)); q->next = group; group = q; } void TaskGroup::remove(TaskPtr delete_task) { struct groupQueue * p = group; struct groupQueue * p1; if (p == NULL) return; if (p->task == delete_task) { group = group->next; free( p); } else { p1 = p->next; while (p1 && p1->task != delete_task) { p1 = p1->next; p = p->next; } if (p1) { p->next = p1->next; free( p1); } } } /** * 自分が持つ TaskGroup に Task が残っていれば NULL を返す。 * もう全てのタスクが終了していれば、この TaskGroup を作った * (一番最初にタスク内タスク生成を行った)タスクが PPE に返すべきだった * command を返す。 */ unsigned int TaskGroup::status() { /** * bool の * true == 1; * false == 0; * って保証されてるんだっけ? */ #if 1 return (group == NULL) * command; #else if (group.empty()) { return command; } else { return 0; } #endif }