Changeset 389 for azure_iot_hub/trunk/asp3_dcre/kernel/task_sync.c
- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/kernel/task_sync.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 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 責ãããã¨ï¼ 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 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã¿ã¹ã¯ä»å±åææ©è½44 * タスク付属同期機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©53 * トレースログマクロのデフォルト定義 69 54 */ 70 55 #ifndef LOG_SLP_TSK_ENTER … … 133 118 134 119 /* 135 * èµ·åºå¾ 136 ã¡ 120 * 起床待ち 137 121 */ 138 122 #ifdef TOPPERS_slp_tsk … … 172 156 173 157 /* 174 * èµ·åºå¾ 175 ã¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼ 158 * 起床待ち(タイムアウトあり) 176 159 */ 177 160 #ifdef TOPPERS_tslp_tsk … … 216 199 217 200 /* 218 * ã¿ã¹ã¯ã®èµ·åº201 * タスクの起床 219 202 */ 220 203 #ifdef TOPPERS_wup_tsk … … 272 255 273 256 /* 274 * ã¿ã¹ã¯èµ·åºè¦æ±ã®ãã£ã³ã»ã«257 * タスク起床要求のキャンセル 275 258 */ 276 259 #ifdef TOPPERS_can_wup … … 313 296 314 297 /* 315 * å¾ 316 ã¡ç¶æ 317 ã®å¼·å¶è§£é¤ 298 * 待ち状態の強制解除 318 299 */ 319 300 #ifdef TOPPERS_rel_wai … … 362 343 363 344 /* 364 * å¼·å¶å¾ 365 ã¡ç¶æ 366 ã¸ã®ç§»è¡ï¼»NGKI1298ï¼½ 345 * 強制待ち状態への移行[NGKI1298] 367 346 */ 368 347 #ifdef TOPPERS_sus_tsk … … 375 354 376 355 LOG_SUS_TSK_ENTER(tskid); 377 CHECK_TSKCTX_UNL(); /* ï¼»NGKI1299][NGKI1300ï¼½*/356 CHECK_TSKCTX_UNL(); /*[NGKI1299][NGKI1300]*/ 378 357 if (tskid == TSK_SELF) { 379 p_tcb = p_runtsk; /* ï¼»NGKI1310ï¼½*/380 } 381 else { 382 CHECK_ID(VALID_TSKID(tskid)); /* ï¼»NGKI1302ï¼½*/358 p_tcb = p_runtsk; /*[NGKI1310]*/ 359 } 360 else { 361 CHECK_ID(VALID_TSKID(tskid)); /*[NGKI1302]*/ 383 362 p_tcb = get_tcb(tskid); 384 363 } 385 364 386 365 lock_cpu(); 387 if (p_tcb == p_runtsk && !dspflg) { /* ï¼»NGKI1311][NGKI3604ï¼½*/366 if (p_tcb == p_runtsk && !dspflg) { /*[NGKI1311][NGKI3604]*/ 388 367 ercd = E_CTX; 389 368 } 390 369 else if (p_tcb->p_tinib->tskatr == TA_NOEXS) { 391 ercd = E_NOEXS; /* ï¼»NGKI1303ï¼½*/370 ercd = E_NOEXS; /*[NGKI1303]*/ 392 371 } 393 372 else if (TSTAT_DORMANT(p_tcb->tstat)) { 394 ercd = E_OBJ; /* ï¼»NGKI1305ï¼½*/373 ercd = E_OBJ; /*[NGKI1305]*/ 395 374 } 396 375 else if (p_tcb->raster) { 397 ercd = E_RASTER; /* ï¼»NGKI3605ï¼½*/376 ercd = E_RASTER; /*[NGKI3605]*/ 398 377 } 399 378 else if (TSTAT_RUNNABLE(p_tcb->tstat)) { 400 379 /* 401 * å®è¡ã§ããç¶æ 402 ããå¼·å¶å¾ 403 ã¡ç¶æ 404 ã¸ã®é·ç§»ï¼»NGKI1307ï¼½ 380 * 実行できる状態から強制待ち状態への遷移[NGKI1307] 405 381 */ 406 382 p_tcb->tstat = TS_SUSPENDED; … … 413 389 } 414 390 else if (TSTAT_SUSPENDED(p_tcb->tstat)) { 415 ercd = E_QOVR; /* ï¼»NGKI1306ï¼½*/391 ercd = E_QOVR; /*[NGKI1306]*/ 416 392 } 417 393 else { 418 394 /* 419 * å¾ 420 ã¡ç¶æ 421 ããäºéå¾ 422 ã¡ç¶æ 423 ã¸ã®é·ç§»ï¼»NGKI1308ï¼½ 395 * 待ち状態から二重待ち状態への遷移[NGKI1308] 424 396 */ 425 397 p_tcb->tstat |= TS_SUSPENDED; … … 437 409 438 410 /* 439 * å¼·å¶å¾ 440 ã¡ç¶æ 441 ããã®åé 411 * 強制待ち状態からの再開 442 412 */ 443 413 #ifdef TOPPERS_rsm_tsk … … 463 433 else if (!TSTAT_WAITING(p_tcb->tstat)) { 464 434 /* 465 * å¼·å¶å¾ 466 ã¡ç¶æ 467 ããå®è¡ã§ããç¶æ 468 ã¸ã®é·ç§» 435 * 強制待ち状態から実行できる状態への遷移 469 436 */ 470 437 p_tcb->tstat = TS_RUNNABLE; … … 478 445 else { 479 446 /* 480 * äºéå¾ 481 ã¡ç¶æ 482 ããå¾ 483 ã¡ç¶æ 484 ã¸ã®é·ç§» 447 * 二重待ち状態から待ち状態への遷移 485 448 */ 486 449 p_tcb->tstat &= ~TS_SUSPENDED; … … 498 461 499 462 /* 500 * èªã¿ã¹ã¯ã®é 501 延 463 * 自タスクの遅延 502 464 */ 503 465 #ifdef TOPPERS_dly_tsk
Note:
See TracChangeset
for help on using the changeset viewer.