source: mypx/extension/dcre/kernel/kernel_impl.h @ 7

このファイルの 7 以降における最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 6.3 KB
Rev 
[7]1/*
2 *  TOPPERS/ASP Kernel
3 *      Toyohashi Open Platform for Embedded Real-Time Systems/
4 *      Advanced Standard Profile Kernel
5 *
6 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 *                              Toyohashi Univ. of Technology, JAPAN
8 *  Copyright (C) 2004-2010 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/*
44 *              TOPPERS/ASP¥«¡Œ¥Í¥ëÆâÉôžþ€±Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
45 *
46 *  €³€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ï¡€¥«¡Œ¥Í¥ë€ò¹œÀ®€¹€ë¥×¥í¥°¥é¥à€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë
47 *  €Çɬ€º¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€Ù€­Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ç€¢€ë¡¥
48 *
49 *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
50 *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
51 *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
52 */
53
54#ifndef TOPPERS_KERNEL_IMPL_H
55#define TOPPERS_KERNEL_IMPL_H
56
57/*
58 *  ¥«¡Œ¥Í¥ë€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥à
59 */
60#include "kernel_rename.h"
61
62/*
63 *  ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€È¶ŠÄ̀ΥإåÀ¥Õ¥¡¥€¥ë
64 */
65#include <kernel.h>
66
67/*
68 *  ¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Î€¿€á€ÎÄêµÁ
69 */
70#include <t_syslog.h>
71
72/*
73 *  ·¿¥­¥ã¥¹¥È€ò¹Ô€Š¥Þ¥¯¥í€ÎÄêµÁ
74 */
75#ifndef CAST
76#define CAST(type, val)         ((type)(val))
77#endif /* CAST */
78
79/*
80 *  ¥¿¡Œ¥²¥Ã¥È°ÍžŸðÊó€ÎÄêµÁ
81 */
82#include "target_config.h"
83
84/*
85 *  €¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
86 */
87#ifdef ALLFUNC
88#include "allfunc.h"
89#endif /* ALLFUNC */
90
91/*
92 *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€ÎÉä¹æÌµ€·À°¿ô·¿
93 *
94 *  8¥Ó¥Ã¥È°Ê²Œ€ÎÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€Éä¹æÌµ€·À°¿ôÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç
95 *  €ËÍÑ€€€ë€Ù€­¥Ç¡Œ¥¿·¿¡¥ANSI C€Ç€Ï¡€¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Î¥Ç¡Œ¥¿·¿€Ë€Ï
96 *  int€Èunsigned int€·€«µö€µ€ì€Ê€€€¿€á¡€¥Ç¥Õ¥©¥ë¥È€ÎÄêµÁ€Ïunsigned
97 *  int€È€·€Æ€€€ë€¬¡€¥¿¡Œ¥²¥Ã¥È€ª€è€Ó¥Ä¡Œ¥ë°Íž€Ç¡€unsigned char€Þ€¿€Ï
98 *  unsigned short€ËÄêµÁ€·€¿Êý€¬žúΚ€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥
99 */
100#ifndef BIT_FIELD_UINT
101#define BIT_FIELD_UINT          unsigned int
102#endif /* BIT_FIELD_UINT */
103
104/*
105 *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€Î¥Ö¡Œ¥ë·¿
106 *
107 *  1¥Ó¥Ã¥ÈÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€¥Ö¡Œ¥ëÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç€ËÍÑ€€€ë€Ù€­
108 *  ¥Ç¡Œ¥¿·¿¡¥¥Ç¥Õ¥©¥ë¥È€Ç€ÏBIT_FIELD_UINT€ÈƱ°ì€ËÄêµÁ€·€Æ€€€ë€¬¡€¥Ö¡Œ
109 *  ¥ëÃÍ€òÊÝ»ý€¹€ë€³€È€òÌÀŒš€¹€ë€¿€á€ËÊÌ€ÎÌŸŸÎ€È€·€Æ€€€ë¡¥
110 */
111#ifndef BIT_FIELD_BOOL
112#define BIT_FIELD_BOOL          BIT_FIELD_UINT
113#endif /* BIT_FIELD_BOOL */
114
115/*
116 *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎºÇŸ®ÃÍ€ÎÄêµÁ
117 */
118#define TMIN_TSKID              1               /* ¥¿¥¹¥¯ID€ÎºÇŸ®ÃÍ */
119#define TMIN_SEMID              1               /* ¥»¥Þ¥Õ¥©ID€ÎºÇŸ®ÃÍ */
120#define TMIN_FLGID              1               /* ¥Õ¥é¥°ID€ÎºÇŸ®ÃÍ */
121#define TMIN_DTQID              1               /* ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
122#define TMIN_PDQID              1               /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
123#define TMIN_MBXID              1               /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€ÎºÇŸ®ÃÍ */
124#define TMIN_MPFID              1               /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëID€ÎºÇŸ®ÃÍ */
125#define TMIN_CYCID              1               /* ŒþŽü¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
126#define TMIN_ALMID              1               /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
127#define TMIN_ISRID              1               /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óID€ÎºÇŸ®ÃÍ */
128
129/*
130 *  Í¥ÀèÅÙ€ÎÃʳ¬¿ô€ÎÄêµÁ
131 */
132#define TNUM_TPRI               (TMAX_TPRI - TMIN_TPRI + 1)
133#define TNUM_MPRI               (TMAX_MPRI - TMIN_MPRI + 1)
134#define TNUM_INTPRI             (TMAX_INTPRI - TMIN_INTPRI + 1)
135
136/*
137 *  ¥«¡Œ¥Í¥ëÆâÉô€Ç»ÈÍÑ€¹€ë°À­€ÎÄêµÁ
138 */
139#define TA_NOEXS                ((ATR)(-1))                     /* Ì€ÅÐÏ¿ŸõÂÖ */
140
141#ifndef TA_MEMALLOC
142#define TA_MEMALLOC             UINT_C(0x8000)          /* ¥á¥â¥êÎΰè€ò¥«¡Œ¥Í¥ë€Ç³ÎÊÝ */
143#endif /* TA_MEMALLOC */
144#ifndef TA_MBALLOC
145#define TA_MBALLOC              UINT_C(0x4000)          /* ŽÉÍýÎΰè€ò¥«¡Œ¥Í¥ë€Ç³ÎÊÝ */
146#endif /* TA_MBALLOC */
147
148/*
149 *  ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÄêµÁ
150 */
151#ifndef TARGET_TSKATR
152#define TARGET_TSKATR           0U              /* ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î¥¿¥¹¥¯Â°À­ */
153#endif /* TARGET_TSKATR */
154
155#ifndef TARGET_ISRATR
156#define TARGET_ISRATR           0U              /* ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎISR°À­ */
157#endif /* TARGET_ISRATR */
158
159/*
160 *  ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ò»ý€¿€Ê€€¥â¥ž¥å¡Œ¥ë€ÎŽØ¿ô¡ŠÊÑ¿ô€ÎÀëžÀ
161 */
162#ifndef TOPPERS_MACRO_ONLY
163
164/*
165 *  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ¡Êkernel_cfg.c¡Ë
166 */
167extern void     initialize_object(void);
168
169/*
170 *  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
171 */
172extern void     call_inirtn(void);
173
174/*
175 *  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
176 */
177extern void     call_terrtn(void);
178
179/*
180 *  È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè¡Êkernel_cfg.c¡Ë
181 */
182extern const SIZE       istksz;         /* ¥¹¥¿¥Ã¥¯Îΰè€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
183extern STK_T *const     istk;           /* ¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃÏ */
184#ifdef TOPPERS_ISTKPT
185extern STK_T *const     istkpt;         /* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ÎœéŽüÃÍ */
186#endif /* TOPPERS_ISTKPT */
187
188/*
189 *  ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎΰè¡Êkernel_cfg.c¡Ë
190 */
191extern const SIZE       kmmsz;          /* ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎΰè€Î¥µ¥€¥º */
192extern MB_T *const      kmm;            /* ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎΰè€ÎÀèÆ¬ÈÖÃÏ */
193
194/*
195 *  ¥«¡Œ¥Í¥ëưºîŸõÂ֥ե饰¡Êstartup.c¡Ë
196 */
197extern bool_t   kerflg;
198
199/*
200 *  ¥«¡Œ¥Í¥ë€Îµ¯Æ°¡Êstartup.c¡Ë
201 */
202extern void     sta_ker(void);
203
204/*
205 *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý¡Êstartup.c¡Ë
206 */
207extern void     exit_kernel(void);
208
209/*
210 *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎΰè€ÎŽÉÍý¡Êstartup.c¡Ë
211 */
212extern void initialize_kmm(void);
213extern void *kernel_malloc(SIZE size);
214extern void kernel_free(void *ptr);
215
216#endif /* TOPPERS_MACRO_ONLY */
217#endif /* TOPPERS_KERNEL_IMPL_H */
詳しい使い方は TracBrowser を参照してください。