source: EcnlProtoTool/trunk/asp3_dcre/tecs_kernel/tKernel_inline.h

Last change on this file was 429, checked in by coas-nagasima, 4 years ago

ASP3, TINET, mbed を更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 7.8 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) 2015 by Ushio Laboratory
7 * Graduate School of Engineering Science, Osaka Univ., JAPAN
8 * Copyright (C) 2015 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
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 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
32 * 免責すること.
33 *
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
38 * の責任を負わない.
39 *
40 * $Id$
41 */
42
43#ifndef TOPPERS_TKERNEL_INLINE_H
44#define TOPPERS_TKERNEL_INLINE_H
45
46/*
47 * 自タスクの拡張情報の参照
48 */
49Inline ER
50eKernel_getExtendedInformation(intptr_t* p_exinf)
51{
52 return(get_inf(p_exinf));
53}
54
55/*
56 * 起床待ち
57 */
58Inline ER
59eKernel_sleep(void)
60{
61 return(slp_tsk());
62}
63
64/*
65 * 起床待ち(タイムアウトあり)
66 */
67Inline ER
68eKernel_sleepTimeout(TMO timeout)
69{
70 return(tslp_tsk(timeout));
71}
72
73/*
74 * 自タスクの遅延
75 */
76Inline ER
77eKernel_delay(RELTIM delayTime)
78{
79 return(dly_tsk(delayTime));
80}
81
82/*
83 * 自タスクの終了
84 */
85Inline ER
86eKernel_exit(void)
87{
88 return(ext_tsk());
89}
90
91/*
92 * タスク終了の禁止
93 */
94Inline ER
95eKernel_disableTerminate(void)
96{
97 return(dis_ter());
98}
99
100/*
101 * タスク終了の許可
102 */
103Inline ER
104eKernel_enableTerminate(void)
105{
106 return(ena_ter());
107}
108
109/*
110 * タスク終了禁止状態の参照
111 */
112Inline bool_t
113eKernel_senseTerminate(void)
114{
115 return(sns_ter());
116}
117
118/*
119 * システム時刻の設定
120 */
121Inline ER
122eKernel_setTime(SYSTIM systemTime)
123{
124 return(set_tim(systemTime));
125}
126
127/*
128 * システム時刻の参照
129 */
130Inline ER
131eKernel_getTime(SYSTIM* p_systemTime)
132{
133 return(get_tim(p_systemTime));
134}
135
136/*
137 * システム時刻の調整
138 */
139Inline ER
140eKernel_adjustTime(int32_t adjustTime)
141{
142 return(adj_tim(adjustTime));
143}
144
145/*
146 * 高分解能タイマの参照
147 */
148Inline HRTCNT
149eKernel_fetchHighResolutionTimer(void)
150{
151 return(fch_hrt());
152}
153
154/*
155 * タスクの優先順位の回転
156 */
157Inline ER
158eKernel_rotateReadyQueue(PRI taskPriority)
159{
160 return(rot_rdq(taskPriority));
161}
162
163/*
164 * 実行状態のタスクIDの参照
165 */
166Inline ER
167eKernel_getTaskId(ID *p_taskId)
168{
169 return(get_tid(p_taskId));
170}
171
172/*
173 * 実行できるタスクの数の参照
174 */
175Inline ER
176eKernel_getLoad(PRI taskPriority, uint_t* p_load)
177{
178 return(get_lod(taskPriority, p_load));
179}
180
181/*
182 * 指定した優先順位のタスクIDの参照
183 */
184Inline ER
185eKernel_getNthTask(PRI taskPriority, uint_t nth, ID* p_taskID)
186{
187 return(get_nth(taskPriority, nth, p_taskID));
188}
189
190/*
191 * CPUロック状態への遷移
192 */
193Inline ER
194eKernel_lockCpu()
195{
196 return(loc_cpu());
197}
198
199/*
200 * CPUロック状態の解除
201 */
202Inline ER
203eKernel_unlockCpu()
204{
205 return(unl_cpu());
206}
207
208/*
209 * ディスパッチの禁止
210 */
211Inline ER
212eKernel_disableDispatch()
213{
214 return(dis_dsp());
215}
216
217/*
218 * ディスパッチの許可
219 */
220Inline ER
221eKernel_enableDispatch()
222{
223 return(ena_dsp());
224}
225
226/*
227 * コンテキストの参照
228 */
229Inline bool_t
230eKernel_senseContext()
231{
232 return(sns_ctx());
233}
234
235/*
236 * CPUロック状態の参照
237 */
238Inline bool_t
239eKernel_senseLock()
240{
241 return(sns_loc());
242}
243
244/*
245 * ディスパッチ禁止状態の参照
246 */
247Inline bool_t
248eKernel_senseDispatch()
249{
250 return(sns_dsp());
251}
252
253/*
254 * ディスパッチ保留状態の参照
255 */
256Inline bool_t
257eKernel_senseDispatchPendingState()
258{
259 return(sns_dpn());
260}
261
262/*
263 * カーネル非動作状態の参照
264 */
265Inline bool_t
266eKernel_senseKernel()
267{
268 return(sns_ker());
269}
270
271/*
272 * カーネルの終了
273 */
274Inline ER
275eKernel_exitKernel()
276{
277 return(ext_ker());
278}
279
280/*
281 * 割込み優先度マスクの変更
282 */
283Inline ER
284eKernel_changeInterruptPriorityMask(PRI interruptPriority)
285{
286 return(chg_ipm(interruptPriority));
287}
288
289/*
290 * 割込み優先度マスクの参照
291 */
292Inline ER
293eKernel_getInterruptPriorityMask(PRI* p_interruptPriority)
294{
295 return(get_ipm(p_interruptPriority));
296}
297
298/*
299 * 高分解能タイマの参照(非タスクコンテキスト用)
300 */
301Inline HRTCNT
302eiKernel_fetchHighResolutionTimer(void)
303{
304 return(fch_hrt());
305}
306
307/*
308 * タスクの優先順位の回転(非タスクコンテキスト用)
309 */
310Inline ER
311eiKernel_rotateReadyQueue(PRI taskPriority)
312{
313 return(rot_rdq(taskPriority));
314}
315
316/*
317 * 実行状態のタスクIDの参照(非タスクコンテキスト用)
318 */
319Inline ER
320eiKernel_getTaskId(ID* p_taskId)
321{
322 return(get_tid(p_taskId));
323}
324
325/*
326 * CPUロック状態への遷移(非タスクコンテキスト用)
327 */
328Inline ER
329eiKernel_lockCpu()
330{
331 return(loc_cpu());
332}
333
334/*
335 * CPUロック状態の解除(非タスクコンテキスト用)
336 */
337Inline ER
338eiKernel_unlockCpu()
339{
340 return(unl_cpu());
341}
342
343/*
344 * コンテキストの参照(非タスクコンテキスト用)
345 */
346Inline bool_t
347eiKernel_senseContext()
348{
349 return(sns_ctx());
350}
351
352/*
353 * CPUロック状態の参照(非タスクコンテキスト用)
354 */
355Inline bool_t
356eiKernel_senseLock()
357{
358 return(sns_loc());
359}
360
361/*
362 * ディスパッチ禁止状態の参照(非タスクコンテキスト用)
363 */
364Inline bool_t
365eiKernel_senseDispatch()
366{
367 return(sns_dsp());
368}
369
370/*
371 * ディスパッチ保留状態の参照(非タスクコンテキスト用)
372 */
373Inline bool_t
374eiKernel_senseDispatchPendingState()
375{
376 return(sns_dpn());
377}
378
379/*
380 * カーネル非動作状態の参照(非タスクコンテキスト用)
381 */
382Inline bool_t
383eiKernel_senseKernel()
384{
385 return(sns_ker());
386}
387
388/*
389 * カーネルの終了(非タスクコンテキスト用)
390 */
391Inline ER
392eiKernel_exitKernel()
393{
394 return(ext_ker());
395}
396
397/*
398 * CPU例外発生時のディスパッチ保留状態の参照
399 */
400Inline bool_t
401eiKernel_exceptionSenseDispatchPendingState(const void *p_exceptionInformation)
402{
403 return(xsns_dpn((void *) p_exceptionInformation));
404}
405
406#endif /* TOPPERS_TKERNEL_INLINE_H */
Note: See TracBrowser for help on using the repository browser.