Mercurial > hg > Game > Cerium
view TaskManager/kernel/ppe/HTask.h @ 700:ef08dd70eafb draft
fix fix ...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Dec 2009 12:16:52 +0900 |
parents | ecf63089f5bb |
children | 0c8ad8d99656 |
line wrap: on
line source
#ifndef INCLUDED_HTASK #define INCLUDED_HTASK #include "base.h" #include "types.h" #include "Task.h" #include "TaskQueueInfo.h" class TaskManagerImpl; class SchedTask; typedef void (*PostFunction)(SchedTask *s, void *read, void *write); /*! @class @brief Cerium の Task で、spawn() でキューに格納されて順次実行される。 cpu の指定があれば並列に実行される。 特定の Task を待ち合わせる事が可能。 Task の入出力は dma などで copy される。 */ #ifdef SIMPLE_TASK #include "SimpleTask.h" class HTask : public SimpleTask { #else class HTask : public Task { #endif public: BASE_NEW_DELETE(HTask); TaskQueueInfo *wait_me; // List of task waiting for me TaskQueueInfo *wait_i; // List of task for which I am waiting PostFunction post_func; void *post_arg1; void *post_arg2; CPU_TYPE cpu_type; TaskManagerImpl *mimpl; HTask *waiter; HTask *next; HTask *prev; void spawn(); void wait_for(HTask *); void set_cpu(CPU_TYPE type); void set_post(PostFunction func, void *read, void *write); #ifdef SIMPLE_TASK Task *create_task_array(int task_id, int num_task, int num_param, int num_inData, int num_outData); Task *next_task_array(int task_id, Task *t); void spawn_task_array(Task *t); #endif }; typedef HTask* HTaskPtr; #endif