source: mypx/extension/ovrhdr/kernel/task.h

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 16.6 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-2012 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_SEM             (0x04U << 3)    /* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
84#define TS_WAIT_FLG             (0x05U << 3)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
85#define TS_WAIT_SDTQ    (0x06U << 3)    /* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
86#define TS_WAIT_SPDQ    (0x07U << 3)    /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
87#define TS_WAIT_MBX             (0x08U << 3)    /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
88#define TS_WAIT_MPF             (0x09U << 3)    /* žÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
89
90/*
91 *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
92 *
93 *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂրǀ¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
94 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂրǀ¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
95 *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂր΀€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
96 *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂր΀€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
97 */
98#define TSTAT_DORMANT(tstat)    ((tstat) == TS_DORMANT)
99#define TSTAT_RUNNABLE(tstat)   (((tstat) & TS_RUNNABLE) != 0U)
100#define TSTAT_WAITING(tstat)    (((tstat) & TS_WAITING) != 0U)
101#define TSTAT_SUSPENDED(tstat)  (((tstat) & TS_SUSPENDED) != 0U)
102
103/*
104 *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
105 *
106 *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
107 *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂЀ¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
108 *  ƱŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
109 *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
110 *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôʬ¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
111 *  ÈœÊÌ€¹€ë¡¥
112 *
113 *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
114 *  €³€È€òÈœỀǀ­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂրǀ¢€ë€³€È€ò
115 *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂրǀ¢€ë€³€È€òÈœỀǀ­€ë¡¥
116 *  €³€ì€òžúΚŪ€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
117 *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂրǀ¢€ë
118 *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈƱÍÍ€ÎÊýË¡€Ç
119 *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
120 */
121#define TS_WAIT_MASK    (0x0fU << 3)    /* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
122
123#define TSTAT_WAIT_SLP(tstat)           (((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
124#define TSTAT_WAIT_WOBJ(tstat)          (((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
125#define TSTAT_WAIT_WOBJCB(tstat)        (((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
126
127/*
128 *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
129 *
130 *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂրΎրϡ€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
131 *  €è€Š€ËÀßÄꀷ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
132 *
133 *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
134 *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄꀹ€ë¡¥
135 *
136 *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
137 *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
138 *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
139 *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í׀ʀ€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
140 *  p_tmevtb€òNULL€Ë€¹€ë¡¥
141 *
142 *  ƱŽü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂЀ¹€ëÂÔ€ÁŸõÂրΟì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
143 *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄɲÀ·€¿¹œÂ€ÂΡÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
144 *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
145 *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
146 *  €ÏɬÍ׀ʀ€¡¥
147 *
148 *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
149 *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
150 *
151 *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
152 *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
153 *
154 *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°Íž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
155 *  ŸðÊ󀬀¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËɬÍ׀ʟðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄɲÃ
156 *  €·€¿¹œÂ€Â΀òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
157 *
158 *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂЀ¹€ëÊÖÃÍ€òWINFO€Î
159 *  wercd€ËÀßÄꀹ€ë¡¥wercd€¬É¬Í׀ʀ΀ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂЀ·€Æ¡€
160 *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏɬÍ׀ʀ€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂ΀ò»È€Ã
161 *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄꀹ€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
162 *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
163 */
164typedef union waiting_information {
165        ER              wercd;                  /* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
166        TMEVTB  *p_tmevtb;              /* ÂÔ€ÁŸõÂÖÍрΥ¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
167} WINFO;
168
169/*
170 *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
171 *
172 *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôʬ¡Ê¥¿¥¹¥¯
173 *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊѲœ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
174 *  ʬ¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËʬΥ€·¡€TCBÆâ€ËÂбþ€¹€ë¥¿¥¹¥¯œéŽü²œ
175 *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂбþ€¹€ë
176 *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
177 *  €¬¡€ŒÂ¹ÔžúΚ€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
178 *  €Æ€âƱÍ̀˰·€Š¡¥
179 *
180 *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
181 *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
182 */
183typedef struct task_initialization_block {
184        ATR                     tskatr;                 /* ¥¿¥¹¥¯Â°À­ */
185        intptr_t        exinf;                  /* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
186        TASK            task;                   /* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
187        uint_t          ipriority;              /* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
188
189#ifdef USE_TSKINICTXB
190        TSKINICTXB      tskinictxb;             /* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
191#else /* USE_TSKINICTXB */
192        SIZE            stksz;                  /* ¥¹¥¿¥Ã¥¯Îΰè€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
193        void            *stk;                   /* ¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃÏ */
194#endif /* USE_TSKINICTXB */
195
196        ATR                     texatr;                 /* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó°À­ */
197        TEXRTN          texrtn;                 /* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
198} TINIB;
199
200/*
201 *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
202 *
203 *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
204 *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°Íž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
205 *  €òÊѹ¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
206 */
207#ifndef TBIT_TCB_PRIORITY
208#define TBIT_TCB_PRIORITY               8               /* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
209#endif /* TBIT_TCB_PRIORITY */
210
211/*
212 *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
213 *
214 *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
215 *  €Èµ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄꀵ€ì€Æ€€€ë
216 *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
217 *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄꀵ€ì€Æ€€
218 *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏɬÍ׀ʀ€¡¥
219 *
220 *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂրǀ΀ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
221 *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
222 *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄ̀ꡥ
223 *
224 *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
225 *              p_tinib¡€tstat¡€actque
226 *  ¡ŠµÙ»ßŸõÂְʳ°€ÇÍ­žú¡ÊµÙ»ßŸõÂրǀϜéŽüÃ̀ˀʀÀƀ€€ë¡Ë¡§
227 *              priority¡€wupque¡€enatex¡€texptn¡€leftotm
228 *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
229 *              p_winfo
230 *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂЀ¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
231 *              task_queue
232 *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
233 *              tskctxb
234 */
235typedef struct task_control_block {
236        QUEUE                   task_queue;             /* ¥¿¥¹¥¯¥­¥å¡Œ */
237        const TINIB             *p_tinib;               /* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
238
239#ifdef UINT8_MAX
240        uint8_t                 tstat;                  /* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
241#else /* UINT8_MAX */
242        BIT_FIELD_UINT  tstat : 8;              /* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
243#endif /* UINT8_MAX */
244#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
245        uint8_t                 priority;               /* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
246#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
247        BIT_FIELD_UINT  priority : TBIT_TCB_PRIORITY;
248                                                                        /* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
249#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
250        BIT_FIELD_BOOL  actque : 1;             /* µ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥° */
251        BIT_FIELD_BOOL  wupque : 1;             /* µ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥° */
252        BIT_FIELD_BOOL  enatex : 1;             /* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
253
254        TEXPTN                  texptn;                 /* ÊÝαÎã³°Í×°ø */
255        WINFO                   *p_winfo;               /* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
256#ifdef TOPPERS_SUPPORT_OVRHDR
257        OVRTIM                  leftotm;                /* »Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ */
258#endif /* TOPPERS_SUPPORT_OVRHDR */
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 を参照してください。