source: uKadecot/trunk/ssp/kernel/startup.c@ 107

Last change on this file since 107 was 107, checked in by coas-nagasima, 9 years ago

SHIFT_JISのコードにcharsetプロパティを付けた

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
File size: 3.9 KB
Line 
1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
4 *
5 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
6 * Toyohashi Univ. of Technology, JAPAN
7 * Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
8 * Graduate School of Information Science, Nagoya Univ., JAPAN
9 * Copyright (C) 2010 by Naoki Saito
10 * Nagoya Municipal Industrial Research Institute, JAPAN
11 * Copyright (C) 2010-2011 by Meika Sugimoto
12 *
13 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
15 * 再配布(以下,利用と呼ぶ)することを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
17 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース
18 * コード中に含まれていること.
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
20 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
21 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
22 * 証規定を掲載すること.
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
24 * できない形で再配布する場合には,次のいずれかの条件を満たすこと.
25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
26 * 権表示,この利用条件および下記の無保証規定を掲載すること.
27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
28 * 告すること.
29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
30 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
31 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
32 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33 *
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
35 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
36 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
37 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負
38 * わない.
39 *
40 */
41
42/*
43 * カーネルの初期化と終了処理
44 */
45
46#include "task.h"
47#include "t_stddef.h"
48#include "kernel_impl.h"
49#include <sil.h>
50
51/*
52 * トレースログマクロのデフォルト定義
53 */
54#ifndef LOG_KER_ENTER
55#define LOG_KER_ENTER()
56#endif /* LOG_KER_ENTER */
57
58#ifndef LOG_KER_LEAVE
59#define LOG_KER_LEAVE()
60#endif /* LOG_KER_LEAVE */
61
62#ifndef LOG_EXT_KER_ENTER
63#define LOG_EXT_KER_ENTER()
64#endif /* LOG_EXT_KER_ENTER */
65
66#ifndef LOG_EXT_KER_LEAVE
67#define LOG_EXT_KER_LEAVE(ercd)
68#endif /* LOG_EXT_KER_LEAVE */
69
70
71#ifdef TOPPERS_sta_ker
72
73/*
74 * カーネル動作状態フラグ
75 *
76 * スタートアップルーチンで,false(=0)に初期化されることを期待して
77 * いる.
78 */
79bool_t kerflg = false;
80
81/*
82 * カーネルの起動
83 * NMIを除く全ての割込みがマスクされた状態(全割込みロック状態に相当)で呼び出される.
84 */
85void
86sta_ker(void)
87{
88 target_initialize();
89
90 initialize_object();
91
92 call_inirtn();
93
94 /*
95 * カーネルの動作を開始する.
96 */
97 kerflg = true;
98
99 /* ディスパッチャを起動し,タスクの動作を開始する */
100 LOG_KER_ENTER();
101 start_dispatch();
102 assert(false);
103}
104
105#endif /* TOPPERS_sta_ker */
106
107#ifdef TOPPERS_ext_ker
108
109/*
110 * カーネルの終了
111 */
112ER
113ext_ker(void)
114{
115 SIL_PRE_LOC;
116
117 LOG_EXT_KER_ENTER();
118
119 /*
120 * 割込みロック状態に移行
121 */
122 SIL_LOC_INT();
123
124 /*
125 * カーネル動作の終了
126 */
127 LOG_KER_LEAVE();
128 kerflg = false;
129
130 /*
131 * カーネルの終了処理の呼出し
132 *
133 * 非タスクコンテキストに切り換えて,exit_kernelを呼び出す.
134 */
135 call_exit_kernel();
136
137 /*
138 * SIL_UNL_INTを呼び出すが,ここに到達することはない.
139 * 記述するのはSIL_PRE_LOCで宣言される変数がある場合に,
140 * コンパイラが出力する警告を抑制するためである.
141 */
142 SIL_UNL_INT();
143 LOG_EXT_KER_LEAVE(E_SYS)
144
145 return E_SYS;
146}
147
148
149/*
150 * カーネルの終了処理
151 */
152void
153exit_kernel(void)
154{
155 /*
156 * 終了処理ルーチンの実行
157 */
158 call_terrtn();
159
160 /*
161 * ターゲット依存の終了処理
162 */
163 target_exit();
164 assert(false);
165}
166
167#endif /* TOPPERS_ext_ker */
Note: See TracBrowser for help on using the repository browser.