• R/O
  • SSH
  • HTTPS

iphone-jsp: 提交


Commit MetaInfo

修訂3 (tree)
時間2009-10-30 23:50:54
作者(del#40607)

Log Message

(empty log message)

Change Summary

差異

--- trunk/iphone/cpu_context.h (nonexistent)
+++ trunk/iphone/cpu_context.h (revision 3)
@@ -0,0 +1,83 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2009 Akira Ujio
9+ *
10+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11+ * によって公表されている GNU General Public License の Version 2 に記
12+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14+ * 利用と呼ぶ)することを無償で許諾する.
15+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17+ * スコード中に含まれていること.
18+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21+ * の無保証規定を掲載すること.
22+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24+ * と.
25+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28+ * 報告すること.
29+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31+ *
32+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36+ *
37+ * @(#) $Id: cpu_context.h,v 1.5 2003/12/24 07:24:40 honda Exp $
38+ */
39+
40+/*
41+ * タスクコンテキスト操作ルーチン
42+ *
43+ * このファイルを cpu_config.h と分離しているのは,このファイルは TCB
44+ * が定義された後に読む必要があるのに対して,cpu_config.h には TCB を
45+ * 定義する前に読む必要がある定義を含んでいるためである.
46+ */
47+
48+#ifndef _CPU_CONTEXT_H_
49+#define _CPU_CONTEXT_H_
50+
51+#include "task.h"
52+
53+/*
54+ * タスクコンテキストの初期化
55+ *
56+ * タスクが休止状態に移行する時(タスクの生成時,タスクの終了時)に呼
57+ * ばれる.基本的には,タスクコンテキストをタスクが起動できる状態に設
58+ * 定する処理を,create_context と activate_context で行えばよい.
59+ */
60+Inline void
61+create_context(TCB *tcb)
62+{
63+}
64+
65+/*
66+ * タスクの起動準備
67+ *
68+ * タスクが休止状態から実行できる状態に移行する時に呼ばれる.
69+ */
70+
71+Inline void
72+activate_context(TCB *tcb)
73+{
74+ /*
75+ * start時のコンテキストを復帰させる
76+ */
77+ memcpy( &tcb->tskctxb.env, &tcb->tskctxb.start_env, sizeof(jmp_buf) );
78+}
79+
80+
81+#endif /* _CPU_CONTEXT_H_ */
82+
83+
--- trunk/iphone/sys_config.c (nonexistent)
+++ trunk/iphone/sys_config.c (revision 3)
@@ -0,0 +1,70 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2009 Akira Ujio
9+ *
10+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11+ * によって公表されている GNU General Public License の Version 2 に記
12+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14+ * 利用と呼ぶ)することを無償で許諾する.
15+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17+ * スコード中に含まれていること.
18+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21+ * の無保証規定を掲載すること.
22+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24+ * と.
25+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28+ * 報告すること.
29+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31+ *
32+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36+ *
37+ * @(#) $Id: sys_config.c,v 1.5 2003/12/24 07:24:40 honda Exp $
38+ */
39+
40+
41+#include "jsp_kernel.h"
42+#include <stdio.h>
43+#include <unistd.h>
44+/*
45+ * ターゲット依存関数モジュール(Linux用)
46+ */
47+void
48+sys_initialize(void)
49+{
50+}
51+
52+/*
53+ * ターゲットシステムの修了
54+ */
55+void
56+sys_exit(void)
57+{
58+ exit(0);
59+}
60+
61+/*
62+ * ターゲットシステムの文字出力
63+ */
64+void
65+sys_putc(char c)
66+{
67+// putchar(c);
68+}
69+
70+
--- trunk/iphone/tool_config.h (nonexistent)
+++ trunk/iphone/tool_config.h (revision 3)
@@ -0,0 +1,267 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ *
9+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
10+ * によって公表されている GNU General Public License の Version 2 に記
11+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
12+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
13+ * 利用と呼ぶ)することを無償で許諾する.
14+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16+ * スコード中に含まれていること.
17+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20+ * の無保証規定を掲載すること.
21+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23+ * と.
24+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
26+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27+ * 報告すること.
28+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30+ *
31+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
32+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
33+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
34+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
35+ *
36+ * @(#) $Id: tool_config.h,v 1.4 2007/01/05 02:02:38 honda Exp $
37+ */
38+
39+/*
40+ * 開発環境依存モジュール
41+ *
42+ * このインクルードファイルは,t_config.h のみからインクルードされる.
43+ * 他のファイルから直接インクルードしてはならない.
44+ */
45+
46+#ifndef _TOOL_CONFIG_H_
47+#define _TOOL_CONFIG_H_
48+
49+/*
50+ * ラベルの別名を定義するためのマクロ
51+ */
52+#define _LABEL_ALIAS(new_label, defined_label) \
53+ asm(".globl " #new_label "\n" #new_label " = " #defined_label);
54+#define LABEL_ALIAS(x, y) _LABEL_ALIAS(x, y)
55+
56+/*
57+ * 開発環境依存の初期化は使用しない
58+ */
59+#define tool_initialize()
60+
61+/*
62+ * atexit の処理とデストラクタの実行
63+ */
64+#ifndef _MACRO_ONLY
65+
66+Inline void
67+call_atexit()
68+{
69+ extern void software_term_hook(void);
70+ volatile FP fp = software_term_hook;
71+
72+ /*
73+ * software_term_hookへのポインタを,一旦volatile FP型のfpに
74+ * 代入してから使うのは,0との比較が最適化で削除されないよう
75+ * にするためである.
76+ */
77+ if (fp != 0) {
78+ (*fp)();
79+ }
80+}
81+
82+#endif /* _MACRO_ONLY */
83+
84+/*
85+ * トレースログの設定
86+ */
87+
88+#define LOG_INH_ENTER(inhno) /* プロセッサ依存部 */
89+#define LOG_INH_LEAVE(inhno) /* プロセッサ依存部 */
90+
91+#define LOG_ISR_ENTER(intno) /* プロセッサ依存部 */
92+#define LOG_ISR_LEAVE(intno) /* プロセッサ依存部 */
93+
94+#define LOG_CYC_ENTER(cyccb)
95+#define LOG_CYC_LEAVE(cyccb)
96+
97+#define LOG_EXC_ENTER(excno) /* プロセッサ依存部 */
98+#define LOG_EXC_LEAVE(excno) /* プロセッサ依存部 */
99+
100+#define LOG_TEX_ENTER(texptn)
101+#define LOG_TEX_LEAVE(texptn)
102+
103+#define LOG_TSKSTAT(tcb)
104+
105+#define LOG_DSP_ENTER(tcb) /* プロセッサ依存部 */
106+#define LOG_DSP_LEAVE(tcb) /* プロセッサ依存部 */
107+
108+#define LOG_ACT_TSK_ENTER(tskid)
109+#define LOG_ACT_TSK_LEAVE(ercd)
110+#define LOG_IACT_TSK_ENTER(tskid)
111+#define LOG_IACT_TSK_LEAVE(ercd)
112+#define LOG_CAN_ACT_ENTER(tskid)
113+#define LOG_CAN_ACT_LEAVE(ercd)
114+#define LOG_EXT_TSK_ENTER()
115+#define LOG_TER_TSK_ENTER(tskid)
116+#define LOG_TER_TSK_LEAVE(ercd)
117+#define LOG_CHG_PRI_ENTER(tskid, tskpri)
118+#define LOG_CHG_PRI_LEAVE(ercd)
119+#define LOG_GET_PRI_ENTER(tskid, p_tskpri)
120+#define LOG_GET_PRI_LEAVE(ercd, tskpri)
121+#define LOG_SLP_TSK_ENTER()
122+#define LOG_SLP_TSK_LEAVE(ercd)
123+#define LOG_TSLP_TSK_ENTER(tmout)
124+#define LOG_TSLP_TSK_LEAVE(ercd)
125+#define LOG_WUP_TSK_ENTER(tskid)
126+#define LOG_WUP_TSK_LEAVE(ercd)
127+#define LOG_IWUP_TSK_ENTER(tskid)
128+#define LOG_IWUP_TSK_LEAVE(ercd)
129+#define LOG_CAN_WUP_ENTER(tskid)
130+#define LOG_CAN_WUP_LEAVE(ercd)
131+#define LOG_REL_WAI_ENTER(tskid)
132+#define LOG_REL_WAI_LEAVE(ercd)
133+#define LOG_IREL_WAI_ENTER(tskid)
134+#define LOG_IREL_WAI_LEAVE(ercd)
135+#define LOG_SUS_TSK_ENTER(tskid)
136+#define LOG_SUS_TSK_LEAVE(ercd)
137+#define LOG_RSM_TSK_ENTER(tskid)
138+#define LOG_RSM_TSK_LEAVE(ercd)
139+#define LOG_FRSM_TSK_ENTER(tskid)
140+#define LOG_FRSM_TSK_LEAVE(ercd)
141+#define LOG_DLY_TSK_ENTER(dlytim)
142+#define LOG_DLY_TSK_LEAVE(ercd)
143+#define LOG_RAS_TEX_ENTER(tskid, rasptn)
144+#define LOG_RAS_TEX_LEAVE(ercd)
145+#define LOG_IRAS_TEX_ENTER(tskid, rasptn)
146+#define LOG_IRAS_TEX_LEAVE(ercd)
147+#define LOG_DIS_TEX_ENTER()
148+#define LOG_DIS_TEX_LEAVE(ercd)
149+#define LOG_ENA_TEX_ENTER()
150+#define LOG_ENA_TEX_LEAVE(ercd)
151+#define LOG_SNS_TEX_ENTER()
152+#define LOG_SNS_TEX_LEAVE(state)
153+#define LOG_SIG_SEM_ENTER(semid)
154+#define LOG_SIG_SEM_LEAVE(ercd)
155+#define LOG_ISIG_SEM_ENTER(semid)
156+#define LOG_ISIG_SEM_LEAVE(ercd)
157+#define LOG_WAI_SEM_ENTER(semid)
158+#define LOG_WAI_SEM_LEAVE(ercd)
159+#define LOG_POL_SEM_ENTER(semid)
160+#define LOG_POL_SEM_LEAVE(ercd)
161+#define LOG_TWAI_SEM_ENTER(semid, tmout)
162+#define LOG_TWAI_SEM_LEAVE(ercd)
163+#define LOG_SET_FLG_ENTER(flgid, setptn)
164+#define LOG_SET_FLG_LEAVE(ercd)
165+#define LOG_ISET_FLG_ENTER(flgid, setptn)
166+#define LOG_ISET_FLG_LEAVE(ercd)
167+#define LOG_CLR_FLG_ENTER(flgid, clrptn)
168+#define LOG_CLR_FLG_LEAVE(ercd)
169+#define LOG_WAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn)
170+#define LOG_WAI_FLG_LEAVE(ercd, flgptn)
171+#define LOG_POL_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn)
172+#define LOG_POL_FLG_LEAVE(ercd, flgptn)
173+#define LOG_TWAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn, tmout)
174+#define LOG_TWAI_FLG_LEAVE(ercd, flgptn)
175+#define LOG_SND_DTQ_ENTER(dtqid, data)
176+#define LOG_SND_DTQ_LEAVE(ercd)
177+#define LOG_PSND_DTQ_ENTER(dtqid, data)
178+#define LOG_PSND_DTQ_LEAVE(ercd)
179+#define LOG_IPSND_DTQ_ENTER(dtqid, data)
180+#define LOG_IPSND_DTQ_LEAVE(ercd)
181+#define LOG_TSND_DTQ_ENTER(dtqid, data, tmout)
182+#define LOG_TSND_DTQ_LEAVE(ercd)
183+#define LOG_FSND_DTQ_ENTER(dtqid, data)
184+#define LOG_FSND_DTQ_LEAVE(ercd)
185+#define LOG_IFSND_DTQ_ENTER(dtqid, data)
186+#define LOG_IFSND_DTQ_LEAVE(ercd)
187+#define LOG_RCV_DTQ_ENTER(dtqid, p_data)
188+#define LOG_RCV_DTQ_LEAVE(ercd, data)
189+#define LOG_PRCV_DTQ_ENTER(dtqid, p_data)
190+#define LOG_PRCV_DTQ_LEAVE(ercd, data)
191+#define LOG_TRCV_DTQ_ENTER(dtqid, p_data, tmout)
192+#define LOG_TRCV_DTQ_LEAVE(ercd, data)
193+#define LOG_SND_MBX_ENTER(mbxid, pk_msg)
194+#define LOG_SND_MBX_LEAVE(ercd)
195+#define LOG_RCV_MBX_ENTER(mbxid, ppk_msg)
196+#define LOG_RCV_MBX_LEAVE(ercd, pk_msg)
197+#define LOG_PRCV_MBX_ENTER(mbxid, ppk_msg)
198+#define LOG_PRCV_MBX_LEAVE(ercd, pk_msg)
199+#define LOG_TRCV_MBX_ENTER(mbxid, ppk_msg, tmout)
200+#define LOG_TRCV_MBX_LEAVE(ercd, pk_msg)
201+#define LOG_GET_MPF_ENTER(mpfid, p_blk)
202+#define LOG_GET_MPF_LEAVE(ercd, blk)
203+#define LOG_PGET_MPF_ENTER(mpfid, p_blk)
204+#define LOG_PGET_MPF_LEAVE(ercd, blk)
205+#define LOG_TGET_MPF_ENTER(mpfid, p_blk, tmout)
206+#define LOG_TGET_MPF_LEAVE(ercd, blk)
207+#define LOG_REL_MPF_ENTER(mpfid, blk)
208+#define LOG_REL_MPF_LEAVE(ercd)
209+#define LOG_SET_TIM_ENTER(p_systim)
210+#define LOG_SET_TIM_LEAVE(ercd)
211+#define LOG_GET_TIM_ENTER(p_systim)
212+#define LOG_GET_TIM_LEAVE(ercd, systim)
213+#define LOG_ISIG_TIM_ENTER()
214+#define LOG_ISIG_TIM_LEAVE(ercd)
215+#define LOG_STA_CYC_ENTER(cycid)
216+#define LOG_STA_CYC_LEAVE(ercd)
217+#define LOG_STP_CYC_ENTER(cycid)
218+#define LOG_STP_CYC_LEAVE(ercd)
219+#define LOG_ROT_RDQ_ENTER(tskpri)
220+#define LOG_ROT_RDQ_LEAVE(ercd)
221+#define LOG_IROT_RDQ_ENTER(tskpri)
222+#define LOG_IROT_RDQ_LEAVE(ercd)
223+#define LOG_GET_TID_ENTER(p_tskid)
224+#define LOG_GET_TID_LEAVE(ercd, tskid)
225+#define LOG_IGET_TID_ENTER(p_tskid)
226+#define LOG_IGET_TID_LEAVE(ercd, tskid)
227+#define LOG_LOC_CPU_ENTER()
228+#define LOG_LOC_CPU_LEAVE(ercd)
229+#define LOG_ILOC_CPU_ENTER()
230+#define LOG_ILOC_CPU_LEAVE(ercd)
231+#define LOG_UNL_CPU_ENTER()
232+#define LOG_UNL_CPU_LEAVE(ercd)
233+#define LOG_IUNL_CPU_ENTER()
234+#define LOG_IUNL_CPU_LEAVE(ercd)
235+#define LOG_DIS_DSP_ENTER()
236+#define LOG_DIS_DSP_LEAVE(ercd)
237+#define LOG_ENA_DSP_ENTER()
238+#define LOG_ENA_DSP_LEAVE(ercd)
239+#define LOG_SNS_CTX_ENTER()
240+#define LOG_SNS_CTX_LEAVE(state)
241+#define LOG_SNS_LOC_ENTER()
242+#define LOG_SNS_LOC_LEAVE(state)
243+#define LOG_SNS_DSP_ENTER()
244+#define LOG_SNS_DSP_LEAVE(state)
245+#define LOG_SNS_DPN_ENTER()
246+#define LOG_SNS_DPN_LEAVE(state)
247+#define LOG_VSNS_INI_ENTER()
248+#define LOG_VSNS_INI_LEAVE(state)
249+#define LOG_VXSNS_CTX_ENTER(p_excinf)
250+#define LOG_VXSNS_CTX_LEAVE(state)
251+#define LOG_VXSNS_LOC_ENTER(p_excinf)
252+#define LOG_VXSNS_LOC_LEAVE(state)
253+#define LOG_VXSNS_DSP_ENTER(p_excinf)
254+#define LOG_VXSNS_DSP_LEAVE(state)
255+#define LOG_VXSNS_DPN_ENTER(p_excinf)
256+#define LOG_VXSNS_DPN_LEAVE(state)
257+#define LOG_VXSNS_TEX_ENTER(p_excinf)
258+#define LOG_VXSNS_TEX_LEAVE(state)
259+#define LOG_VXGET_TIM_ENTER(p_sysutim)
260+#define LOG_VXGET_TIM_LEAVE(ercd, sysutim)
261+
262+#define LOG_CHG_IPM_ENTER(ipm)
263+#define LOG_CHG_IPM_LEAVE(ercd)
264+#define LOG_GET_IPM_ENTER(p_ipm)
265+#define LOG_GET_IPM_LEAVE(ercd, ipm)
266+
267+#endif /* _TOOL_CONFIG_H_ */
--- trunk/iphone/sys_config.h (nonexistent)
+++ trunk/iphone/sys_config.h (revision 3)
@@ -0,0 +1,83 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2009 Akira Ujio
9+ *
10+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11+ * によって公表されている GNU General Public License の Version 2 に記
12+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14+ * 利用と呼ぶ)することを無償で許諾する.
15+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17+ * スコード中に含まれていること.
18+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21+ * の無保証規定を掲載すること.
22+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24+ * と.
25+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28+ * 報告すること.
29+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31+ *
32+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36+ *
37+ * @(#) $Id: sys_config.h,v 1.7 2003/12/24 07:24:40 honda Exp $
38+ */
39+
40+#ifndef _SYS_CONF_
41+/*
42+ * OS の種類の定義
43+ */
44+
45+/*
46+ * 起動メッセージのターゲット名
47+ */
48+#define TARGET_NAME "iPhone"
49+
50+/*
51+ * システムタスクに関する定義
52+ */
53+#define CONSOLE_PORTID 1 /* コンソール用に用いるシリアルポート番号 */
54+#define LOGTASK_PORTID 1 /* システムログを出力するシリアルポート番号 */
55+#define LOGTASK_STACK_SIZE 8192 /* ログタスクのスタックサイズ */
56+
57+#ifndef _MACRO_ONLY
58+/*
59+ * ターゲットシステム依存の初期化
60+ */
61+extern void sys_initialize(void);
62+
63+/*
64+ * ターゲットシステムの終了
65+ *
66+ * システムを終了する時に使う.ROMモニタ呼出しで実現することを想定し
67+ * ている.
68+ */
69+extern void sys_exit(void);
70+
71+/*
72+ * ターゲットシステムの文字出力
73+ *
74+ * システムの低レベルの文字出力ルーチン.ROMモニタ呼出しで実現するこ
75+ * とを想定している.
76+ */
77+extern void sys_putc(char c);
78+
79+#endif /* _MACRO_ONLY */
80+#endif /* _SYS_CONF_ */
81+
82+
83+
--- trunk/iphone/sys_rename.h (nonexistent)
+++ trunk/iphone/sys_rename.h (revision 3)
@@ -0,0 +1,11 @@
1+/* This file is generated from sys_rename.def by genrename. */
2+
3+#ifndef _SYS_RENAME_H_
4+#define _SYS_RENAME_H_
5+
6+
7+#ifdef LABEL_ASM
8+
9+
10+#endif /* LABEL_ASM */
11+#endif /* _SYS_RENAME_H_ */
--- trunk/iphone/cpu_config.c (nonexistent)
+++ trunk/iphone/cpu_config.c (revision 3)
@@ -0,0 +1,331 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2009 Akira Ujio
9+ *
10+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11+ * によって公表されている GNU General Public License の Version 2 に記
12+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14+ * 利用と呼ぶ)することを無償で許諾する.
15+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17+ * スコード中に含まれていること.
18+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21+ * の無保証規定を掲載すること.
22+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24+ * と.
25+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28+ * 報告すること.
29+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31+ *
32+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36+ *
37+ * @(#) $Id: cpu_config.c,v 1.8 2003/12/24 07:24:40 honda Exp $
38+ */
39+
40+/*
41+ * プロセッサ依存モジュール(iphone用)
42+ */
43+
44+#include "jsp_kernel.h"
45+#include "check.h"
46+#include "task.h"
47+#include <stdlib.h>
48+#include <string.h>
49+#include <pthread.h>
50+#include <sys/types.h>
51+#include <unistd.h>
52+
53+/*
54+* ToppersのThread IDの保存用
55+* このThread IDに対してSignalを生成する
56+*/
57+pthread_t thread_id;
58+
59+/*
60+* CPU Lock状態でのシグナルマスクを保存
61+* sense_lock()で使用される
62+*/
63+IMS locked_ims=0;
64+
65+/*
66+* 多重割り込み対応のために割り込みネストレベルを保存
67+* 多重割り込みされた割り込み処理ではdispatch処理を保留する
68+*/
69+static int nest_level = 0;
70+
71+/*
72+* 割り込み処理のときにTRUEになる
73+* sense_context() でContextか割り込みかを判断するのに使用する
74+*/
75+BOOL interrupt_flg = FALSE;
76+
77+
78+/*
79+* ディスパッチ処理
80+*/
81+void
82+dispatch()
83+{
84+ if ( enadsp && (!runtsk || (runtsk != schedtsk
85+ && setjmp(runtsk->tskctxb.env) == 0)))
86+ {
87+ while (!(runtsk = schedtsk))
88+ {
89+ sigset_t waitmask;
90+ sigemptyset(&waitmask);
91+ sigsuspend(&waitmask);
92+ }
93+ longjmp(runtsk->tskctxb.env, 1);
94+ }
95+ else
96+ calltex();
97+}
98+
99+
100+/*
101+ * 現在のコンテキストを捨ててディスパッチ
102+ *
103+ * exit_and_dispatch は,CPUロック状態で呼び出さなければならない.
104+ */
105+static void initial_create_tasks(TCB *);
106+void
107+exit_and_dispatch()
108+{
109+ static BOOL bFirst = TRUE;
110+
111+ if( bFirst )
112+ {
113+ /*
114+ * 初回のみタスクのスタックやコンテキストを生成する
115+ */
116+ bFirst = FALSE;
117+ t_unlock_cpu();
118+ initial_create_tasks( &tcb_table[0] );
119+ }
120+ runtsk = 0;
121+ dispatch();
122+}
123+
124+
125+
126+/*
127+ * プロセッサ依存の初期化
128+ */
129+
130+
131+extern void kernel_start();
132+
133+void
134+cpu_initialize()
135+{
136+ int i;
137+ TCB *tcb;
138+
139+ /*
140+ * TCBのスタックサイズを0に初期化する
141+ */
142+ for(i=0;i<TNUM_TSK;++i)
143+ {
144+ tcb = &tcb_table[i];
145+ tcb->tskctxb.stksize = 0;
146+ }
147+
148+ /*
149+ * CPU Lock状態にして、そのときのシグナルマスクを保存する
150+ */
151+ t_lock_cpu();
152+ sigprocmask(SIG_SETMASK,0,&locked_ims);
153+
154+ /*
155+ * ToppersのThread IDを保存する
156+ */
157+ thread_id = pthread_self();
158+
159+}
160+
161+/*
162+ * プロセッサ依存の終了処理
163+ */
164+void
165+cpu_terminate()
166+{
167+}
168+
169+/*
170+ * タスク起動ルーチン
171+ *
172+ */
173+
174+
175+
176+/*
177+* タイマーを生成するスレッド
178+* iphone のSIGALRMはthread IDを指定しない限り、Cocoa(Main Thread)に食われてしまう。
179+* よって苦肉の策でSIGALRM用のThreadを生成し、ToppersJSP Threadに対して
180+* のみSIGALRMを発行する
181+*/
182+void
183+timer_polling(void)
184+{
185+ for(;;)
186+ {
187+ usleep(10000);
188+ pthread_kill( thread_id, SIGALRM);
189+ }
190+}
191+
192+/*
193+* Cocoa(Main Thread)からToppersJSPに対して割り込みを起こす
194+*/
195+void
196+itron_interrupt(int intno)
197+{
198+ pthread_kill( thread_id, intno);
199+}
200+
201+/*
202+* Toppers JSP for iPhoneを起動する
203+* Program Entry(main.mのmain()関数) の関数入り口で呼ぶこと
204+* Toppers用のThreadが生成され、Cocoa(Main Thread)と切り離される
205+*/
206+void
207+jsp_for_iphone_start(void)
208+{
209+ pthread_t t;
210+
211+ pthread_attr_t attr;
212+ pthread_attr_init(&attr);
213+
214+// struct sched_param priority;
215+// priority.sched_priority = 50;
216+// pthread_attr_setschedparam(&attr, &priority);
217+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
218+ pthread_create(&t, &attr, (void *)kernel_start, NULL);
219+ pthread_attr_destroy(&attr);
220+ //pthread_join(t, NULL);
221+}
222+
223+/*
224+* 初回起動時、各タスクのスタックを確保する
225+* cfg.exeで自動生成されるスタックはすべて無視され、新たにThreadスタックから確保される
226+* 最低MINSIGSTKSZ(32kB)は確保される。iPhone OSのThreadは512kBなので、
227+* これを超えるスタックサイズが必要な場合はThread生成時にスタックサイズを指定する必要がある
228+*/
229+static void
230+initial_create_tasks(TCB *tcb)
231+{
232+ static int nTaskReady=1;
233+
234+ /*
235+ * スタックはJSP ThreadのStackから強制的に取得される
236+ * 生成後はsetjmpでスタックの状態が記憶される
237+ */
238+ volatile int tsk_stack[MINSIGSTKSZ/sizeof(int)];
239+ tsk_stack[0] = 0;
240+ tcb->tskctxb.stksize += MINSIGSTKSZ;
241+
242+ if( tcb->tskctxb.stksize < tcb->tinib->stksz )
243+ {
244+ /*
245+ * まだスタックサイズが足りないときはもう一度
246+ */
247+ initial_create_tasks( tcb );
248+ }
249+
250+ if( setjmp( tcb->tskctxb.env) == 0 )
251+ {
252+ /*
253+ * スタート状態のコンテキストを保存する
254+ * タスク起動時はstart_envのコンテキストを使用することになる
255+ */
256+ memcpy( &tcb->tskctxb.start_env, &tcb->tskctxb.env, sizeof(jmp_buf) );
257+
258+ /*
259+ * すべてのタスクに対してスタックを確保する
260+ */
261+ if( nTaskReady < TNUM_TSK )
262+ {
263+ ++nTaskReady;
264+ initial_create_tasks( &tcb_table[INDEX_TSK(nTaskReady)] );
265+ }
266+
267+ /*
268+ * ここの処理はすべてタスクのスタックをとり終えたときにくる
269+ */
270+
271+ /*
272+ * はじめから起動するタスクがない場合はここで待つ
273+ */
274+ while (!(runtsk = schedtsk)) {
275+ sigset_t waitmask;
276+ sigemptyset(&waitmask);
277+ sigsuspend(&waitmask);
278+ }
279+
280+ /*
281+ * 一番最初のタスクにジャンプする
282+ */
283+ longjmp( runtsk->tskctxb.env, 1);
284+ }
285+ else
286+ {
287+ /*
288+ * タスクスタート。レッツゴー
289+ */
290+ (*runtsk->tinib->task)(runtsk->tinib->exinf);
291+
292+ ext_tsk();
293+ }
294+}
295+
296+/*
297+* 割り込みの入り口処理
298+* CPU Lockをした後、割り込みフラグをTRUEにしネストレベルを1上げる
299+*/
300+void prologue_isr(void)
301+{
302+ i_lock_cpu();
303+ interrupt_flg = TRUE;
304+ ++nest_level;
305+ i_unlock_cpu();
306+}
307+
308+/*
309+* 割り込み出口処理
310+* CPU Lockをした後、ネストレベルを1下げる
311+* もしネストレベルが0になったら(他の割り込み処理がない状態)要求に応じてdispatchをする
312+*/
313+void epilogue_isr(void)
314+{
315+ i_lock_cpu();
316+ --nest_level;
317+ if( nest_level == 0 )
318+ {
319+ interrupt_flg = FALSE;
320+ if(_kernel_reqflg)
321+ {
322+ _kernel_reqflg=FALSE;
323+ dispatch();
324+ }
325+ }
326+ i_unlock_cpu();
327+}
328+
329+
330+
331+
--- trunk/iphone/sys_unrename.h (nonexistent)
+++ trunk/iphone/sys_unrename.h (revision 3)
@@ -0,0 +1,11 @@
1+/* This file is generated from sys_rename.def by genrename. */
2+
3+#ifdef _SYS_UNRENAME_H_
4+#undef _SYS_UNRENAME_H_
5+
6+
7+#ifdef LABEL_ASM
8+
9+
10+#endif /* LABEL_ASM */
11+#endif /* _SYS_UNRENAME_H_ */
--- trunk/iphone/api.h (nonexistent)
+++ trunk/iphone/api.h (revision 3)
@@ -0,0 +1,169 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2003-2004 by Ryosuke Takeuchi
9+ * Platform Development Center RICOH COMPANY,LTD. JAPAN
10+ *
11+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
12+ * によって公表されている GNU General Public License の Version 2 に記
13+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
15+ * 利用と呼ぶ)することを無償で許諾する.
16+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18+ * スコード中に含まれていること.
19+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22+ * の無保証規定を掲載すること.
23+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25+ * と.
26+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
28+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29+ * 報告すること.
30+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32+ *
33+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
35+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
36+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
37+ *
38+ * @(#) $Id: api.h,v 1.3 2005/11/24 12:41:23 honda Exp $
39+ */
40+
41+#ifndef API_H
42+#define API_H
43+
44+#define __cycini
45+#define __cycenq
46+#define __sta_cyc
47+#define __stp_cyc
48+#define __cyccal
49+#define __dtqini
50+#define __dtqenq
51+#define __dtqfenq
52+#define __dtqdeq
53+#define __dtqsnd
54+#define __dtqrcv
55+#define __snd_dtq
56+#define __psnd_dtq
57+#define __ipsnd_dtq
58+#define __tsnd_dtq
59+#define __fsnd_dtq
60+#define __ifsnd_dtq
61+#define __rcv_dtq
62+#define __prcv_dtq
63+#define __trcv_dtq
64+#define __flgini
65+#define __flgcnd
66+#define __set_flg
67+#define __iset_flg
68+#define __clr_flg
69+#define __wai_flg
70+#define __pol_flg
71+#define __twai_flg
72+#define __excini
73+#define __vxsns_ctx
74+#define __vxsns_loc
75+#define __vxsns_dsp
76+#define __vxsns_dpn
77+#define __vxsns_tex
78+#define __inhini
79+#define __mbxini
80+#define __snd_mbx
81+#define __rcv_mbx
82+#define __prcv_mbx
83+#define __trcv_mbx
84+#define __mpfini
85+#define __mpfget
86+#define __get_mpf
87+#define __pget_mpf
88+#define __tget_mpf
89+#define __rel_mpf
90+#define __semini
91+#define __sig_sem
92+#define __isig_sem
93+#define __wai_sem
94+#define __pol_sem
95+#define __twai_sem
96+#define __rot_rdq
97+#define __irot_rdq
98+#define __get_tid
99+#define __iget_tid
100+#define __loc_cpu
101+#define __iloc_cpu
102+#define __unl_cpu
103+#define __iunl_cpu
104+#define __dis_dsp
105+#define __ena_dsp
106+#define __sns_ctx
107+#define __sns_loc
108+#define __sns_dsp
109+#define __sns_dpn
110+#define __logini
111+#define __vwri_log
112+#define __vrea_log
113+#define __vmsk_log
114+#define __logter
115+#define __tskini
116+#define __tsksched
117+#define __tskrun
118+#define __tsknrun
119+#define __tskdmt
120+#define __tskact
121+#define __tskext
122+#define __tskpri
123+#define __tskrot
124+#define __tsktex
125+#define __ras_tex
126+#define __iras_tex
127+#define __dis_tex
128+#define __ena_tex
129+#define __sns_tex
130+#define __act_tsk
131+#define __iact_tsk
132+#define __can_act
133+#define __ext_tsk
134+#define __ter_tsk
135+#define __chg_pri
136+#define __get_pri
137+#define __slp_tsk
138+#define __tslp_tsk
139+#define __wup_tsk
140+#define __iwup_tsk
141+#define __can_wup
142+#define __rel_wai
143+#define __irel_wai
144+#define __sus_tsk
145+#define __rsm_tsk
146+#define __frsm_tsk
147+#define __dly_tsk
148+#define __tmeini
149+#define __tmeup
150+#define __tmedown
151+#define __tmeins
152+#define __tmedel
153+#define __isig_tim
154+#define __set_tim
155+#define __get_tim
156+#define __vxget_tim
157+#define __waimake
158+#define __waicmp
159+#define __waitmo
160+#define __waitmook
161+#define __waican
162+#define __wairel
163+#define __wobjwai
164+#define __wobjwaitmo
165+#define __wobjpri
166+
167+
168+#endif
169+
--- trunk/iphone/cpu_config.h (nonexistent)
+++ trunk/iphone/cpu_config.h (revision 3)
@@ -0,0 +1,283 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2009 Akira Ujio
9+ *
10+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11+ * によって公表されている GNU General Public License の Version 2 に記
12+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14+ * 利用と呼ぶ)することを無償で許諾する.
15+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17+ * スコード中に含まれていること.
18+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21+ * の無保証規定を掲載すること.
22+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24+ * と.
25+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28+ * 報告すること.
29+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31+ *
32+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36+ *
37+ * @(#) $Id: cpu_config.h,v 1.9 2003/12/24 07:24:40 honda Exp $
38+ */
39+
40+/*
41+ * プロセッサ依存モジュール(iPhone用)
42+ */
43+
44+#ifndef _CPU_CONFIG_H_
45+#define _CPU_CONFIG_H_
46+
47+/*
48+ * カーネルの内部識別名のリネーム
49+ */
50+#include <cpu_rename.h>
51+
52+#ifndef _MACRO_ONLY
53+
54+/*
55+ * iPhone用標準インクルードファイル
56+ */
57+
58+#include <signal.h>
59+#include <setjmp.h>
60+
61+
62+/*
63+ * TCB 関連の定義
64+ *
65+ * cpu_context.h に入れる方がエレガントだが,参照の依存性の関係で,
66+ * cpu_context.h には入れられない.
67+ */
68+
69+/*
70+ * TCB 中のフィールドのビット幅の定義
71+ */
72+#define TBIT_TCB_PRIORITY 8 /* priority フィールドのビット幅 */
73+#define TBIT_TCB_TSTAT 8 /* tstat フィールドのビット幅 */
74+
75+/*
76+ * タスクコンテキストブロックの定義
77+ */
78+typedef struct task_context_block {
79+ SIZE stksize; /*取得したスタックサイズ*/
80+ jmp_buf start_env; /* CPUスタート時のコンテキスト*/
81+ jmp_buf env; /* CPUコンテキスト */
82+} CTXB;
83+
84+/*
85+ * 割り込みハンドラ
86+ */
87+#define INHNO_SIGUSR1 SIGUSR1
88+#define INHNO_SIGUSR2 SIGUSR2
89+
90+/*
91+ * CPU例外ハンドラ
92+ */
93+
94+#define EXCHNO_ZDIV SIGFPE
95+
96+/*
97+ * システム状態参照
98+ */
99+
100+extern BOOL interrupt_flg;
101+
102+Inline BOOL
103+sense_context()
104+{
105+ return interrupt_flg;
106+}
107+
108+extern IMS locked_ims;
109+
110+Inline BOOL
111+sense_lock()
112+{
113+ IMS currentSet;
114+
115+ sigprocmask(SIG_SETMASK,0,&currentSet);
116+
117+ return currentSet == locked_ims;
118+}
119+
120+
121+#define t_sense_lock sense_lock
122+#define i_sense_lock sense_lock
123+
124+/*
125+ * CPUロックとその解除(タスクコンテキスト用)
126+ *
127+ */
128+
129+Inline void
130+t_lock_cpu()
131+{
132+ sigset_t newmask;
133+ sigfillset(&newmask);
134+ sigprocmask(SIG_SETMASK,&newmask,0);
135+}
136+
137+Inline void
138+t_unlock_cpu()
139+{
140+ sigset_t mask;
141+ sigemptyset(&mask);
142+ sigprocmask(SIG_SETMASK,&mask,0);
143+}
144+
145+/*
146+ * CPUロックとその解除(非タスクコンテキスト用)
147+ */
148+
149+#define i_lock_cpu t_lock_cpu
150+#define i_unlock_cpu t_unlock_cpu
151+
152+/*
153+ * タスクディスパッチャ
154+ */
155+
156+/*
157+ * 最高優先順位タスクへのディスパッチ
158+ *
159+ * dispatch は,タスクコンテキストから呼び出されたサービスコール処理
160+ * 内で,CPUロック状態で呼び出さなければならない.
161+ */
162+extern void dispatch();
163+
164+
165+/*
166+ * 現在のコンテキストを捨ててディスパッチ
167+ *
168+ * exit_and_dispatch は,CPUロック状態で呼び出さなければならない.
169+ */
170+
171+extern void exit_and_dispatch(void);
172+
173+/*
174+ * 割込みハンドラ/CPU例外ハンドラの設定
175+ */
176+
177+
178+/*
179+ * 割込みハンドラの設定
180+ *
181+ * ベクトル番号 inhno の割込みハンドラの起動番地を inthdr に設定する.
182+ */
183+
184+Inline void
185+define_inh(INHNO inhno, FP inthdr)
186+{
187+ struct sigaction action;
188+
189+ action.sa_handler = inthdr;
190+ action.sa_flags = SA_RESTART;
191+ sigemptyset(&action.sa_mask);
192+
193+ sigaction(inhno, &action, 0);
194+}
195+
196+/*
197+ * CPU例外ハンドラの設定
198+ *
199+ * ベクトル番号 excno のCPU例外ハンドラの起動番地を exchdr に設定する.
200+ */
201+Inline void
202+define_exc(EXCNO excno, FP exchdr)
203+{
204+ struct sigaction action;
205+
206+ action.sa_handler = exchdr;
207+ sigemptyset(&action.sa_mask);
208+
209+ sigaction(excno, &action, 0);
210+}
211+
212+/*
213+ * 割込みハンドラ/CPU例外ハンドラの出入口処理
214+ */
215+
216+/*
217+ * 割込みハンドラの出入口処理の生成マクロ
218+ *
219+ */
220+
221+extern void prologue_isr(void);
222+extern void epilogue_isr(void);
223+#define INTHDR_ENTRY(inthdr) void inthdr##_entry(void){ prologue_isr(); inthdr(); epilogue_isr(); }
224+
225+
226+
227+/*
228+ * CPU例外ハンドラの出入口処理の生成マクロ
229+ *
230+ */
231+#define INT_ENTRY(inthdr) inthdr##_entry
232+
233+#define EXCHDR_ENTRY(exchdr) void exchdr##_entry(VP sp){ prologue_isr(); exchdr(sp); epilogue_isr(); }
234+
235+#define EXC_ENTRY(exchdr) exchdr##_entry
236+
237+/*
238+ * CPU例外の発生した時のシステム状態の参照
239+ */
240+
241+/*
242+ * CPU例外の発生した時のディスパッチ
243+ */
244+Inline BOOL
245+exc_sense_context(VP p_excinf)
246+{
247+ return((*((UH *) p_excinf) & 0x1000) == 0);
248+}
249+
250+/*
251+ * CPU例外の発生した時のCPUロック状態の参照
252+ */
253+Inline BOOL
254+exc_sense_lock(VP p_excinf)
255+{
256+ return((*((UH *) p_excinf) & 0x0700) == 0x0700);
257+}
258+
259+
260+/*
261+ * プロセッサ依存の初期化
262+ */
263+extern void cpu_initialize(void);
264+
265+/*
266+ * プロセッサ依存の終了時処理
267+ */
268+extern void cpu_terminate(void);
269+
270+/*
271+ * 割り込みの発生
272+ */
273+extern void itron_interrupt(int intno);
274+
275+#endif /* _MACRO_ONLY */
276+#endif /* _CPU_CONFIG_H_ */
277+
278+
279+
280+
281+
282+
283+
--- trunk/iphone/tool_defs.h (nonexistent)
+++ trunk/iphone/tool_defs.h (revision 3)
@@ -0,0 +1,76 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ *
9+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
10+ * によって公表されている GNU General Public License の Version 2 に記
11+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
12+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
13+ * 利用と呼ぶ)することを無償で許諾する.
14+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16+ * スコード中に含まれていること.
17+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20+ * の無保証規定を掲載すること.
21+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23+ * と.
24+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
26+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27+ * 報告すること.
28+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30+ *
31+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
32+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
33+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
34+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
35+ *
36+ * @(#) $Id: tool_defs.h,v 1.2 2003/07/16 09:20:19 honda Exp $
37+ */
38+
39+/*
40+ * 開発環境に依存する定義
41+ *
42+ * このインクルードファイルは,t_stddef.h と itron.h の先頭でインクルー
43+ * ドされる.他のファイルからは直接インクルードすることはない.他のイ
44+ * ンクルードファイルに先立って処理されるため,他のインクルードファイ
45+ * ルに依存してはならない.
46+ */
47+
48+#ifndef _TOOL_DEFS_H_
49+#define _TOOL_DEFS_H_
50+
51+/*
52+ * コンパイラ依存のデータ型の定義
53+ */
54+#define _int8_ char /* 8ビットの整数型 */
55+#define _int16_ short /* 16ビットの整数型 */
56+#define _int32_ int /* 32ビットの整数型 */
57+#define _int64_ long long /* 64ビットの整数型 */
58+
59+/*
60+ * コンパイラの拡張機能のためのマクロ定義
61+ */
62+#ifndef __cplusplus /* C++ には inline がある */
63+#if __STDC_VERSION__ < 199901L /* C99 には inline がある */
64+#define inline __inline__
65+#endif /* __STDC_VERSION__ < 199901L */
66+#endif /* __cplusplus */
67+
68+#define Inline static inline
69+
70+#ifndef __cplusplus /* C++ には asm がある */
71+#define asm __asm__
72+#endif /* __cplusplus */
73+
74+#define Asm __asm__ volatile
75+
76+#endif /* _TOOL_DEFS_H_ */
--- trunk/iphone/cpu_rename.h (nonexistent)
+++ trunk/iphone/cpu_rename.h (revision 3)
@@ -0,0 +1,15 @@
1+/* This file is generated from cpu_rename.def by genrename. */
2+
3+#ifndef _CPU_RENAME_H_
4+#define _CPU_RENAME_H_
5+
6+#define activate_r _kernel_activate_r
7+
8+
9+#ifdef LABEL_ASM
10+
11+#define _activate_r __kernel_activate_r
12+
13+
14+#endif /* LABEL_ASM */
15+#endif /* _CPU_RENAME_H_ */
--- trunk/iphone/hw_timer.h (nonexistent)
+++ trunk/iphone/hw_timer.h (revision 3)
@@ -0,0 +1,117 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2009 Akira Ujio
9+ *
10+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11+ * によって公表されている GNU General Public License の Version 2 に記
12+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14+ * 利用と呼ぶ)することを無償で許諾する.
15+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17+ * スコード中に含まれていること.
18+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21+ * の無保証規定を掲載すること.
22+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24+ * と.
25+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28+ * 報告すること.
29+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31+ *
32+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36+ *
37+ * @(#) $Id: hw_timer.h,v 1.5 2003/12/24 07:24:40 honda Exp $
38+ */
39+
40+/*
41+ * ターゲット依存タイマモジュール(Linux用)
42+ */
43+
44+#ifndef _HW_TIMER_H_
45+#define _HW_TIMER_H_
46+
47+#ifndef _MACRO_ONLY
48+#include <pthread.h>
49+#endif /* _MACRO_ONLY */
50+/*
51+ * タイマ割込みハンドラのベクタ番号
52+ */
53+#define INHNO_TIMER SIGALRM
54+
55+/*
56+ *
57+ *
58+ */
59+#define TIMER_CLOCK 1
60+#define TO_CLOCK(nume, deno) (TIMER_CLOCK * (nume) / (deno))
61+
62+
63+
64+#ifndef _MACRO_ONLY
65+/*
66+ * タイマ値の内部表現の型
67+ */
68+typedef UW CLOCK;
69+
70+extern void timer_polling(void);
71+
72+/*
73+ * タイマの起動処理
74+ *
75+ * タイマを初期化し,周期的なタイマ割込み要求を発生させる.
76+ */
77+Inline void
78+hw_timer_initialize()
79+{
80+ /*
81+ * threadを生成し、そのthreadからSIGALARMを発行する
82+ */
83+ pthread_t t;
84+ struct sched_param priority;
85+ priority.sched_priority = 50;
86+ pthread_attr_t attr;
87+ pthread_attr_init(&attr);
88+ pthread_attr_setschedparam(&attr, &priority);
89+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
90+ pthread_create(&t, &attr, (void *)timer_polling, NULL);
91+ pthread_attr_destroy(&attr);
92+}
93+
94+
95+/*
96+ * タイマ割込み要求のクリア
97+ */
98+Inline void
99+hw_timer_int_clear()
100+{
101+}
102+
103+/*
104+ * タイマの停止処理
105+ *
106+ * タイマの動作を停止させる.
107+ */
108+Inline void
109+hw_timer_terminate()
110+{
111+
112+}
113+
114+#endif /* _MACRO_ONLY */
115+#endif /* _HW_TIMER_H_ */
116+
117+
--- trunk/iphone/cpu_unrename.h (nonexistent)
+++ trunk/iphone/cpu_unrename.h (revision 3)
@@ -0,0 +1,15 @@
1+/* This file is generated from cpu_rename.def by genrename. */
2+
3+#ifdef _CPU_UNRENAME_H_
4+#undef _CPU_UNRENAME_H_
5+
6+#undef activate_r
7+
8+
9+#ifdef LABEL_ASM
10+
11+#undef _activate_r
12+
13+
14+#endif /* LABEL_ASM */
15+#endif /* _CPU_UNRENAME_H_ */
--- trunk/iphone/cpu_defs.h (nonexistent)
+++ trunk/iphone/cpu_defs.h (revision 3)
@@ -0,0 +1,90 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ * Copyright (C) 2009 Akira Ujio
9+ *
10+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11+ * によって公表されている GNU General Public License の Version 2 に記
12+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14+ * 利用と呼ぶ)することを無償で許諾する.
15+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17+ * スコード中に含まれていること.
18+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21+ * の無保証規定を掲載すること.
22+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24+ * と.
25+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28+ * 報告すること.
29+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31+ *
32+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36+ *
37+ * @(#) $Id: cpu_defs.h,v 1.11 2003/12/24 07:42:53 honda Exp $
38+ */
39+
40+/*
41+ * プロセッサに依存する定義(iPhone用)
42+ */
43+
44+#ifndef _CPU_DEFS_H_
45+#define _CPU_DEFS_H_
46+
47+#ifndef _MACRO_ONLY
48+
49+#include <setjmp.h>
50+#include <signal.h>
51+
52+typedef UINT INHNO; /* 割込ハンドラ番号 */
53+typedef sigset_t IMS; /* 割込みマスク */
54+typedef UINT EXCNO; /* CPU例外ハンドラ番号 */
55+
56+#endif /* _MACRO_ONLY */
57+
58+/*
59+ * INTNO型と割り込みの禁止/許可
60+ */
61+
62+#ifndef _MACRO_ONLY
63+
64+typedef INT INTNO; /* 割込み番号 */
65+extern ER dis_int(INTNO intno);
66+extern ER ena_int(INTNO intno);
67+
68+#endif /* _MACRO_ONLY */
69+
70+/*
71+ * タイムティックの定義
72+ */
73+#define TIC_NUME 10 /* タイムティックの周期の分子 */
74+#define TIC_DENO 1 /* タイムティックの周期の分母 */
75+
76+
77+#ifndef _MACRO_ONLY
78+/*
79+ * システムの停止処理
80+ */
81+Inline void
82+kernel_abort()
83+{
84+ exit(1);
85+}
86+#endif /* _MACRO_ONLY */
87+
88+#endif /* _CPU_DEFS_H_ */
89+
90+
Show on old repository browser