source: asp3_wo_tecs/trunk/kernel/dataqueue.tf@ 302

Last change on this file since 302 was 302, checked in by ertl-honda, 7 years ago

TECSレスのASP3の開発のため以下のtrunkからコピー
http://dev.toppers.jp/svn/asp3/branches/WO_TECS-3.C.0

File size: 5.0 KB
Line 
1$
2$ TOPPERS/ASP Kernel
3$ Toyohashi Open Platform for Embedded Real-Time Systems/
4$ Advanced Standard Profile Kernel
5$
6$ Copyright (C) 2007 by TAKAGI Nobuhisa
7$ Copyright (C) 2007-2014 by Embedded and Real-Time Systems Laboratory
8$ Graduate School of Information Science, Nagoya Univ., JAPAN
9$
10$ 上記著作権者
11は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13$ 変・再é…
14å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
15$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17$ スコード中に含まれていること.
18$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19$ 用できる形で再é…
20å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
21å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
22$ 者
23マニュアルなど)に,上記の著作権表示,この利用条件および下記
24$ の無保証規定を掲載すること.
25$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
26$ 用できない形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
28$ と.
29$ (a) 再é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
31マニュアルなど)に,上記の著
32$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
33$ (b) 再é…
34å¸ƒã®å½¢æ…
35‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
36$ 報告すること.
37$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38$ 害からも,上記著作権者
39およびTOPPERSプロジェクトをå…
40è²¬ã™ã‚‹ã“と.
41$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
42$ 由に基づく請求からも,上記著作権者
43およびTOPPERSプロジェクトを
44$ å…
45è²¬ã™ã‚‹ã“と.
46$
47$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者
48お
49$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52$ の責任を負わない.
53$
54$ $Id: dataqueue.tf 480 2016-01-03 07:37:12Z ertl-hiro $
55$
56
57$
58$ データキュー機能のテンプレートファイル
59$
60
61$
62$ kernel_cfg.hの生成
63$
64
65$FILE "kernel_cfg.h.new"$
66
67#define TNUM_DTQID $LENGTH(DTQ.ID_LIST)$$NL$
68$FOREACH id DTQ.ID_LIST$
69 #define $id$ $+id$$NL$
70$END$
71
72$
73$ kernel_cfg.cの生成
74$
75
76$FILE "kernel_cfg.c"$
77
78/*$NL$
79$SPC$* Dataqueue Functions$NL$
80$SPC$*/$NL$
81$NL$
82
83$
84$ データキューのID番号を保持する変数
85$
86$IF USE_EXTERNAL_ID$
87 $FOREACH id DTQ.ID_LIST$
88 const ID $id$_id = $+id$;$NL$
89 $END$
90$END$
91
92$
93$ データキューID番号の最大値
94$
95const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
96$NL$
97
98$
99$ データキュー初期化ブロック
100$
101$IF LENGTH(DTQ.ID_LIST)$
102 $FOREACH dtqid DTQ.ID_LIST$
103$ // dtqatrが無効の場合(E_RSATR)[NGKI1669]
104$ //(TA_TPRI以外のビットがセットされている場合)
105 $IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
106 $ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR:$SPC$
107 $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"),
108 "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$
109 $END$
110 $END$
111
112$ // dtqcntが負の場合(E_PAR)[NGKI3288]
113 $IF DTQ.DTQCNT[dtqid] < 0$
114 $ERROR DTQ.TEXT_LINE[dtqid]$E_PAR:$SPC$
115 $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"),
116 "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$
117 $END$
118 $END$
119
120$ // dtqmbがNULLでない場合(E_NOSPT)[ASPS0132]
121 $IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
122 $ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT:$SPC$
123 $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"),
124 "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$
125 $END$
126 $END$
127
128$ // データキュー管理領域
129 $IF DTQ.DTQCNT[dtqid]$
130 static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
131 $END$
132 $END$
133
134$ // データキュー初期化ブロック
135 const DTQINIB _kernel_dtqinib_table[TNUM_DTQID] = {$NL$
136 $JOINEACH dtqid DTQ.ID_LIST ",\n"$
137 $TAB${$SPC$
138 ($DTQ.DTQATR[dtqid]$),$SPC$
139 ($DTQ.DTQCNT[dtqid]$),$SPC$
140 $IF DTQ.DTQCNT[dtqid]$
141 _kernel_dtqmb_$dtqid$
142 $ELSE$
143 NULL
144 $END$$SPC$
145 }$END$$NL$
146 };$NL$
147$ELSE$
148 TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);$NL$
149$END$$NL$
150
151$
152$ データキュー管理ブロックとデータキュー機能初期化関数
153$
154$IF LENGTH(DTQ.ID_LIST)$
155 DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
156 $initfuncs = APPEND(initfuncs, "_kernel_initialize_dataqueue();")$
157$ELSE$
158 TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);$NL$
159$END$$NL$
Note: See TracBrowser for help on using the repository browser.