source: atk2-sc3_fl850f1l/kernel/scheduletable.h@ 473

Last change on this file since 473 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 6.7 KB
Line 
1/*
2 * TOPPERS ATK2
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 * Automotive Kernel Version 2
5 *
6 * Copyright (C) 2004-2015 by Center for Embedded Computing Systems
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 * Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
9 * Copyright (C) 2011-2013 by Spansion LLC, USA
10 * Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
11 * Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12 * Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
13 * Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
14 * Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
15 * Copyright (C) 2004-2015 by Witz Corporation
16 * Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
17 * Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
18 * Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
19 *
20 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
21 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
22 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
23 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
24 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
25 * スコード中に含まれていること.
26 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
27 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
28 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
29 * の無保証規定を掲載すること.
30 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
31 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
32 * と.
33 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
36 * 報告すること.
37 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
39 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
40 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
41 * 免責すること.
42 *
43 * 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
44 * 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
45 * はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
46 * 用する者に対して,AUTOSARパートナーになることを求めている.
47 *
48 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
49 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52 * の責任を負わない.
53 *
54 * $Id: scheduletable.h 187 2015-06-25 03:39:04Z t_ishikawa $
55 */
56
57/*
58 * スケジュールテーブル機能
59 */
60
61#ifndef TOPPERS_SCHEDULETABLE_H
62#define TOPPERS_SCHEDULETABLE_H
63
64#include "counter.h"
65
66/*
67 * 満了点テーブル制御用特殊な満了点インデックス
68 */
69#define EXPPTINDEX_TOP ((uint8) 0x00)
70#define EXPPTINDEX_INITIAL ((uint8) 0xff)
71
72/*
73 * スケジュールテーブルIDからスケジュールテーブル管理ブロックを取り出すためのマクロ
74 */
75#define get_schtblcb(schtblid) (&(schtblcb_table[(schtblid)]))
76
77/*
78 * 暗黙同期スケジュールテーブルに関する定義
79 */
80#define is_implschtbl(schtblid) ((schtblid) < tnum_implscheduletable)
81
82/*
83 * 個々の満了点テーブル型
84 */
85typedef struct scheduletable_expire_point_block {
86 TickType offset; /* オフセット値 */
87 FunctionRefType expptfnt; /* 満了点処理関数のポインタ */
88} SCHTBLEXPPTCB;
89
90
91/*
92 * スケジュールテーブル初期化ブロック
93 */
94typedef struct scheduletable_initialization_block {
95 CNTCB *p_cntcb; /* 駆動カウンタ管理ブロックのポインタ */
96 TickType length; /* 周期の長さ */
97 AppModeType autosta; /* 起動するアプリケーションモード */
98 AttributeType actatr; /* 自動起動の属性 */
99 TickType staval; /* 自動起動ティック値 */
100 const SCHTBLEXPPTCB *p_exppt; /* 満了点テーブルの先頭ポインタ */
101 boolean repeat; /* 周期制御の有無 */
102 uint8 tnum_exppt; /* 満了点数 */
103 OSAPCB *p_osapcb; /* 所属するOSアプリケーションの管理ブロック */
104 uint32 acsbtmp; /* アクセス許可OSアプリケーション ビットマップ */
105} SCHTBLINIB;
106
107/*
108 * スケジュールテーブル管理ブロック
109 */
110typedef struct scheduletable_control_block {
111 CNTEXPINFO cntexpinfo; /* カウンタ満了情報(構造体の先頭に入る必要) */
112 const SCHTBLINIB *p_schtblinib; /* 初期化ブロックへのポインタ */
113 struct scheduletable_control_block *p_prevschtblcb; /* 自分をNextにしたスケジュールテーブル管理ブロックへのポインタ */
114 struct scheduletable_control_block *p_nextschtblcb; /* Nextスケジュールテーブル管理ブロックへのポインタ */
115 ScheduleTableStatusType status; /* スケジュールテーブル状態 */
116 uint8 expptindex; /* 満了点インデックス */
117} SCHTBLCB;
118
119/*
120 * 満了処理実行用管理情報
121 */
122typedef struct scheduletable_expire_info {
123 SCHTBLCB *p_schtblcb; /* スケジュールテーブル管理ブロックのアドレス */
124} SCHTBLEXPINFO;
125
126/*
127 * スケジュールテーブル数を保持する変数の宣言
128 */
129extern const ScheduleTableType tnum_scheduletable; /* 全スケジュールテーブルの数 */
130extern const ScheduleTableType tnum_implscheduletable; /* 暗黙同期スケジュールテーブル数 */
131
132/*
133 * スケジュールテーブル初期化ブロックのエリア(Os_Lcfg.c)
134 */
135extern const SCHTBLINIB schtblinib_table[];
136/*
137 * スケジュールテーブル管理ブロックのエリア(Os_Lcfg.c)
138 */
139extern SCHTBLCB schtblcb_table[];
140
141/*
142 * スケジュールテーブルオブジェクトの初期化
143 */
144extern void schtbl_initialize(void);
145
146/*
147 * スケジュールテーブル満了処理関数
148 */
149extern void schtbl_expire(CNTEXPINFO *p_cntexpinfo, const CNTCB *p_cntcb);
150
151/*
152 * 満了処理関数から各タイミング処理の実行
153 */
154extern void schtbl_expiry_process(SCHTBLEXPINFO *p_schtblexpinfo, const CNTCB *p_cntcb);
155
156/*
157 * スケジュールテーブルの開始処理
158 */
159extern boolean schtbl_head(SCHTBLCB *p_schtblcb, const CNTCB *p_cntcb);
160
161/*
162 * スケジュールテーブルの各満了点処理
163 */
164extern boolean schtbl_exppoint_process(SCHTBLCB *p_schtblcb, const CNTCB *p_cntcb);
165
166/*
167 * スケジュールテーブルの終端処理
168 */
169extern boolean schtbl_tail(SCHTBLCB *p_schtblcb, SCHTBLEXPINFO *p_schtblexpinfo, const CNTCB *p_cntcb);
170
171/*
172 * OSAP所属するスケジュールテーブルの強制終了
173 */
174extern void force_term_osap_schtbl(OSAPCB *p_osapcb);
175
176#endif /* TOPPERS_SCHEDULETABLE_H */
Note: See TracBrowser for help on using the repository browser.