Mercurial > hg > Members > kono > Cerium
view TaskManager/kernel/ppe/Task.h @ 518:125a72948e44
....
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 16 Oct 2009 17:57:17 +0900 |
parents | 4a2c9ff53605 |
children | 5c76db2a07fa |
line wrap: on
line source
#ifndef INCLUDED_TASK #define INCLUDED_TASK #include "base.h" #include "types.h" #include "ListData.h" #define MAX_PARAMS 8 class TaskQueue; class SchedTask; /*! @class @brief Host に依存しない Task 以下の三つの可変長データを含む param inData outData param は inData の最初の部分となる self はメインホストの中のHTaskのアドレスで、task id として使う */ class Task { public: // variables typedef void (*PostFunction)(SchedTask *s, void *read, void *write); BASE_NEW_DELETE(Task); int command; // 4 byte int self; // 4 byte int param_size; // 4 byte int param[MAX_PARAMS]; // 4*MAX_PARAMS byte ListData inData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); // 4 byte 64bit であるべき ListData outData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); // 4 byte 64bit であるべき public: // functions int add_inData_t(unsigned int addr, int size); // unsigned int ではなく 64bit int add_outData_t(unsigned int addr, int size); // unsigned int ではなく 64bit int add_data(ListData &list, unsigned int addr, int size); int add_param(int param); void set_cpu(CPU_TYPE type); void set_post(PostFunction func, void *read, void *write); #define add_inData(addr, size) \ add_inData_t((unsigned int)(addr), (size)); #define add_outData(addr, size) \ add_outData_t((unsigned int)(addr), (size)); }; typedef Task* TaskPtr; #endif