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