source: extension/messagebuf/kernel/task.h @ 7

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 16.7 KB
 
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) 2005-2014 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 *              ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
45 */
46
47#ifndef TOPPERS_TASK_H
48#define TOPPERS_TASK_H
49
50#include <queue.h>
51#include "time_event.h"
52
53/*
54 *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
55 */
56#ifndef LOG_TSKSTAT
57#define LOG_TSKSTAT(p_tcb)
58#endif /* LOG_TSKSTAT */
59
60/*
61 *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
62 */
63#define INT_PRIORITY(x)         ((uint_t)((x) - TMIN_TPRI))
64#define EXT_TSKPRI(x)           ((PRI)(x) + TMIN_TPRI)
65
66/*
67 *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
68 *
69 *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂրǀϡ€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
70 *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
71 *  ÆóœÅÂÔ€ÁŸõÂրϡ€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
72 *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄꀹ€ë¡¥
73 */
74#define TS_DORMANT              0x00U                   /* µÙ»ßŸõÂÖ */
75#define TS_RUNNABLE             0x01U                   /* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
76#define TS_WAITING              0x02U                   /* ÂÔ€ÁŸõÂÖ */
77#define TS_SUSPENDED    0x04U                   /* ¶¯À©ÂÔ€ÁŸõÂÖ */
78
79#define TS_WAIT_DLY             (0x00U << 3)    /* »þŽÖ·Ð²áÂÔ€Á */
80#define TS_WAIT_SLP             (0x01U << 3)    /* µ¯Ÿ²ÂÔ€Á */
81#define TS_WAIT_RDTQ    (0x02U << 3)    /* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
82#define TS_WAIT_RPDQ    (0x03U << 3)    /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
83#define TS_WAIT_RMBF    (0x04U << 3)    /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®ÂÔ€Á */
84#define TS_WAIT_SEM             (0x05U << 3)    /* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
85#define TS_WAIT_FLG             (0x06U << 3)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
86#define TS_WAIT_SDTQ    (0x07U << 3)    /* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
87#define TS_WAIT_SPDQ    (0x08U << 3)    /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
88#define TS_WAIT_MBX             (0x09U << 3)    /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
89#define TS_WAIT_SMBF    (0x0aU << 3)    /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®ÂÔ€Á */
90#define TS_WAIT_MPF             (0x0bU << 3)    /* žÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
91
92/*
93 *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
94 *
95 *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂրǀ¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
96 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂրǀ¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
97 *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂր΀€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
98 *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂր΀€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
99 */
100#define TSTAT_DORMANT(tstat)    ((tstat) == TS_DORMANT)
101#define TSTAT_RUNNABLE(tstat)   (((tstat) & TS_RUNNABLE) != 0U)
102#define TSTAT_WAITING(tstat)    (((tstat) & TS_WAITING) != 0U)
103#define TSTAT_SUSPENDED(tstat)  (((tstat) & TS_SUSPENDED) != 0U)
104
105/*
106 *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
107 *
108 *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
109 *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂЀ¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
110 *  ƱŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
111 *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
112 *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôʬ¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
113 *  ÈœÊÌ€¹€ë¡¥
114 *
115 *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
116 *  €³€È€òÈœỀǀ­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂրǀ¢€ë€³€È€ò
117 *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂրǀ¢€ë€³€È€òÈœỀǀ­€ë¡¥
118 *  €³€ì€òžúΚŪ€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
119 *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂրǀ¢€ë
120 *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈƱÍÍ€ÎÊýË¡€Ç
121 *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
122 */
123#define TS_WAIT_MASK    (0x0fU << 3)    /* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
124
125#define TSTAT_WAIT_SLP(tstat)           (((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
126#define TSTAT_WAIT_WOBJ(tstat)          (((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
127#define TSTAT_WAIT_WOBJCB(tstat)        (((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
128#define TSTAT_WAIT_SMBF(tstat)          (((tstat) & TS_WAIT_MASK) == TS_WAIT_SMBF)
129
130/*
131 *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
132 *
133 *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂրΎրϡ€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
134 *  €è€Š€ËÀßÄꀷ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
135 *
136 *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
137 *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄꀹ€ë¡¥
138 *
139 *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
140 *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
141 *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
142 *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í׀ʀ€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
143 *  p_tmevtb€òNULL€Ë€¹€ë¡¥
144 *
145 *  ƱŽü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂЀ¹€ëÂÔ€ÁŸõÂրΟì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
146 *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄɲÀ·€¿¹œÂ€ÂΡÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
147 *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
148 *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
149 *  €ÏɬÍ׀ʀ€¡¥
150 *
151 *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
152 *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
153 *
154 *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
155 *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
156 *
157 *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°Íž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
158 *  ŸðÊ󀬀¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËɬÍ׀ʟðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄɲÃ
159 *  €·€¿¹œÂ€Â΀òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
160 *
161 *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂЀ¹€ëÊÖÃÍ€òWINFO€Î
162 *  wercd€ËÀßÄꀹ€ë¡¥wercd€¬É¬Í׀ʀ΀ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂЀ·€Æ¡€
163 *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏɬÍ׀ʀ€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂ΀ò»È€Ã
164 *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄꀹ€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
165 *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
166 */
167typedef union waiting_information {
168        ER              wercd;                  /* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
169        TMEVTB  *p_tmevtb;              /* ÂÔ€ÁŸõÂÖÍрΥ¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
170} WINFO;
171
172/*
173 *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
174 *
175 *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôʬ¡Ê¥¿¥¹¥¯
176 *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊѲœ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
177 *  ʬ¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËʬΥ€·¡€TCBÆâ€ËÂбþ€¹€ë¥¿¥¹¥¯œéŽü²œ
178 *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂбþ€¹€ë
179 *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
180 *  €¬¡€ŒÂ¹ÔžúΚ€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
181 *  €Æ€âƱÍ̀˰·€Š¡¥
182 *
183 *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
184 *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
185 */
186typedef struct task_initialization_block {
187        ATR                     tskatr;                 /* ¥¿¥¹¥¯Â°À­ */
188        intptr_t        exinf;                  /* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
189        TASK            task;                   /* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
190        uint_t          ipriority;              /* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
191
192#ifdef USE_TSKINICTXB
193        TSKINICTXB      tskinictxb;             /* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
194#else /* USE_TSKINICTXB */
195        SIZE            stksz;                  /* ¥¹¥¿¥Ã¥¯Îΰè€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
196        void            *stk;                   /* ¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃÏ */
197#endif /* USE_TSKINICTXB */
198
199        ATR                     texatr;                 /* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó°À­ */
200        TEXRTN          texrtn;                 /* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
201} TINIB;
202
203/*
204 *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
205 *
206 *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
207 *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°Íž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
208 *  €òÊѹ¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
209 */
210#ifndef TBIT_TCB_PRIORITY
211#define TBIT_TCB_PRIORITY               8               /* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
212#endif /* TBIT_TCB_PRIORITY */
213
214/*
215 *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
216 *
217 *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
218 *  €Èµ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄꀵ€ì€Æ€€€ë
219 *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
220 *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄꀵ€ì€Æ€€
221 *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏɬÍ׀ʀ€¡¥
222 *
223 *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂրǀ΀ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
224 *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
225 *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄ̀ꡥ
226 *
227 *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
228 *              p_tinib¡€tstat¡€actque
229 *  ¡ŠµÙ»ßŸõÂְʳ°€ÇÍ­žú¡ÊµÙ»ßŸõÂրǀϜéŽüÃ̀ˀʀÀƀ€€ë¡Ë¡§
230 *              priority¡€wupque¡€enatex¡€texptn
231 *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
232 *              p_winfo
233 *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂЀ¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
234 *              task_queue
235 *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
236 *              tskctxb
237 */
238typedef struct task_control_block {
239        QUEUE                   task_queue;             /* ¥¿¥¹¥¯¥­¥å¡Œ */
240        const TINIB             *p_tinib;               /* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
241
242#ifdef UINT8_MAX
243        uint8_t                 tstat;                  /* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
244#else /* UINT8_MAX */
245        BIT_FIELD_UINT  tstat : 8;              /* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
246#endif /* UINT8_MAX */
247#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
248        uint8_t                 priority;               /* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
249#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
250        BIT_FIELD_UINT  priority : TBIT_TCB_PRIORITY;
251                                                                        /* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
252#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
253        BIT_FIELD_BOOL  actque : 1;             /* µ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥° */
254        BIT_FIELD_BOOL  wupque : 1;             /* µ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥° */
255        BIT_FIELD_BOOL  enatex : 1;             /* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
256
257        TEXPTN                  texptn;                 /* ÊÝαÎã³°Í×°ø */
258        WINFO                   *p_winfo;               /* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
259        TSKCTXB                 tskctxb;                /* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
260} TCB;
261
262/*
263 *  ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯
264 *
265 *  ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
266 *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
267 *
268 *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
269 *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
270 *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
271 */
272extern TCB      *p_runtsk;
273
274/*
275 *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
276 *
277 *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
278 *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
279 *
280 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂրʀɡ€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝα€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
281 *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
282 */
283extern TCB      *p_schedtsk;
284
285/*
286 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
287 *
288 *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
289 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ׵္€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
290 */
291extern bool_t   reqflg;
292
293/*
294 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœüŸõÂÖ
295 *
296 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœüŸõÂրǀ¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
297 */
298extern bool_t   ipmflg;
299
300/*
301 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
302 *
303 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂրǀ¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
304 */
305extern bool_t   disdsp;
306
307/*
308 *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
309 *
310 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœüŸõÂրǀ¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂրǀ¢€ë¡Ê¥Ç¥£
311 *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂրǀʀ€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
312 */
313extern bool_t   dspflg;
314
315/*
316 *  ¥ì¥Ç¥£¥­¥å¡Œ
317 *
318 *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂրΥ¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
319 *  ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
320 *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃ倷€Æ€€€ë€¿€á¡€€³
321 *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
322 *
323 *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
324 *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅـΥ­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
325 */
326extern QUEUE    ready_queue[TNUM_TPRI];
327
328/*
329 *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
330 *
331 *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúΚ€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
332 *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍѰՀ·€Æ€€€ë¡¥¥Ó¥Ã
333 *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
334 *  ¥Ó¥Ã¥ÈÁàºîÌ¿ÎာœŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃʳ¬¿ô€¬Ÿ¯€Ê€€
335 *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúΚ€¬Íî€Á
336 *  €ë²ÄÇœÀ­€â€¢€ë¡¥
337 *
338 *  Í¥ÀèÅÙ€¬16Ãʳ¬€Ç€¢€ë€³€È€ò²ŸÄꀷ€Æ€€€ë€¿€á¡€uint16_t·¿€È€·€Æ€€€ë¡¥
339 */
340extern uint16_t ready_primap;
341
342/*
343 *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
344 */
345extern const ID tmax_tskid;
346
347/*
348 *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
349 */
350extern const TINIB      tinib_table[];
351
352/*
353 *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
354 */
355extern const ID torder_table[];
356
357/*
358 *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
359 */
360extern TCB      tcb_table[];
361
362/*
363 *  ¥¿¥¹¥¯€Î¿ô
364 */
365#define tnum_tsk        ((uint_t)(tmax_tskid - TMIN_TSKID + 1))
366
367/*
368 *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
369 */
370#define INDEX_TSK(tskid)        ((uint_t)((tskid) - TMIN_TSKID))
371#define get_tcb(tskid)          (&(tcb_table[INDEX_TSK(tskid)]))
372#define get_tcb_self(tskid)     ((tskid) == TSK_SELF ? p_runtsk : get_tcb(tskid))
373
374/*
375 *  TCB€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
376 */
377#define TSKID(p_tcb)    ((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
378
379/*
380 *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
381 */
382extern void     initialize_task(void);
383
384/*
385 *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
386 *
387 *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
388 *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
389 */
390extern TCB      *search_schedtsk(void);
391
392/*
393 *  ŒÂ¹Ô€Ç€­€ëŸõÂր؀ÎÁ«°Ü
394 *
395 *  p_tcb€Ç»ØÄꀵ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
396 *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
397 *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂրǀ¢€ì€Ðtrue€òÊÖ
398 *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
399 */
400extern bool_t   make_runnable(TCB *p_tcb);
401
402/*
403 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éŸ€ÎŸõÂր؀ÎÁ«°Ü
404 *
405 *  p_tcb€Ç»ØÄꀵ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄꀷ€¿
406 *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
407 *  €òÀßÄꀷ€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂրǀ¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
408 *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂրϹ¹¿·€·€Ê€€¡¥
409 */
410extern bool_t   make_non_runnable(TCB *p_tcb);
411
412/*
413 *  µÙ»ßŸõÂր؀ÎÁ«°Ü
414 *
415 *  p_tcb€Ç»ØÄꀵ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂրȀ¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
416 *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
417 *  Äꀹ€ë¡¥
418 */
419extern void     make_dormant(TCB *p_tcb);
420
421/*
422 *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂր؀ÎÁ«°Ü
423 *
424 *  p_tcb€Ç»ØÄꀵ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂրȀ¹€ë¡¥
425 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í׀ʟì¹ç€Ïtrue¡€
426 *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
427 */
428extern bool_t   make_active(TCB *p_tcb);
429
430/*
431 *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊѹ¹
432 *
433 *  p_tcb€Ç»ØÄꀵ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊѹ¹€¹€ë¡¥€Þ€¿¡€
434 *  ɬÍ׀ʟì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
435 *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
436 */
437extern bool_t   change_priority(TCB *p_tcb, uint_t newpri);
438
439/*
440 *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
441 *
442 *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€pri€Ç»ØÄꀵ€ì€ëÍ¥ÀèÅـΥ¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
443 *  €Þ€¿¡€É¬Í׀ʟì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊѹ¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝ
444 *  α€µ€ì€Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
445 */
446extern bool_t   rotate_ready_queue(uint_t pri);
447
448/*
449 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
450 *
451 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€Î
452 *  ÊÝαÎã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂրˀ·¡€CPU¥í¥Ã¥¯€ò²ò
453 *  œü€¹€ë¡¥
454 *
455 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌ့¡€€œ€ÎŽÖ
456 *  €ËÊÝαÎã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
457 *  žÆ€ÓœÐ€¹¡¥ÊÝαÎã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂրˀ·€ÆŽØ¿ô€«
458 *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
459 *
460 *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
461 *  true¡Ë€Ç¡€ÊÝαÎã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
462 *  €È€òÁÛÄꀷ€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂրǞƀӜЀµ€Ê€±€ì€Ð€Ê€é
463 *  €Ê€€¡¥
464 */
465extern void     call_texrtn(void);
466
467/*
468 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
469 *
470 *  ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
471 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
472 *  €Ï¡€°ì»þŪ€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
473 *
474 *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
475 *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄꀷ€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
476 *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
477 *
478 *  ŒÂ¹ÔžúΚ€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
479 *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
480 */
481extern void     calltex(void);
482
483#endif /* TOPPERS_TASK_H */
詳しい使い方は TracBrowser を参照してください。