Mercurial > hg > Members > kono > Cerium
annotate 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 |
rev | line source |
---|---|
274 | 1 #ifndef INCLUDED_TASK |
2 #define INCLUDED_TASK | |
3 | |
307 | 4 #include "base.h" |
5 #include "types.h" | |
6 #include "ListData.h" | |
274 | 7 |
8 #define MAX_PARAMS 8 | |
9 | |
497 | 10 class TaskQueue; |
518 | 11 class SchedTask; |
12 | |
13 | |
14 /*! | |
15 @class | |
16 | |
17 @brief | |
18 | |
19 Host に依存しない Task | |
20 | |
21 以下の三つの可変長データを含む | |
22 param | |
23 inData | |
24 outData | |
25 param は inData の最初の部分となる | |
26 | |
27 self はメインホストの中のHTaskのアドレスで、task id として使う | |
28 | |
29 */ | |
30 | |
497 | 31 |
274 | 32 class Task { |
33 public: // variables | |
34 | |
518 | 35 typedef void (*PostFunction)(SchedTask *s, void *read, void *write); |
36 | |
274 | 37 BASE_NEW_DELETE(Task); |
38 | |
39 int command; // 4 byte | |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
497
diff
changeset
|
40 int self; // 4 byte |
274 | 41 |
42 int param_size; // 4 byte | |
43 int param[MAX_PARAMS]; // 4*MAX_PARAMS byte | |
518 | 44 |
501
4a2c9ff53605
Cell inData/outData DMA removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
498
diff
changeset
|
45 ListData inData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); // 4 byte 64bit であるべき |
4a2c9ff53605
Cell inData/outData DMA removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
498
diff
changeset
|
46 ListData outData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); // 4 byte 64bit であるべき |
274 | 47 |
48 public: // functions | |
363 | 49 int add_inData_t(unsigned int addr, int size); // unsigned int ではなく 64bit |
50 int add_outData_t(unsigned int addr, int size); // unsigned int ではなく 64bit | |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
497
diff
changeset
|
51 int add_data(ListData &list, unsigned int addr, int size); |
274 | 52 int add_param(int param); |
518 | 53 void set_cpu(CPU_TYPE type); |
54 void set_post(PostFunction func, void *read, void *write); | |
274 | 55 |
56 #define add_inData(addr, size) \ | |
57 add_inData_t((unsigned int)(addr), (size)); | |
58 #define add_outData(addr, size) \ | |
59 add_outData_t((unsigned int)(addr), (size)); | |
60 }; | |
61 | |
62 typedef Task* TaskPtr; | |
63 | |
64 #endif |