source: mypx/extension/mutex/test/test_mutex5.c

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 24.1 KB
 
1/*
2 *  TOPPERS Software
3 *      Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 *  Copyright (C) 2007-2013 by Embedded and Real-Time Systems Laboratory
6 *              Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
9 *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
10 *  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
11 *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
12 *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
13 *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
14 *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
15 *      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
16 *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
17 *      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
18 *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
19 *      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
20 *      €È¡¥
21 *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
22 *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
23 *    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
24 *        Êó¹ð€¹€ë€³€È¡¥
25 *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
26 *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
27 *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
28 *      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
29 *      ÌÈÀÕ€¹€ë€³€È¡¥
30 *
31 *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
32 *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
33 *  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
34 *  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
35 *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
36 *
37 *  $Id$
38 */
39
40/*
41 *              ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(5)
42 *
43 * ¡Ú¥Æ¥¹¥È€ÎÌÜŪ¡Û
44 *
45 *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂЀ·€Æ¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎºÆœéŽü²œœèÍý€òÌÖ
46 *  ÍåŪ€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€Èmutex_calc_priority€ÎÆâ
47 *  ÍÆ€Ë€ÏƧ€ß¹þ€Þ€Ê€€¡¥
48 *
49 * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
50 *
51 *      (A) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎœéŽü²œ¡Êini_mtx¡Ë€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·
52 *              €Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂÖ¡Ë€ÎÍ¥ÀèÅÙÊѹ¹
53 *              (A-1) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
54 *                        ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂ֡ˀΞœºßÍ¥ÀèÅÙ€ÈÆ±€ž
55 *                        €Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬²Œ€¬€ë€Ù€­Ÿì¹ç€Ë¡€
56 *                        Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬Å¬Àڀ˲Œ€²€é€ì€ë€³€È¡¥€Þ€¿¡€Æ±€žÍ¥Àè
57 *                        ÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇ¹â€Ë€Ê€ë€³€È
58 *              (A-2) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
59 *                        ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂ֡ˀΞœºßÍ¥ÀèÅÙ€ÈÆ±€ž
60 *                        €Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬ÊÑ€ï€ë€Ù€­€Ç€Ê€€
61 *                        Ÿì¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥
62 *                        ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
63 *              (A-3) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
64 *                        ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂ֡ˀΞœºßÍ¥ÀèÅÙ€è€ê€â
65 *                        Ä Ÿì¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±
66 *                        €žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
67 *              (A-4) (A-1)€Î·ë²Ì¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È¡¥
68 *      (B) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎœéŽü²œ¡Êini_mtx¡Ë€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·
69 *              €Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂÖ¡Ë€ÎÍ¥ÀèÅÙÊѹ¹
70 *              (B-1) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
71 *                        ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂ֡ˀΞœºßÍ¥ÀèÅÙ€ÈÆ±€ž€Ç¡€
72 *                        ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬²Œ€¬€ë€Ù€­Ÿì¹ç€Ë¡€Åö
73 *                        ³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬Å¬Àڀ˲Œ€²€é€ì€ë€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙ
74 *                        Æâ€Ç€Îœçœø€¬ºÇžå€Ë€Ê€ë€³€È
75 *              (B-2) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
76 *                        ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂ֡ˀΞœºßÍ¥ÀèÅÙ€ÈÆ±€ž€Ç¡€
77 *                        ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬ÊÑ€ï€ë€Ù€­€Ç€Ê€€Ÿì¹ç
78 *                        €Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙ
79 *                        Æâ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È
80 *              (B-3) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
81 *                        ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂ֡ˀΞœºßÍ¥ÀèÅÙ€è€ê€âÄ Ÿì
82 *                        ¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥Àè
83 *                        ÅÙÆâ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È
84 *      (C) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎœéŽü²œ¡Êini_mtx¡Ë€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂԀÀƀ€
85 *              €¿¥¿¥¹¥¯€ÎŸõÂÖÊѲœ
86 *              (C-1) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂԀÀƀ€€¿¥¿¥¹¥¯€¬ÂÔ€Á²òœü€µ€ì€ë€³€È¡¥
87 *              (C-2) (C-1)€Î·ë²Ì¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È¡¥
88 *
89 * ¡Ú¥Æ¥¹¥È¹àÌ܀ΌžœÊýË¡¡Û
90 *
91 *      (A-1)
92 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò
93 *              ¥í¥Ã¥¯€·€¿ŸõÂրǡ€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€
94 *              TASK1€ÎÍ¥ÀèÅÙ€¬ÄãÍ¥ÀèÅـ˲Œ€¬€ë€³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõ
95 *              ÂÖ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€è€ê€â¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È€ò³Îǧ
96 *              €¹€ë¡¥¡¡
97 *      (A-2)
98 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò2€Ä
99 *              ¡ÊMTX1¡€MTX2¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂրǡ€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€é
100 *              MTX1€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊѲœ€·€Ê€€€³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€
101 *              ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€TASK4¡Ë€òÍѰՀ·€Æ€ª€­¡€
102 *              Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³Îǧ€¹€ë¡¥
103 *      (A-3)
104 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€È
105 *              ÄãÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂրǡ€¹âÍ¥ÀèÅÙ
106 *              ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX3€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊѲœ€·€Ê€€
107 *              €³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€
108 *              TASK4¡Ë€òÍѰՀ·€Æ€ª€­¡€Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³Îǧ€¹€ë¡¥
109 *      (A-4)
110 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€ò
111 *              ¥í¥Ã¥¯€·€¿ŸõÂրǡ€TASK1€«€éMTX2€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬Äã
112 *              Í¥ÀèÅـ˲Œ€¬€ê¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€ËÀڀꎹ€ï
113 *              €ë€³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€è
114 *              €ê€â¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥¡¡
115 *      (B-1)
116 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò
117 *              ¥í¥Ã¥¯€·€¿ŸõÂրǡ€ỀΥߥ塌¥Æ¥Ã¥¯¥¹¡ÊMTX4¡ËÂÔ€ÁŸõÂրȀ·¡€¹âÍ¥
118 *              ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÄãÍ¥Àè
119 *              Åـ˲Œ€¬€ë€³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€MTX4ÂÔ€ÁŸõÂÖ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
120 *              ¡ÊTASK2¡Ë€è€ê€â¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬žå€Ë€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥
121 *      (B-2)
122 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò2€Ä
123 *              ¡ÊMTX1¡€MTX2¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂրǡ€ỀΥߥ塌¥Æ¥Ã¥¯¥¹¡ÊMTX4¡ËÂÔ
124 *              €ÁŸõÂրȀ·¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€TASK1
125 *              €ÎÍ¥ÀèÅÙ€¬ÊѲœ€·€Ê€€€³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€MTX4ÂÔ€ÁŸõÂÖ€ÎÃæÍ¥Àè
126 *              ÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€TASK4¡Ë€òÍѰՀ·€Æ€ª€­¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø
127 *              €¬ÊÑ€ï€é€Ê€€€³€È€ò³Îǧ€¹€ë¡¥
128 *      (B-3)
129 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€È
130 *              ÄãÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂրǡ€ỀΥߥ塌
131 *              ¥Æ¥Ã¥¯¥¹¡ÊMTX4¡ËÂÔ€ÁŸõÂրȀ·¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX3€ò
132 *              ºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊѲœ€·€Ê€€€³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€
133 *              MTX4ÂÔ€ÁŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€TASK4¡Ë€òÍѰՀ·€Æ€ª€­¡€
134 *              ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È€ò³Îǧ€¹€ë¡¥
135 *      (C-1)
136 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
137 *              ¥¯€·¡€ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK3¡Ë€¬MTX1€òÂԀÀƀ€€ëŸõÂրǡ€¹âÍ¥ÀèÅÙ
138 *              ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€TASK3€¬ÂÔ€Á²òœü€µ€ì€ë€³€È
139 *              €ò³Îǧ€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê€â¡€
140 *              TASK3€ÎÊý€¬Í¥Àèœç°Ì€¬Ä〯€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥¡¡
141 *      (C-2)
142 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
143 *              ¥¯€·¡€ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK3¡Ë€¬MTX1€òÂÔ€Á¡€TASK1€òµ¯Ÿ²ÂÔ€ÁŸõÂÖ
144 *              €È€·€¿ŸõÂրǡ€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€
145 *              TASK3€¬ÂÔ€Á²òœü€µ€ì¡€TASK3€ËÀڀꎹ€ï€ë€³€È€ò³Îǧ€¹€ë¡¥
146 *
147 * ¡Ú»ÈÍѥ꥜¡Œ¥¹¡Û
148 *
149 *      TASK1: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
150 *      TASK2: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
151 *      TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
152 *      TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
153 *      TASK5: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
154 *      MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILING°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
155 *      MTX2: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILING°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
156 *      MTX3: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILING°À­¡€ŸåžÂ€ÏÄãÍ¥ÀèÅÙ¡Ë
157 *      MTX4: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILING°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
158 *
159 * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
160 *
161 *      == TASK1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
162 *              call(set_bit_func(bit_mutex))
163 *      1:      loc_mtx(MTX1)
164 *      2:      act_tsk(TASK2)
165 *      3:      act_tsk(TASK5)
166 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1
167 *      == TASK5¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
168 *      4:      ini_mtx(MTX1)                   ... (A-1)
169 *      //              ¹â¡§TASK5¡€Äã¡§TASK1¢ªTASK2
170 *              get_pri(TASK1, &tskpri)
171 *              assert(tskpri == LOW_PRIORITY)
172 *      5:      slp_tsk()
173 *      //              Äã¡§TASK1¢ªTASK2
174 *
175 *      == TASK1¡Ê³€­¡Ë==
176 *      6:      sus_tsk(TASK2)
177 *      7:      loc_mtx(MTX1)
178 *              loc_mtx(MTX2)
179 *      8:      act_tsk(TASK3)
180 *      //              Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1¡€MTX2¡§TASK1
181 *      9:      dis_dsp()
182 *      10:     rot_rdq(MID_PRIORITY)
183 *      //              Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1¡€MTX2¡§TASK1
184 *      11:     act_tsk(TASK4)
185 *      //              Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX1¡§TASK1¡€MTX2¡§TASK1
186 *      12:     wup_tsk(TASK5)
187 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX1¡§TASK1¡€MTX2¡§TASK1
188 *      13:     ena_dsp()
189 *      == TASK5¡Ê³€­¡Ë==
190 *      14:     ini_mtx(MTX1)                   ... (A-2)
191 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
192 *              get_pri(TASK1, &tskpri)
193 *              assert(tskpri == MID_PRIORITY)
194 *      15:     slp_tsk()
195 *      //              Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
196 *      == TASK3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
197 *      16:     slp_tsk()
198 *      //              Ãæ¡§TASK1¢ªTASK4¡€MTX2¡§TASK1
199 *      == TASK1¡Ê³€­¡Ë==
200 *      17:     slp_tsk()
201 *      //              Ãæ¡§TASK4¡€MTX2¡§TASK1
202 *      == TASK4¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
203 *      18:     wup_tsk(TASK1)
204 *      //              Ãæ¡§TASK4¢ªTASK1¡€MTX2¡§TASK1
205 *      19:     slp_tsk()
206 *      //              Ãæ¡§TASK1¡€MTX2¡§TASK1
207 *
208 *      == TASK1¡Ê³€­¡Ë==
209 *      20:     loc_mtx(MTX3)
210 *      //              Ãæ¡§TASK1¡€MTX2¡§TASK1¡€MTX3¡§TASK1
211 *      21:     wup_tsk(TASK3)
212 *      //              Ãæ¡§TASK1¢ªTASK3¡€MTX2¡§TASK1¡€MTX3¡§TASK1
213 *      22:     dis_dsp()
214 *      23:     rot_rdq(MID_PRIORITY)
215 *      //              Ãæ¡§TASK3¢ªTASK1¡€MTX2¡§TASK1¡€MTX3¡§TASK1
216 *      24:     wup_tsk(TASK4)
217 *      //              Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1¡€MTX3¡§TASK1
218 *      25:     wup_tsk(TASK5)
219 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1¡€MTX3¡§TASK1
220 *      26:     ena_dsp()
221 *      == TASK5¡Ê³€­¡Ë==
222 *      27:     ini_mtx(MTX3)                   ... (A-3)
223 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
224 *              get_pri(TASK1, &tskpri)
225 *              assert(tskpri == MID_PRIORITY)
226 *      28:     slp_tsk()
227 *      //              Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
228 *      == TASK3¡Ê³€­¡Ë==
229 *      29:     slp_tsk()
230 *      //              Ãæ¡§TASK1¢ªTASK4¡€MTX2¡§TASK1
231 *
232 *      == TASK1¡Ê³€­¡Ë==
233 *      30:     slp_tsk()
234 *      //              Ãæ¡§TASK4¡€MTX2¡§TASK1
235 *      == TASK4¡Ê³€­¡Ë==
236 *      31:     wup_tsk(TASK1)
237 *      //              Ãæ¡§TASK4¢ªTASK1¡€MTX2¡§TASK1
238 *      32:     rot_rdq(MID_PRIORITY)
239 *      //              Ãæ¡§TASK1¢ªTASK4¡€MTX2¡§TASK1
240 *      == TASK1¡Ê³€­¡Ë==
241 *      33:     rsm_tsk(TASK2)
242 *      //              Ãæ¡§TASK1¢ªTASK4¡€Äã¡§TASK2¡€MTX2¡§TASK1
243 *      34:     ini_mtx(MTX2)                   ... (A-4)
244 *      //              Ãæ¡§TASK4¡€Äã¡§TASK1¢ªTASK2
245 *      == TASK4¡Ê³€­¡Ë==
246 *      35:     get_pri(TASK1, &tskpri)
247 *              assert(tskpri == LOW_PRIORITY)
248 *      36:     slp_tsk()
249 *      //              Äã¡§TASK1¢ªTASK2
250 *
251 *      == TASK1¡Ê³€­¡Ë==
252 *      37:     wup_tsk(TASK5)
253 *      == TASK5¡Ê³€­¡Ë==
254 *      38:     loc_mtx(MTX4)
255 *      39:     tslp_tsk(10) -> E_TMOUT
256 *      //              Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5
257 *      == TASK1¡Ê³€­¡Ë==
258 *      40:     loc_mtx(MTX1)
259 *      //              Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX4¡§TASK5
260 *      41:     loc_mtx(MTX4)
261 *      //              Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX4¡§TASK5¢ªTASK1
262 *      == TASK2¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
263 *      42:     loc_mtx(MTX4)
264 *      //              MTX1¡§TASK1¡€MTX4¡§TASK5¢ªTASK1¢ªTASK2
265 *      //              ¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
266 *      //              ¹â¡§TASK5¡€MTX1¡§TASK1¡€MTX4¡§TASK5¢ªTASK1¢ªTASK2
267 *      == TASK5¡Ê³€­¡Ë==
268 *      43:     ini_mtx(MTX1)                   ... (B-1)
269 *      //              ¹â¡§TASK5¡€MTX4¡§TASK5¢ªTASK2¢ªTASK1
270 *              get_pri(TASK1, &tskpri)
271 *              assert(tskpri == LOW_PRIORITY)
272 *      44:     unl_mtx(MTX4)
273 *      //              ¹â¡§TASK5¢ªTASK2¡€MTX4¡§TASK2¢ªTASK1
274 *      45:     slp_tsk()
275 *      //              ¹â¡§TASK2¡€MTX4¡§TASK2¢ªTASK1
276 *      == TASK2¡Ê³€­¡Ë==
277 *      46:     unl_mtx(MTX4)
278 *      //              ¹â¡§TASK1¡€Äã¡§TASK2¡€MTX4¡§TASK1
279 *      == TASK1¡Ê³€­¡Ë==
280 *      47:     unl_mtx(MTX4)
281 *      //              Äã¡§TASK1¢ªTASK2
282 *
283 *      48:     wup_tsk(TASK5)
284 *      == TASK5¡Ê³€­¡Ë==
285 *      49:     loc_mtx(MTX4)
286 *      50:     slp_tsk()
287 *      //              Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5
288 *      == TASK1¡Ê³€­¡Ë==
289 *      51:     wup_tsk(TASK3)
290 *      //              Ãæ¡§TASK3¡€Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5
291 *      == TASK3¡Ê³€­¡Ë==
292 *      52:     loc_mtx(MTX4)
293 *      //              Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5¢ªTASK3
294 *      == TASK1¡Ê³€­¡Ë==
295 *      53:     loc_mtx(MTX1)
296 *              loc_mtx(MTX2)
297 *      //              Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3
298 *      54:     loc_mtx(MTX4)
299 *      //              Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1
300 *      == TASK2¡Ê³€­¡Ë==
301 *      55:     wup_tsk(TASK4)
302 *      == TASK4¡Ê³€­¡Ë==
303 *      56:     loc_mtx(MTX4)
304 *      //              Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€
305 *      //                                                              MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
306 *      == TASK2¡Ê³€­¡Ë==
307 *      57:     wup_tsk(TASK5)
308 *      //              ¹â¡§TASK5¡€Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€
309 *      //                                                              MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
310 *      == TASK5¡Ê³€­¡Ë==
311 *      58:     ini_mtx(MTX1)                   ... (B-2)
312 *      //              ¹â¡§TASK5¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
313 *              get_pri(TASK1, &tskpri)
314 *              assert(tskpri == MID_PRIORITY)
315 *      59:     unl_mtx(MTX4)
316 *      //              ¹â¡§TASK5¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
317 *      60:     slp_tsk()
318 *      //              ¹â¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
319 *      == TASK3¡Ê³€­¡Ë==
320 *      61:     unl_mtx(MTX4)
321 *      //              ¹â¡§TASK1¡€Ãæ¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK1¢ªTASK4
322 *      == TASK1¡Ê³€­¡Ë==
323 *      62:     unl_mtx(MTX4)
324 *      //              ¹â¡§TASK4¡€Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK4
325 *      == TASK4¡Ê³€­¡Ë==
326 *      63:     unl_mtx(MTX4)
327 *      //              Ãæ¡§TASK4¢ªTASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
328 *      64:     slp_tsk()
329 *      //              Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
330 *      == TASK1¡Ê³€­¡Ë==
331 *      65:     slp_tsk()
332 *      //              Ãæ¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
333 *      == TASK3¡Ê³€­¡Ë==
334 *      66:     slp_tsk()
335 *      //              Äã¡§TASK2¡€MTX2¡§TASK1
336 *
337 *      == TASK2¡Ê³€­¡Ë==
338 *      67: wup_tsk(TASK5)
339 *      == TASK5¡Ê³€­¡Ë==
340 *      68:     loc_mtx(MTX4)
341 *      69:     slp_tsk()
342 *      //              Äã¡§TASK2¡€MTX4¡§TASK5
343 *      == TASK2¡Ê³€­¡Ë==
344 *      70:     wup_tsk(TASK3)
345 *      == TASK3¡Ê³€­¡Ë==
346 *      71:     loc_mtx(MTX4)
347 *      //              Äã¡§TASK2¡€MTX4¡§TASK5¢ªTASK3
348 *      == TASK2¡Ê³€­¡Ë==
349 *      72:     wup_tsk(TASK1)
350 *      //              Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX4¡§TASK5
351 *      == TASK1¡Ê³€­¡Ë==
352 *      73:     loc_mtx(MTX3)
353 *      //              Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€MTX4¡§TASK5¢ªTASK3
354 *      74:     loc_mtx(MTX4)
355 *      //              Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1
356 *      == TASK2¡Ê³€­¡Ë==
357 *      75:     wup_tsk(TASK4)
358 *      == TASK4¡Ê³€­¡Ë==
359 *      76:     loc_mtx(MTX4)
360 *      //              Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€
361 *      //                                                              MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
362 *      == TASK2¡Ê³€­¡Ë==
363 *      77:     wup_tsk(TASK5)
364 *      //              ¹â¡§TASK5¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€
365 *      //                                                              MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
366 *      == TASK5¡Ê³€­¡Ë==
367 *      78:     ini_mtx(MTX3)                   ... (B-3)
368 *      //              ¹â¡§TASK5¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
369 *              get_pri(TASK1, &tskpri)
370 *              assert(tskpri == MID_PRIORITY)
371 *      79:     unl_mtx(MTX4)
372 *      //              ¹â¡§TASK5¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
373 *      80:     slp_tsk()
374 *      //              ¹â¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
375 *      == TASK3¡Ê³€­¡Ë==
376 *      81:     unl_mtx(MTX4)
377 *      //              ¹â¡§TASK1¡€Ãæ¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK1¢ªTASK4
378 *      == TASK1¡Ê³€­¡Ë==
379 *      82:     unl_mtx(MTX4)
380 *      //              ¹â¡§TASK4¡€Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK4
381 *      == TASK4¡Ê³€­¡Ë==
382 *      83:     unl_mtx(MTX4)
383 *      //              Ãæ¡§TASK4¢ªTASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
384 *      84:     slp_tsk()
385 *      //              Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
386 *      == TASK1¡Ê³€­¡Ë==
387 *      85:     unl_mtx(MTX2)
388 *      //              Ãæ¡§TASK3¡€Äã¡§TASK1¢ªTASK2
389 *      == TASK3¡Ê³€­¡Ë==
390 *      86:     slp_tsk()
391 *      //              Äã¡§TASK1¢ªTASK2
392 *
393 *      == TASK1¡Ê³€­¡Ë==
394 *      87:     sus_tsk(TASK2)
395 *      //              Äã¡§TASK1
396 *      88:     loc_mtx(MTX1)
397 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1
398 *      89:     wup_tsk(TASK3)
399 *      //              Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1
400 *      90:     rot_rdq(MID_PRIORITY)
401 *      //              Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1
402 *      == TASK3¡Ê³€­¡Ë==
403 *      91:     loc_mtx(MTX1) -> E_DLT
404 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK3
405 *      == TASK1¡Ê³€­¡Ë==
406 *      92:     wup_tsk(TASK5)
407 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK3
408 *      == TASK5¡Ê³€­¡Ë==
409 *      93:     wup_tsk(TASK4)
410 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¢ªTASK4¡€MTX1¡§TASK1¢ªTASK3
411 *      94:     ini_mtx(MTX1)                   ... (C-1)
412 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK4¢ªTASK3¡€Äã¡§TASK1
413 *      95:     ext_tsk() -> noreturn
414 *      //              Ãæ¡§TASK4¢ªTASK3¡€Äã¡§TASK1
415 *      == TASK4¡Ê³€­¡Ë==
416 *      96:     ext_tsk() -> noreturn
417 *      //              Ãæ¡§TASK3¡€Äã¡§TASK1
418 *      == TASK3¡Ê³€­¡Ë==
419 *      97:     slp_tsk()
420 *      //              Äã¡§TASK1
421 *
422 *      == TASK1¡Ê³€­¡Ë==
423 *      98:     loc_mtx(MTX1)
424 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1
425 *      99:     wup_tsk(TASK3)
426 *      //              Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1
427 * 100: rot_rdq(MID_PRIORITY)
428 *      //              Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1
429 *      == TASK3¡Ê³€­¡Ë==
430 * 101: loc_mtx(MTX1) -> E_DLT
431 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK3
432 *      == TASK1¡Ê³€­¡Ë==
433 * 102: rsm_tsk(TASK2)
434 *      //              Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1¢ªTASK3
435 * 103: slp_tsk()
436 *      //              Äã¡§TASK2¡€MTX1¡§TASK1¢ªTASK3
437 *      == TASK2¡Ê³€­¡Ë==
438 * 104: ini_mtx(MTX1)                   ... (C-2)
439 *      //              Ãæ¡§TASK3¡€Äã¡§TASK2
440 *      == TASK3¡Ê³€­¡Ë==
441 * 105: ext_tsk() -> noreturn
442 *      //              Äã¡§TASK2
443 *      == TASK2¡Ê³€­¡Ë==
444 * 106: ter_tsk(TASK1)
445 * 107: END
446 */
447
448#include <kernel.h>
449#include <t_syslog.h>
450#include "kernel_cfg.h"
451#include "test_lib.h"
452#include "test_mutex5.h"
453
454extern ER       bit_mutex(void);
455
456/* DO NOT DELETE THIS LINE -- gentest depends on it. */
457
458void
459task1(intptr_t exinf)
460{
461        ER_UINT ercd;
462
463        test_start(__FILE__);
464
465        set_bit_func(bit_mutex);
466
467        check_point(1);
468        ercd = loc_mtx(MTX1);
469        check_ercd(ercd, E_OK);
470
471        check_point(2);
472        ercd = act_tsk(TASK2);
473        check_ercd(ercd, E_OK);
474
475        check_point(3);
476        ercd = act_tsk(TASK5);
477        check_ercd(ercd, E_OK);
478
479        check_point(6);
480        ercd = sus_tsk(TASK2);
481        check_ercd(ercd, E_OK);
482
483        check_point(7);
484        ercd = loc_mtx(MTX1);
485        check_ercd(ercd, E_OK);
486
487        ercd = loc_mtx(MTX2);
488        check_ercd(ercd, E_OK);
489
490        check_point(8);
491        ercd = act_tsk(TASK3);
492        check_ercd(ercd, E_OK);
493
494        check_point(9);
495        ercd = dis_dsp();
496        check_ercd(ercd, E_OK);
497
498        check_point(10);
499        ercd = rot_rdq(MID_PRIORITY);
500        check_ercd(ercd, E_OK);
501
502        check_point(11);
503        ercd = act_tsk(TASK4);
504        check_ercd(ercd, E_OK);
505
506        check_point(12);
507        ercd = wup_tsk(TASK5);
508        check_ercd(ercd, E_OK);
509
510        check_point(13);
511        ercd = ena_dsp();
512        check_ercd(ercd, E_OK);
513
514        check_point(17);
515        ercd = slp_tsk();
516        check_ercd(ercd, E_OK);
517
518        check_point(20);
519        ercd = loc_mtx(MTX3);
520        check_ercd(ercd, E_OK);
521
522        check_point(21);
523        ercd = wup_tsk(TASK3);
524        check_ercd(ercd, E_OK);
525
526        check_point(22);
527        ercd = dis_dsp();
528        check_ercd(ercd, E_OK);
529
530        check_point(23);
531        ercd = rot_rdq(MID_PRIORITY);
532        check_ercd(ercd, E_OK);
533
534        check_point(24);
535        ercd = wup_tsk(TASK4);
536        check_ercd(ercd, E_OK);
537
538        check_point(25);
539        ercd = wup_tsk(TASK5);
540        check_ercd(ercd, E_OK);
541
542        check_point(26);
543        ercd = ena_dsp();
544        check_ercd(ercd, E_OK);
545
546        check_point(30);
547        ercd = slp_tsk();
548        check_ercd(ercd, E_OK);
549
550        check_point(33);
551        ercd = rsm_tsk(TASK2);
552        check_ercd(ercd, E_OK);
553
554        check_point(34);
555        ercd = ini_mtx(MTX2);
556        check_ercd(ercd, E_OK);
557
558        check_point(37);
559        ercd = wup_tsk(TASK5);
560        check_ercd(ercd, E_OK);
561
562        check_point(40);
563        ercd = loc_mtx(MTX1);
564        check_ercd(ercd, E_OK);
565
566        check_point(41);
567        ercd = loc_mtx(MTX4);
568        check_ercd(ercd, E_OK);
569
570        check_point(47);
571        ercd = unl_mtx(MTX4);
572        check_ercd(ercd, E_OK);
573
574        check_point(48);
575        ercd = wup_tsk(TASK5);
576        check_ercd(ercd, E_OK);
577
578        check_point(51);
579        ercd = wup_tsk(TASK3);
580        check_ercd(ercd, E_OK);
581
582        check_point(53);
583        ercd = loc_mtx(MTX1);
584        check_ercd(ercd, E_OK);
585
586        ercd = loc_mtx(MTX2);
587        check_ercd(ercd, E_OK);
588
589        check_point(54);
590        ercd = loc_mtx(MTX4);
591        check_ercd(ercd, E_OK);
592
593        check_point(62);
594        ercd = unl_mtx(MTX4);
595        check_ercd(ercd, E_OK);
596
597        check_point(65);
598        ercd = slp_tsk();
599        check_ercd(ercd, E_OK);
600
601        check_point(73);
602        ercd = loc_mtx(MTX3);
603        check_ercd(ercd, E_OK);
604
605        check_point(74);
606        ercd = loc_mtx(MTX4);
607        check_ercd(ercd, E_OK);
608
609        check_point(82);
610        ercd = unl_mtx(MTX4);
611        check_ercd(ercd, E_OK);
612
613        check_point(85);
614        ercd = unl_mtx(MTX2);
615        check_ercd(ercd, E_OK);
616
617        check_point(87);
618        ercd = sus_tsk(TASK2);
619        check_ercd(ercd, E_OK);
620
621        check_point(88);
622        ercd = loc_mtx(MTX1);
623        check_ercd(ercd, E_OK);
624
625        check_point(89);
626        ercd = wup_tsk(TASK3);
627        check_ercd(ercd, E_OK);
628
629        check_point(90);
630        ercd = rot_rdq(MID_PRIORITY);
631        check_ercd(ercd, E_OK);
632
633        check_point(92);
634        ercd = wup_tsk(TASK5);
635        check_ercd(ercd, E_OK);
636
637        check_point(98);
638        ercd = loc_mtx(MTX1);
639        check_ercd(ercd, E_OK);
640
641        check_point(99);
642        ercd = wup_tsk(TASK3);
643        check_ercd(ercd, E_OK);
644
645        check_point(100);
646        ercd = rot_rdq(MID_PRIORITY);
647        check_ercd(ercd, E_OK);
648
649        check_point(102);
650        ercd = rsm_tsk(TASK2);
651        check_ercd(ercd, E_OK);
652
653        check_point(103);
654        ercd = slp_tsk();
655        check_ercd(ercd, E_OK);
656
657        check_point(0);
658}
659
660void
661task2(intptr_t exinf)
662{
663        ER_UINT ercd;
664
665        check_point(42);
666        ercd = loc_mtx(MTX4);
667        check_ercd(ercd, E_OK);
668
669        check_point(46);
670        ercd = unl_mtx(MTX4);
671        check_ercd(ercd, E_OK);
672
673        check_point(55);
674        ercd = wup_tsk(TASK4);
675        check_ercd(ercd, E_OK);
676
677        check_point(57);
678        ercd = wup_tsk(TASK5);
679        check_ercd(ercd, E_OK);
680
681        check_point(67);
682        ercd = wup_tsk(TASK5);
683        check_ercd(ercd, E_OK);
684
685        check_point(70);
686        ercd = wup_tsk(TASK3);
687        check_ercd(ercd, E_OK);
688
689        check_point(72);
690        ercd = wup_tsk(TASK1);
691        check_ercd(ercd, E_OK);
692
693        check_point(75);
694        ercd = wup_tsk(TASK4);
695        check_ercd(ercd, E_OK);
696
697        check_point(77);
698        ercd = wup_tsk(TASK5);
699        check_ercd(ercd, E_OK);
700
701        check_point(104);
702        ercd = ini_mtx(MTX1);
703        check_ercd(ercd, E_OK);
704
705        check_point(106);
706        ercd = ter_tsk(TASK1);
707        check_ercd(ercd, E_OK);
708
709        check_finish(107);
710        check_point(0);
711}
712
713void
714task3(intptr_t exinf)
715{
716        ER_UINT ercd;
717
718        check_point(16);
719        ercd = slp_tsk();
720        check_ercd(ercd, E_OK);
721
722        check_point(29);
723        ercd = slp_tsk();
724        check_ercd(ercd, E_OK);
725
726        check_point(52);
727        ercd = loc_mtx(MTX4);
728        check_ercd(ercd, E_OK);
729
730        check_point(61);
731        ercd = unl_mtx(MTX4);
732        check_ercd(ercd, E_OK);
733
734        check_point(66);
735        ercd = slp_tsk();
736        check_ercd(ercd, E_OK);
737
738        check_point(71);
739        ercd = loc_mtx(MTX4);
740        check_ercd(ercd, E_OK);
741
742        check_point(81);
743        ercd = unl_mtx(MTX4);
744        check_ercd(ercd, E_OK);
745
746        check_point(86);
747        ercd = slp_tsk();
748        check_ercd(ercd, E_OK);
749
750        check_point(91);
751        ercd = loc_mtx(MTX1);
752        check_ercd(ercd, E_DLT);
753
754        check_point(97);
755        ercd = slp_tsk();
756        check_ercd(ercd, E_OK);
757
758        check_point(101);
759        ercd = loc_mtx(MTX1);
760        check_ercd(ercd, E_DLT);
761
762        check_point(105);
763        ercd = ext_tsk();
764
765        check_point(0);
766}
767
768void
769task4(intptr_t exinf)
770{
771        ER_UINT ercd;
772        PRI             tskpri;
773
774        check_point(18);
775        ercd = wup_tsk(TASK1);
776        check_ercd(ercd, E_OK);
777
778        check_point(19);
779        ercd = slp_tsk();
780        check_ercd(ercd, E_OK);
781
782        check_point(31);
783        ercd = wup_tsk(TASK1);
784        check_ercd(ercd, E_OK);
785
786        check_point(32);
787        ercd = rot_rdq(MID_PRIORITY);
788        check_ercd(ercd, E_OK);
789
790        check_point(35);
791        ercd = get_pri(TASK1, &tskpri);
792        check_ercd(ercd, E_OK);
793
794        check_assert(tskpri == LOW_PRIORITY);
795
796        check_point(36);
797        ercd = slp_tsk();
798        check_ercd(ercd, E_OK);
799
800        check_point(56);
801        ercd = loc_mtx(MTX4);
802        check_ercd(ercd, E_OK);
803
804        check_point(63);
805        ercd = unl_mtx(MTX4);
806        check_ercd(ercd, E_OK);
807
808        check_point(64);
809        ercd = slp_tsk();
810        check_ercd(ercd, E_OK);
811
812        check_point(76);
813        ercd = loc_mtx(MTX4);
814        check_ercd(ercd, E_OK);
815
816        check_point(83);
817        ercd = unl_mtx(MTX4);
818        check_ercd(ercd, E_OK);
819
820        check_point(84);
821        ercd = slp_tsk();
822        check_ercd(ercd, E_OK);
823
824        check_point(96);
825        ercd = ext_tsk();
826
827        check_point(0);
828}
829
830void
831task5(intptr_t exinf)
832{
833        ER_UINT ercd;
834        PRI             tskpri;
835
836        check_point(4);
837        ercd = ini_mtx(MTX1);
838        check_ercd(ercd, E_OK);
839
840        ercd = get_pri(TASK1, &tskpri);
841        check_ercd(ercd, E_OK);
842
843        check_assert(tskpri == LOW_PRIORITY);
844
845        check_point(5);
846        ercd = slp_tsk();
847        check_ercd(ercd, E_OK);
848
849        check_point(14);
850        ercd = ini_mtx(MTX1);
851        check_ercd(ercd, E_OK);
852
853        ercd = get_pri(TASK1, &tskpri);
854        check_ercd(ercd, E_OK);
855
856        check_assert(tskpri == MID_PRIORITY);
857
858        check_point(15);
859        ercd = slp_tsk();
860        check_ercd(ercd, E_OK);
861
862        check_point(27);
863        ercd = ini_mtx(MTX3);
864        check_ercd(ercd, E_OK);
865
866        ercd = get_pri(TASK1, &tskpri);
867        check_ercd(ercd, E_OK);
868
869        check_assert(tskpri == MID_PRIORITY);
870
871        check_point(28);
872        ercd = slp_tsk();
873        check_ercd(ercd, E_OK);
874
875        check_point(38);
876        ercd = loc_mtx(MTX4);
877        check_ercd(ercd, E_OK);
878
879        check_point(39);
880        ercd = tslp_tsk(10);
881        check_ercd(ercd, E_TMOUT);
882
883        check_point(43);
884        ercd = ini_mtx(MTX1);
885        check_ercd(ercd, E_OK);
886
887        ercd = get_pri(TASK1, &tskpri);
888        check_ercd(ercd, E_OK);
889
890        check_assert(tskpri == LOW_PRIORITY);
891
892        check_point(44);
893        ercd = unl_mtx(MTX4);
894        check_ercd(ercd, E_OK);
895
896        check_point(45);
897        ercd = slp_tsk();
898        check_ercd(ercd, E_OK);
899
900        check_point(49);
901        ercd = loc_mtx(MTX4);
902        check_ercd(ercd, E_OK);
903
904        check_point(50);
905        ercd = slp_tsk();
906        check_ercd(ercd, E_OK);
907
908        check_point(58);
909        ercd = ini_mtx(MTX1);
910        check_ercd(ercd, E_OK);
911
912        ercd = get_pri(TASK1, &tskpri);
913        check_ercd(ercd, E_OK);
914
915        check_assert(tskpri == MID_PRIORITY);
916
917        check_point(59);
918        ercd = unl_mtx(MTX4);
919        check_ercd(ercd, E_OK);
920
921        check_point(60);
922        ercd = slp_tsk();
923        check_ercd(ercd, E_OK);
924
925        check_point(68);
926        ercd = loc_mtx(MTX4);
927        check_ercd(ercd, E_OK);
928
929        check_point(69);
930        ercd = slp_tsk();
931        check_ercd(ercd, E_OK);
932
933        check_point(78);
934        ercd = ini_mtx(MTX3);
935        check_ercd(ercd, E_OK);
936
937        ercd = get_pri(TASK1, &tskpri);
938        check_ercd(ercd, E_OK);
939
940        check_assert(tskpri == MID_PRIORITY);
941
942        check_point(79);
943        ercd = unl_mtx(MTX4);
944        check_ercd(ercd, E_OK);
945
946        check_point(80);
947        ercd = slp_tsk();
948        check_ercd(ercd, E_OK);
949
950        check_point(93);
951        ercd = wup_tsk(TASK4);
952        check_ercd(ercd, E_OK);
953
954        check_point(94);
955        ercd = ini_mtx(MTX1);
956        check_ercd(ercd, E_OK);
957
958        check_point(95);
959        ercd = ext_tsk();
960
961        check_point(0);
962}
詳しい使い方は TracBrowser を参照してください。