Mercurial > hg > Game > Atoc
view include/spe_process.h @ 1:b4285b887e18 default tip
add document
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 17:33:34 +0900 |
parents | 42f240cc4bc6 |
children |
line wrap: on
line source
/** * 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*/