Mercurial > hg > Game > Atoc
comparison include/spe_process.h @ 0:42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 13:44:18 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:42f240cc4bc6 |
---|---|
1 /** | |
2 * spe_process.h | |
3 * SPE プロセスマネージャ spe_manager | |
4 * SPE プロセスに関する定数や構造体 | |
5 */ | |
6 | |
7 #ifndef INCLUDE__SPE_PROCESS_H | |
8 #define INCLUDE__SPE_PROCESS_H | |
9 | |
10 | |
11 // SPE プロセスの状態 | |
12 #define SPE_PROCESS_CONTEXT_STATUS_OPENED 0 // コンテキストを open した | |
13 #define SPE_PROCESS_CONTEXT_STATUS_WRITTEN 1 // コンテキストデータを書き込んだ | |
14 #define SPE_PROCESS_CONTEXT_STATUS_WAITING 2 // プロセスの実行を待っている | |
15 #define SPE_PROCESS_CONTEXT_STATUS_RUNNING 3 // プロセスが実行中である | |
16 #define SPE_PROCESS_CONTEXT_STATUS_FINISHED 4 // プロセスの実行が終了した | |
17 #define SPE_PROCESS_CONTEXT_STATUS_NOT_RELEASED 5 // 実行は終わったがコンテキストがまだ release されていない | |
18 /* | |
19 #define SPE_PROCESS_STATUS_UNEXECUTED 0 // まだ SPE に実行されていない | |
20 #define SPE_PROCESS_STATUS_WAITING 1 // SPE が実行するのを待っている | |
21 #define SPE_PROCESS_STATUS_EXECUTED 2 // SPE がプロセスを実行中である | |
22 #define SPE_PROCESS_STATUS_SUSPENDED 3 // SPE プロセスが中断している (未実装) | |
23 #define SPE_PROCESS_STATUS_FINISHED 4 // SPE プロセスの実行が完了した | |
24 */ | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 /** | |
33 * spe_process_context_write_data_t | |
34 * SPE プロセスコンテキスト write ハンドラ構造体 | |
35 */ | |
36 typedef struct | |
37 { | |
38 //[ 0] | |
39 uint64_t pgm_start; // SPE プログラムの先頭アドレス (mmap 等を利用する) | |
40 //( 8) | |
41 uint64_t arg; // 引数 | |
42 //[16] | |
43 uint64_t dat_start; // データの先頭アドレス (mmap 等を利用する) | |
44 //(24) | |
45 int32_t pid; // 登録側プロセス ID | |
46 uint32_t pgm_size; // SPE プログラムサイズ | |
47 //[32] | |
48 uint32_t dat_size; // データサイズ | |
49 int32_t reserved[7]; // 予約済 | |
50 //[64] | |
51 } | |
52 spe_process_context_write_data_t; | |
53 | |
54 | |
55 /** | |
56 * spe_process_context_read_data_t | |
57 * SPE プロセスコンテキスト read ハンドラ構造体 | |
58 */ | |
59 typedef struct | |
60 { | |
61 //[ 0] | |
62 uint64_t ret; // SPE プロセスの戻り値 | |
63 //( 8) | |
64 int32_t spe_pid; // SPE プロセス ID (登録側の pid ではない) | |
65 volatile int32_t status; // SPE プロセスの状態 | |
66 //[16] | |
67 int32_t spe_no; // プロセスの実行を担当した SPE (暫定) | |
68 int32_t reserved[3]; // 予約済 | |
69 //[32] | |
70 } | |
71 spe_process_context_read_data_t; | |
72 | |
73 | |
74 /** | |
75 * spe_process_context_t | |
76 * SPE プロセスコンテキスト構造体 | |
77 */ | |
78 typedef struct | |
79 { | |
80 spe_process_context_write_data_t write; | |
81 spe_process_context_read_data_t read; | |
82 } | |
83 spe_process_context_t; | |
84 | |
85 | |
86 /** | |
87 * spe_process_context_list_t | |
88 * SPE プロセスコンテキストの双方向リスト | |
89 */ | |
90 typedef struct spe_process_context_list | |
91 { | |
92 spe_process_context_t context __attribute__((aligned(16))); | |
93 struct spe_process_context_list *prev_process; | |
94 struct spe_process_context_list *next_process; | |
95 } | |
96 spe_process_context_list_t; | |
97 | |
98 | |
99 #endif /*INCLUDE__SPE_PROCESS_H*/ |