Changeset 315 for rubycfg_asp/trunk/asp_dcre/kernel/wait.h
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/kernel/wait.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=UTF-8
r313 r315 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 47 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 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 * の責任を負わない. 54 39 * 55 40 * @(#) $Id$ … … 57 42 58 43 /* 59 * å¾ 60 ã¡ç¶æ 61 管çã¢ã¸ã¥ã¼ã« 44 * 待ち状態管理モジュール 62 45 */ 63 46 … … 69 52 70 53 /* 71 * ã¿ã¹ã¯ã®åªå 72 度é ã®å¾ 73 ã¡ãã¥ã¼ã¸ã®æ¿å 74 ¥ 75 * 76 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼ã¿ã¹ã¯åªå 77 度é ã®ãã¥ã¼p_queueã«æ¿å 78 ¥ããï¼ 79 * ãã¥ã¼ã®ä¸ã«åãåªå 80 度ã®ã¿ã¹ã¯ãããå ´åã«ã¯ï¼ãã®æå¾ã«æ¿å 81 ¥ããï¼ 54 * タスクの優先度順の待ちキューへの挿入 55 * 56 * p_tcbで指定されるタスクを,タスク優先度順のキューp_queueに挿入する. 57 * キューの中に同じ優先度のタスクがある場合には,その最後に挿入する. 82 58 */ 83 59 Inline void … … 97 73 98 74 /* 99 * å¾ 100 ã¡ç¶æ 101 ã¸ã®é·ç§» 102 * 103 * å®è¡ä¸ã®ã¿ã¹ã¯ãå¾ 104 ã¡ç¶æ 105 ã«é·ç§»ãããï¼å 106 ·ä½çã«ã¯ï¼å®è¡ä¸ã®ã¿ã¹ã¯ã 107 * ã¬ãã£ãã¥ã¼ããåé¤ãï¼TCBã®p_winfoãã£ã¼ã«ãï¼WINFOã®p_tmevtbãã£ã¼ 108 * ã«ããè¨å®ããï¼ 75 * 待ち状態への遷移 76 * 77 * 実行中のタスクを待ち状態に遷移させる.具体的には,実行中のタスクを 78 * レディキューから削除し,TCBのp_winfoフィールド,WINFOのp_tmevtbフィー 79 * ルドを設定する. 109 80 */ 110 81 Inline void … … 117 88 118 89 /* 119 * å¾ 120 ã¡ç¶æ 121 ã¸ã®é·ç§»ï¼ã¿ã¤ã ã¢ã¦ãæå®ï¼ 122 * 123 * å®è¡ä¸ã®ã¿ã¹ã¯ãï¼ã¿ã¤ã ã¢ã¦ãæå®ä»ãã§å¾ 124 ã¡ç¶æ 125 ã«é·ç§»ãããï¼å 126 ·ä½ 127 * çã«ã¯ï¼å®è¡ä¸ã®ã¿ã¹ã¯ãã¬ãã£ãã¥ã¼ããåé¤ãï¼TCBã®p_winfoãã£ã¼ 128 * ã«ãï¼WINFOã®p_tmevtbãã£ã¼ã«ããè¨å®ããï¼ã¾ãï¼ã¿ã¤ã ã¤ãã³ãã 129 * ããã¯ãç»é²ããï¼ 90 * 待ち状態への遷移(タイムアウト指定) 91 * 92 * 実行中のタスクを,タイムアウト指定付きで待ち状態に遷移させる.具体 93 * 的には,実行中のタスクをレディキューから削除し,TCBのp_winfoフィー 94 * ルド,WINFOのp_tmevtbフィールドを設定する.また,タイムイベントブ 95 * ロックを登録する. 130 96 */ 131 97 extern void make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout); 132 98 133 99 /* 134 * å¾ 135 ã¡è§£é¤ã®ããã®ã¿ã¹ã¯ç¶æ 136 ã®æ´æ° 137 * 138 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼å¾ 139 ã¡è§£é¤ããããã¿ã¹ã¯ç¶æ 140 ãæ´æ°ããï¼ 141 * å¾ 142 ã¡è§£é¤ããã¿ã¹ã¯ãå®è¡ã§ããç¶æ 143 ã«ãªãå ´åã¯ï¼ã¬ãã£ãã¥ã¼ã«ã¤ãª 144 * ãï¼ã¾ãï¼ãã£ã¹ããããå¿ 145 è¦ãªå ´åã«ã¯trueãè¿ãï¼ 100 * 待ち解除のためのタスク状態の更新 101 * 102 * p_tcbで指定されるタスクを,待ち解除するようタスク状態を更新する. 103 * 待ち解除するタスクが実行できる状態になる場合は,レディキューにつな 104 * ぐ.また,ディスパッチが必要な場合にはtrueを返す. 146 105 */ 147 106 Inline bool_t … … 152 111 if (!TSTAT_SUSPENDED(p_tcb->tstat)) { 153 112 /* 154 * å¾ 155 ã¡ç¶æ 156 ããå®è¡ã§ããç¶æ 157 ã¸ã®é·ç§» 113 * 待ち状態から実行できる状態への遷移 158 114 */ 159 115 p_tcb->tstat = TS_RUNNABLE; … … 163 119 else { 164 120 /* 165 * äºéå¾ 166 ã¡ç¶æ 167 ããå¼·å¶å¾ 168 ã¡ç¶æ 169 ã¸ã®é·ç§» 121 * 二重待ち状態から強制待ち状態への遷移 170 122 */ 171 123 p_tcb->tstat = TS_SUSPENDED; … … 176 128 177 129 /* 178 * ãªãã¸ã§ã¯ãå¾ 179 ã¡ãã¥ã¼ããã®åé¤ 180 * 181 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 182 ã¡ãã¥ã¼ã«ã¤ 183 * ãªããã¦ããã°ï¼å¾ 184 ã¡ãã¥ã¼ããåé¤ããï¼ 130 * オブジェクト待ちキューからの削除 131 * 132 * p_tcbで指定されるタスクが,同期・通信オブジェクトの待ちキューにつ 133 * ながれていれば,待ちキューから削除する. 185 134 */ 186 135 Inline void … … 193 142 194 143 /* 195 * æéå¾ 196 ã¡ã®ããã®ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²è§£é¤ 197 * 198 * p_tcbã§æå®ãããã¿ã¹ã¯ã«å¯¾ãã¦ï¼æéå¾ 199 ã¡ã®ããã®ã¿ã¤ã ã¤ãã³ãã 200 * ããã¯ãç»é²ããã¦ããã°ï¼ãããç»é²è§£é¤ããï¼ 144 * 時間待ちのためのタイムイベントブロックの登録解除 145 * 146 * p_tcbで指定されるタスクに対して,時間待ちのためのタイムイベントブ 147 * ロックが登録されていれば,それを登録解除する. 201 148 */ 202 149 Inline void … … 209 156 210 157 /* 211 * å¾ 212 ã¡è§£é¤ 213 * 214 * p_tcbã§æå®ãããã¿ã¹ã¯ã®å¾ 215 ã¡ç¶æ 216 ã解é¤ããï¼å 217 ·ä½çã«ã¯ï¼ã¿ã¤ã 㤠218 * ãã³ããããã¯ãç»é²ããã¦ããã°ï¼ãããç»é²è§£é¤ããï¼ã¾ãï¼ã¿ã¹ã¯ 219 * ç¶æ 220 ãæ´æ°ãï¼å¾ 221 ã¡è§£é¤ããã¿ã¹ã¯ããã®è¿å¤ãE_OKã¨ããï¼å¾ 222 ã¡ãã¥ã¼ 223 * ããã®åé¤ã¯è¡ããªãï¼å¾ 224 ã¡è§£é¤ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããããå¿ 225 è¦ãªå ´ 226 * åã«ã¯trueãè¿ãï¼ 158 * 待ち解除 159 * 160 * p_tcbで指定されるタスクの待ち状態を解除する.具体的には,タイムイ 161 * ベントブロックが登録されていれば,それを登録解除する.また,タスク 162 * 状態を更新し,待ち解除したタスクからの返値をE_OKとする.待ちキュー 163 * からの削除は行わない.待ち解除したタスクへのディスパッチが必要な場 164 * 合にはtrueを返す. 227 165 */ 228 166 extern bool_t wait_complete(TCB *p_tcb); 229 167 230 168 /* 231 * ã¿ã¤ã ã¢ã¦ãã«ä¼´ãå¾ 232 ã¡è§£é¤ 233 * 234 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼å¾ 235 ã¡ãã¥ã¼ã«ã¤ãªããã¦ããã°å¾ 236 ã¡ãã¥ã¼ 237 * ããåé¤ãï¼ã¿ã¹ã¯ç¶æ 238 ãæ´æ°ããï¼ã¾ãï¼å¾ 239 ã¡è§£é¤ããã¿ã¹ã¯ããã®è¿ 240 * å¤ãï¼wait_tmoutã§ã¯E_TMOUTï¼wait_tmout_okã§ã¯E_OKã¨ããï¼å¾ 241 ã¡è§£é¤ 242 * ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããããå¿ 243 è¦ãªæã¯ï¼reqflgãtrueã«ããï¼ 244 * 245 * wait_tmout_okã¯ï¼dly_tskã§ä½¿ãããã®ãã®ã§ï¼å¾ 246 ã¡ãã¥ã¼ããåé¤ãã 247 * å¦çãè¡ããªãï¼ 248 * 249 * ãããã®é¢æ°ãï¼ã¿ã¤ã ã¤ãã³ãã®ã³ã¼ã«ããã¯é¢æ°ã¨ãã¦ç¨ããããã® 250 * ãã®ã§ï¼å²è¾¼ã¿ãã³ãã©ããå¼ã³åºããããã¨ãæ³å®ãã¦ããï¼ 169 * タイムアウトに伴う待ち解除 170 * 171 * p_tcbで指定されるタスクが,待ちキューにつながれていれば待ちキュー 172 * から削除し,タスク状態を更新する.また,待ち解除したタスクからの返 173 * 値を,wait_tmoutではE_TMOUT,wait_tmout_okではE_OKとする.待ち解除 174 * したタスクへのディスパッチが必要な時は,reqflgをtrueにする. 175 * 176 * wait_tmout_okは,dly_tskで使うためのもので,待ちキューから削除する 177 * 処理を行わない. 178 * 179 * いずれの関数も,タイムイベントのコールバック関数として用いるための 180 * もので,割込みハンドラから呼び出されることを想定している. 251 181 */ 252 182 extern void wait_tmout(TCB *p_tcb); … … 254 184 255 185 /* 256 * å¾ 257 ã¡ç¶æ 258 ã®å¼·å¶è§£é¤ 259 * 260 * p_tcbã§æå®ãããã¿ã¹ã¯ã®å¾ 261 ã¡ç¶æ 262 ãå¼·å¶çã«è§£é¤ããï¼å 263 ·ä½çã«ã¯ï¼ 264 * ã¿ã¹ã¯ãå¾ 265 ã¡ãã¥ã¼ã«ã¤ãªããã¦ããã°å¾ 266 ã¡ãã¥ã¼ããåé¤ãï¼ã¿ã¤ã 㤠267 * ãã³ããããã¯ãç»é²ããã¦ããã°ãããç»é²è§£é¤ããï¼ã¾ãï¼ã¿ã¹ã¯ã® 268 * ç¶æ 269 ãæ´æ°ãï¼å¾ 270 ã¡è§£é¤ããã¿ã¹ã¯ããã®è¿å¤ãE_RLWAIã¨ããï¼ã¾ãï¼ 271 * å¾ 272 ã¡è§£é¤ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããããå¿ 273 è¦ãªå ´åã«ã¯trueãè¿ãï¼ 186 * 待ち状態の強制解除 187 * 188 * p_tcbで指定されるタスクの待ち状態を強制的に解除する.具体的には, 189 * タスクが待ちキューにつながれていれば待ちキューから削除し,タイムイ 190 * ベントブロックが登録されていればそれを登録解除する.また,タスクの 191 * 状態を更新し,待ち解除したタスクからの返値をE_RLWAIとする.また, 192 * 待ち解除したタスクへのディスパッチが必要な場合にはtrueを返す. 274 193 */ 275 194 extern bool_t wait_release(TCB *p_tcb); 276 195 277 196 /* 278 * å¾ 279 ã¡ãã¥ã¼ã®å 280 é ã®ã¿ã¹ã¯ID 281 * 282 * p_wait_queueã§æå®ããå¾ 283 ã¡ãã¥ã¼ã®å 284 é ã®ã¿ã¹ã¯IDãè¿ãï¼å¾ 285 ã¡ãã¥ã¼ 286 * ã空ã®å ´åã«ã¯ï¼TSK_NONEãè¿ãï¼ 197 * 待ちキューの先頭のタスクID 198 * 199 * p_wait_queueで指定した待ちキューの先頭のタスクIDを返す.待ちキュー 200 * が空の場合には,TSK_NONEを返す. 287 201 */ 288 202 Inline ID … … 298 212 299 213 /* 300 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 301 ±éé¨åæä½ã«ã¼ãã³ 302 * 303 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã¨ç®¡çãããã¯ã®å 304 é é¨åã¯å 305 ± 306 * éã«ãªã£ã¦ããï¼ä»¥ä¸ã¯ï¼ãã®å 307 ±éé¨åãæ±ãããã®åããã³ã«ã¼ãã³ç¾¤ 308 * ã§ããï¼ 309 * 310 * è¤æ°ã®å¾ 311 ã¡ãã¥ã¼ãæã¤åæã»éä¿¡ãªãã¸ã§ã¯ãã®å ´åï¼å 312 é 以å¤ã®å¾ 313 ã¡ 314 * ãã¥ã¼ãæä½ããå ´åã«ã¯ï¼ãããã®ã«ã¼ãã³ã¯ä½¿ããªãï¼ã¾ãï¼ãªãã¸ã§ 315 * ã¯ãå±æ§ã®TA_TPRIããããåç 316 §ããã®ã§ï¼ãã®ããããä»ã®ç®çã«ä½¿ã£ã¦ 317 * ããå ´åãï¼ãããã®ã«ã¼ãã³ã¯ä½¿ããªãï¼ 318 */ 319 320 /* 321 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 322 ±éé¨å 214 * 同期・通信オブジェクトの管理ブロックの共通部分操作ルーチン 215 * 216 * 同期・通信オブジェクトの初期化ブロックと管理ブロックの先頭部分は共 217 * 通になっている.以下は,その共通部分を扱うための型およびルーチン群 218 * である. 219 * 220 * 複数の待ちキューを持つ同期・通信オブジェクトの場合,先頭以外の待ち 221 * キューを操作する場合には,これらのルーチンは使えない.また,オブジェ 222 * クト属性のTA_TPRIビットを参照するので,このビットを他の目的に使って 223 * いる場合も,これらのルーチンは使えない. 224 */ 225 226 /* 227 * 同期・通信オブジェクトの初期化ブロックの共通部分 323 228 */ 324 229 typedef struct wait_object_initialization_block { 325 ATR wobjatr; /* ãªãã¸ã§ã¯ãå±æ§*/230 ATR wobjatr; /* オブジェクト属性 */ 326 231 } WOBJINIB; 327 232 328 233 /* 329 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 330 ±éé¨å 234 * 同期・通信オブジェクトの管理ブロックの共通部分 331 235 */ 332 236 typedef struct wait_object_control_block { 333 QUEUE wait_queue; /* å¾ 334 ã¡ãã¥ã¼ */ 335 const WOBJINIB *p_wobjinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 237 QUEUE wait_queue; /* 待ちキュー */ 238 const WOBJINIB *p_wobjinib; /* 初期化ブロックへのポインタ */ 336 239 } WOBJCB; 337 240 338 241 /* 339 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 340 ã¡æ 341 å ±ãããã¯ã®å 342 ±éé¨å 343 * 344 * ãã®æ§é ä½ã¯ï¼å¾ 345 ã¡æ 346 å ±ãããã¯ï¼WINFOï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨ 347 * èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ãããï¼WINFOãå 348 ±ç¨ä½ã§å®ç¾©ããã¦ããã 349 * ãã«ï¼1ã¤ã®ãã£ã¼ã«ãã¨ãã¦å«ãã¦ããï¼ 242 * 同期・通信オブジェクトの待ち情報ブロックの共通部分 243 * 244 * この構造体は,待ち情報ブロック(WINFO)を拡張(オブジェクト指向言 245 * 語の継承に相当)したものであるが,WINFOが共用体で定義されているた 246 * めに,1つのフィールドとして含めている. 350 247 */ 351 248 typedef struct wait_object_waiting_information { 352 WINFO winfo; /* æ¨æºã®å¾ 353 ã¡æ 354 å ±ããã㯠*/ 355 WOBJCB *p_wobjcb; /* å¾ 356 ã¡ãªãã¸ã§ã¯ãã®ç®¡çããã㯠*/ 249 WINFO winfo; /* 標準の待ち情報ブロック */ 250 WOBJCB *p_wobjcb; /* 待ちオブジェクトの管理ブロック */ 357 251 } WINFO_WOBJ; 358 252 359 253 /* 360 * åæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 361 ã¡ç¶æ 362 ã¸ã®é·ç§» 254 * 同期・通信オブジェクトに対する待ち状態への遷移 363 255 * 364 * å®è¡ä¸ã®ã¿ã¹ã¯ãå¾ 365 ã¡ç¶æ 366 ã«é·ç§»ããï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 367 ã¡ãã¥ã¼ 368 * ã«ã¤ãªãï¼ã¾ãï¼å¾ 369 ã¡æ 370 å ±ãããã¯ï¼WINFOï¼ã®p_wobjcbãè¨å®ããï¼ 371 * wobj_make_wait_tmoutã¯ï¼ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²ãè¡ãï¼ 256 * 実行中のタスクを待ち状態に遷移させ,同期・通信オブジェクトの待ちキュー 257 * につなぐ.また,待ち情報ブロック(WINFO)のp_wobjcbを設定する. 258 * wobj_make_wait_tmoutは,タイムイベントブロックの登録も行う. 372 259 */ 373 260 extern void wobj_make_wait(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo); … … 376 263 377 264 /* 378 * ã¿ã¹ã¯åªå 379 度å¤æ´æã®å¦ç 380 * 381 * åæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 382 ã¡ç¶æ 383 ã«ããã¿ã¹ã¯ã®åªå 384 度ãå¤æ´ã 385 * ããå ´åã«ï¼å¾ 386 ã¡ãã¥ã¼ã®ä¸ã§ã®ã¿ã¹ã¯ã®ä½ç½®ãä¿®æ£ããï¼ 265 * タスク優先度変更時の処理 266 * 267 * 同期・通信オブジェクトに対する待ち状態にあるタスクの優先度が変更さ 268 * れた場合に,待ちキューの中でのタスクの位置を修正する. 387 269 */ 388 270 Inline void … … 396 278 397 279 /* 398 * å¾ 399 ã¡ãã¥ã¼ã®åæå 400 * 401 * å¾ 402 ã¡ãã¥ã¼ã«ã¤ãªããã¦ããã¿ã¹ã¯ããã¹ã¦å¾ 403 ã¡è§£é¤ããï¼å¾ 404 ã¡è§£é¤ãã 405 * ã¿ã¹ã¯ããã®è¿å¤ã¯ï¼E_DLTã¨ããï¼å¾ 406 ã¡è§£é¤ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããã 407 * ãå¿ 408 è¦ãªå ´åã¯trueï¼ããã§ãªãå ´åã¯falseãè¿ãï¼ 280 * 待ちキューの初期化 281 * 282 * 待ちキューにつながれているタスクをすべて待ち解除する.待ち解除した 283 * タスクからの返値は,E_DLTとする.待ち解除したタスクへのディスパッチ 284 * が必要な場合はtrue,そうでない場合はfalseを返す. 409 285 */ 410 286 extern bool_t init_wait_queue(QUEUE *p_wait_queue); -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.