Mercurial > hg > Game > Atoc
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/spe_process.h Tue Sep 08 13:44:18 2009 +0900 @@ -0,0 +1,99 @@ +/** + * spe_process.h + * SPE プロセスマネージャ spe_manager + * SPE プロセスに関する定数や構造体 + */ + +#ifndef INCLUDE__SPE_PROCESS_H +#define INCLUDE__SPE_PROCESS_H + + +// SPE プロセスの状態 +#define SPE_PROCESS_CONTEXT_STATUS_OPENED 0 // コンテキストを open した +#define SPE_PROCESS_CONTEXT_STATUS_WRITTEN 1 // コンテキストデータを書き込んだ +#define SPE_PROCESS_CONTEXT_STATUS_WAITING 2 // プロセスの実行を待っている +#define SPE_PROCESS_CONTEXT_STATUS_RUNNING 3 // プロセスが実行中である +#define SPE_PROCESS_CONTEXT_STATUS_FINISHED 4 // プロセスの実行が終了した +#define SPE_PROCESS_CONTEXT_STATUS_NOT_RELEASED 5 // 実行は終わったがコンテキストがまだ release されていない +/* +#define SPE_PROCESS_STATUS_UNEXECUTED 0 // まだ SPE に実行されていない +#define SPE_PROCESS_STATUS_WAITING 1 // SPE が実行するのを待っている +#define SPE_PROCESS_STATUS_EXECUTED 2 // SPE がプロセスを実行中である +#define SPE_PROCESS_STATUS_SUSPENDED 3 // SPE プロセスが中断している (未実装) +#define SPE_PROCESS_STATUS_FINISHED 4 // SPE プロセスの実行が完了した +*/ + + + + + + + +/** + * spe_process_context_write_data_t + * SPE プロセスコンテキスト write ハンドラ構造体 + */ +typedef struct +{ +//[ 0] + uint64_t pgm_start; // SPE プログラムの先頭アドレス (mmap 等を利用する) +//( 8) + uint64_t arg; // 引数 +//[16] + uint64_t dat_start; // データの先頭アドレス (mmap 等を利用する) +//(24) + int32_t pid; // 登録側プロセス ID + uint32_t pgm_size; // SPE プログラムサイズ +//[32] + uint32_t dat_size; // データサイズ + int32_t reserved[7]; // 予約済 +//[64] +} +spe_process_context_write_data_t; + + +/** + * spe_process_context_read_data_t + * SPE プロセスコンテキスト read ハンドラ構造体 + */ +typedef struct +{ +//[ 0] + uint64_t ret; // SPE プロセスの戻り値 +//( 8) + int32_t spe_pid; // SPE プロセス ID (登録側の pid ではない) + volatile int32_t status; // SPE プロセスの状態 +//[16] + int32_t spe_no; // プロセスの実行を担当した SPE (暫定) + int32_t reserved[3]; // 予約済 +//[32] +} +spe_process_context_read_data_t; + + +/** + * spe_process_context_t + * SPE プロセスコンテキスト構造体 + */ +typedef struct +{ + spe_process_context_write_data_t write; + spe_process_context_read_data_t read; +} +spe_process_context_t; + + +/** + * spe_process_context_list_t + * SPE プロセスコンテキストの双方向リスト + */ +typedef struct spe_process_context_list +{ + spe_process_context_t context __attribute__((aligned(16))); + struct spe_process_context_list *prev_process; + struct spe_process_context_list *next_process; +} +spe_process_context_list_t; + + +#endif /*INCLUDE__SPE_PROCESS_H*/