Changeset 107 for uKadecot/trunk/ssp/include/kernel.h
- Timestamp:
- Jun 10, 2015, 8:40:31 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/ssp/include/kernel.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 11 11 * Copyright (C) 2010-2012 by Meika Sugimoto 12 12 * 13 * ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 14 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 15 * ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 16 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 17 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 18 * R[hÉÜÜêÄ¢é±ÆD 19 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 20 * Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 21 gipÒ} 22 * j 23 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 24 * ØKèðfÚ·é±ÆD 25 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 26 * Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 27 * (a) Äzzɺ¤hL 28 gipÒ}j 29 AÈÇjÉCãLÌì 30 * \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 31 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 32 * ·é±ÆD 33 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 34 * ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 35 * {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 36 * ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 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プロジェクトを免責すること. 37 33 * 38 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ39 * ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη40 * éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp41 * Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð42 * íÈ¢D34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 35 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 36 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 37 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 38 * わない. 43 39 * 44 40 */ 45 41 46 42 /* 47 * TOPPERS/SSP J[l Wwb_t@C48 * 49 * TOPPERS/SSP J[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[50 * ^^CèC}NÌè`ðÜÞwb_t@CD51 * 52 * AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é53 * ÍCTOPPERS_MACRO_ONLYðè`µÄ¨D±êÉæèC}Nè`ÈOð54 * æ¤ÉÈÁÄ¢éD55 * 56 * ±Ìt@CðCN[h·éOÉCN[hµÄ¨×«t@C57 * ÍÈ¢D43 * TOPPERS/SSPカーネル 標準ヘッダファイル 44 * 45 * TOPPERS/SSPカーネルがサポートするサービスコールの宣言と,必要なデー 46 * タ型,定数,マクロの定義を含むヘッダファイル. 47 * 48 * アセンブリ言語のソースファイルからこのファイルをインクルードする時 49 * は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を 50 * 除くようになっている. 51 * 52 * このファイルをインクルードする前にインクルードしておくべきファイル 53 * はない. 58 54 */ 59 55 … … 62 58 63 59 /* 64 * TOPPERS ¤ÊÌf[^^EèE}N60 * TOPPERS共通のデータ型・定数・マクロ 65 61 */ 66 62 #include <t_stddef.h> 67 63 68 64 /* 69 * ^[Qbg˶65 * ターゲット依存部 70 66 */ 71 67 #include "target_kernel.h" … … 73 69 74 70 /* 75 * f[^^Ìè`76 */ 77 78 /* 79 * rbgp^[âIuWFNgÔÌ^è`80 */ 81 typedef uint_t INTNO; /* ÝÔ*/82 typedef uint_t INHNO; /* ÝnhÔ*/83 typedef uint_t EXCNO; /* CPU áOnhÔ*/84 typedef unsigned long FLGPTN; /* CxgtOp^[*/85 86 87 /* 88 * PÊÌ^è`71 * データ型の定義 72 */ 73 74 /* 75 * ビットパターンやオブジェクト番号の型定義 76 */ 77 typedef uint_t INTNO; /* 割込み番号 */ 78 typedef uint_t INHNO; /* 割込みハンドラ番号 */ 79 typedef uint_t EXCNO; /* CPU例外ハンドラ番号 */ 80 typedef unsigned long FLGPTN; /* イベントフラグパターン */ 81 82 83 /* 84 * 処理単位の型定義 89 85 */ 90 86 typedef void (*TASK)(intptr_t exinf); … … 98 94 99 95 /* 100 * ÌæmÛ̽ßÌ^è`96 * メモリ領域確保のための型定義 101 97 */ 102 98 #ifndef TOPPERS_STK_T 103 99 #define TOPPERS_STK_T intptr_t 104 100 #endif /* TOPPERS_STK_T */ 105 typedef TOPPERS_STK_T STK_T; /* X^bNÌæðmÛ·é½ßÌ^*/106 107 108 /* 109 * T[rXR[Ìé¾110 */ 111 112 /* 113 * ^XNÇ@\101 typedef TOPPERS_STK_T STK_T; /* スタック領域を確保するための型 */ 102 103 104 /* 105 * サービスコールの宣言 106 */ 107 108 /* 109 * タスク管理機能 114 110 */ 115 111 extern ER act_tsk(ID tskid); … … 117 113 118 114 /* 119 * ¯úEÊM@\ 120 */ 121 122 /* f[^L 123 [ */ 115 * 同期・通信機能 116 */ 117 118 /* データキュー */ 124 119 extern ER psnd_dtq(ID dtqid, intptr_t data); 125 120 extern ER ipsnd_dtq(ID dtqid, intptr_t data); 126 121 extern ER prcv_dtq(ID dtqid, intptr_t *p_data); 127 122 128 /* CxgtO*/123 /* イベントフラグ */ 129 124 extern ER set_flg(ID flgid, FLGPTN setptn); 130 125 extern ER iset_flg(ID flgid, FLGPTN setptn); … … 133 128 134 129 /* 135 * VXeóÔÇ@\130 * システム状態管理機能 136 131 */ 137 132 extern ER loc_cpu(void); … … 149 144 150 145 /* 151 * ÝÇ@\146 * 割込み管理機能 152 147 */ 153 148 extern ER dis_int(INTNO intno); … … 155 150 156 151 /* 157 * üúnh@\152 * 周期ハンドラ機能 158 153 */ 159 154 extern ER sta_cyc(ID cycid); … … 161 156 162 157 /* 163 * A[nh@\158 * アラームハンドラ機能 164 159 */ 165 160 extern ER sta_alm(ID almid , RELTIM almtim); … … 169 164 170 165 /* 171 * VXeÇ@\166 * システム時刻管理機能 172 167 */ 173 168 extern ER get_tim(SYSTIM *p_systim); … … 176 171 177 172 /* 178 * IuWFNg®«Ìè`179 */ 180 #define TA_RSTR UINT_C(0x04) /* §ñ^XN*/181 182 #define TA_CLR UINT_C(0x04) /* CxgtOÌNAwè*/183 184 #define TA_ACT UINT_C(0x02) /* ^XNðN®³ê½óÔŶ¬*/185 186 #define TA_STA UINT_C(0x02) /* üúnhð®ìóÔŶ¬*/187 188 #define TA_NONKERNEL UINT_C(0x02) /* J[lÇOÌÝ*/189 190 #define TA_ENAINT UINT_C(0x01) /* ÝvÖ~tOðNA*/191 #define TA_EDGE UINT_C(0x02) /* GbWgK*/192 193 /* 194 * T[rXR[Ì®ì[hÌè`195 */ 196 #define TWF_ORW UINT_C(0x01) /* CxgtOÌORÒ¿*/197 #define TWF_ANDW UINT_C(0x02) /* CxgtOÌANDÒ¿*/198 199 /* 200 * »Ì¼ÌèÌè`201 */ 202 #define TSK_SELF 0 /* ©^XNwè*/203 #define TSK_NONE 0 /* Y·é^XNªÈ¢*/204 205 #define TPRI_INI 0 /* ^XNÌN®Dæx*/206 207 #define TIPM_ENAALL 0 /* ÝDæx}XNSð*/208 209 /* 210 * \¬èÆ}N211 */ 212 213 /* 214 * DæxÌÍÍ215 */ 216 #define TMIN_TPRI 1 /* ^XNDæxÌŬliÅlj*/173 * オブジェクト属性の定義 174 */ 175 #define TA_RSTR UINT_C(0x04) /* 制約タスク */ 176 177 #define TA_CLR UINT_C(0x04) /* イベントフラグのクリア指定 */ 178 179 #define TA_ACT UINT_C(0x02) /* タスクを起動された状態で生成 */ 180 181 #define TA_STA UINT_C(0x02) /* 周期ハンドラを動作状態で生成 */ 182 183 #define TA_NONKERNEL UINT_C(0x02) /* カーネル管理外の割込み */ 184 185 #define TA_ENAINT UINT_C(0x01) /* 割込み要求禁止フラグをクリア */ 186 #define TA_EDGE UINT_C(0x02) /* エッジトリガ */ 187 188 /* 189 * サービスコールの動作モードの定義 190 */ 191 #define TWF_ORW UINT_C(0x01) /* イベントフラグのOR待ち */ 192 #define TWF_ANDW UINT_C(0x02) /* イベントフラグのAND待ち */ 193 194 /* 195 * その他の定数の定義 196 */ 197 #define TSK_SELF 0 /* 自タスク指定 */ 198 #define TSK_NONE 0 /* 該当するタスクがない */ 199 200 #define TPRI_INI 0 /* タスクの起動時優先度 */ 201 202 #define TIPM_ENAALL 0 /* 割込み優先度マスク全解除 */ 203 204 /* 205 * 構成定数とマクロ 206 */ 207 208 /* 209 * 優先度の範囲 210 */ 211 #define TMIN_TPRI 1 /* タスク優先度の最小値(最高値)*/ 217 212 #ifndef TMAX_TPRI 218 #define TMAX_TPRI 16 /* ^XNDæxÌÅåliÅálj*/213 #define TMAX_TPRI 16 /* タスク優先度の最大値(最低値)*/ 219 214 #elif (TMAX_TPRI != 8) && (TMAX_TPRI != 16) 220 215 #error "TMAX_TPRI must defined 8 or 16." 221 216 #endif /* TMAX_TPRI */ 222 217 223 #define TMIN_ISRPRI 1 /* ÝT[rX[`DæxÌŬl*/218 #define TMIN_ISRPRI 1 /* 割込みサービスルーチン優先度の最小値 */ 224 219 #ifndef TMAX_ISRPRI 225 #define TMAX_ISRPRI 16 /* ÝT[rX[`DæxÌÅål*/220 #define TMAX_ISRPRI 16 /* 割込みサービスルーチン優先度の最大値 */ 226 221 #elif (TMAX_ISRPRI != 8) && (TMAX_ISRPRI != 16) 227 222 #error "TMAX_ISRPRI must defined 8 or 16." … … 229 224 230 225 /* 231 * o[Wîñ 232 */ 233 #define TKERNEL_MAKER UINT_C(0x0118) /* J[lÌ[J[R[h */ 234 #define TKERNEL_PRID UINT_C(0x0007) /* J[l̯ÊÔ */ 235 #define TKERNEL_SPVER UINT_C(0xf511) /* J[ldlÌo[WÔ */ 236 #define TKERNEL_PRVER UINT_C(0x1030) /* J[lÌo[WÔ */ 237 238 /* 239 * L 240 [COñÌÅål 241 */ 242 #define TMAX_ACTCNT UINT_C(1) /* N®vL 243 [COÌÅål */ 244 245 /* 246 * rbgp^[Ìrbg 247 */ 248 #ifndef TBIT_FLGPTN /* CxgtOÌrbg */ 226 * バージョン情報 227 */ 228 #define TKERNEL_MAKER UINT_C(0x0118) /* カーネルのメーカーコード */ 229 #define TKERNEL_PRID UINT_C(0x0007) /* カーネルの識別番号 */ 230 #define TKERNEL_SPVER UINT_C(0xf511) /* カーネル仕様のバージョン番号 */ 231 #define TKERNEL_PRVER UINT_C(0x1030) /* カーネルのバージョン番号 */ 232 233 /* 234 * キューイング回数の最大値 235 */ 236 #define TMAX_ACTCNT UINT_C(1) /* 起動要求キューイング数の最大値 */ 237 238 /* 239 * ビットパターンのビット数 240 */ 241 #ifndef TBIT_FLGPTN /* イベントフラグのビット数 */ 249 242 #define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT) 250 243 #endif /* TBIT_FLGPTN */ 251 244 252 245 /* 253 * ÌæmÛ̽ßÌ}N254 * 255 * ȺÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ256 * é±Æð¼èµÄ¢éD246 * メモリ領域確保のためのマクロ 247 * 248 * 以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ 249 * ることを仮定している. 257 250 */ 258 251 #ifndef TOPPERS_COUNT_SZ … … 267 260 268 261 /* 269 * »Ì¼Ì\¬è270 */ 271 #define TMAX_MAXCYC UINT_C(16) /* üúnhÌÅå*/272 #define TMAX_MAXALM UINT_C(16) /* A[nhÌÅå*/262 * その他の構成定数 263 */ 264 #define TMAX_MAXCYC UINT_C(16) /* 周期ハンドラの最大数 */ 265 #define TMAX_MAXALM UINT_C(16) /* アラームハンドラの最大数 */ 273 266 274 267 #endif /* TOPPERS_KERNEL_H */ -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.