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*/