source: extension/mutex/test/test_mutex8.c

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 17.9 KB
Rev 
[7]1/*
2 *  TOPPERS Software
3 *      Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 *  Copyright (C) 2009-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 *              ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(8)
42 *
43 * ¡Ú¥Æ¥¹¥È€ÎÌÜŪ¡Û
44 *
45 *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂЀ·€Æ¡€chg_pri€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽØÏ¢€Î
46 *  Í¥ÀèÅÙÊѹ¹œèÍý€òÌÖÍåŪ€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€È
47 *  mutex_calc_priority€ÎÆâÍÆ€Ë€ÏƧ€ß¹þ€Þ€Ê€€¡¥
48 *
49 * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
50 *
51 *      (A) ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊѹ¹œèÍý¡Êchg_pri¡Ë
52 *              (A-1) ÂПݥ¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂրǡ€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ
53 *                        €€€Ê€€Ÿì¹ç€Ë¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇÄã€Ë€Ê€ë€³€È
54 *              (A-2) ÂПݥ¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂրǡ€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹°Ê
55 *                        ³°€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î€ß€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Æ±€žÍ¥ÀèÅÙ
56 *                        Æâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇÄã€Ë€Ê€ë€³€È
57 *              (A-3) ÂПݥ¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂրǡ€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
58 *                        ¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê
59 *                        €€€³€È
60 *              (A-4) ÂПݥ¿¥¹¥¯€¬ÂÔ€ÁŸõÂրǡ€Í¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€ª
61 *                        €ê¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€Ÿì¹ç€Ë¡€Í¥ÀèÅÙ€¬Àµ€·
62 *                        €¯Êѹ¹€µ€ì¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€Îœçœø€¬ºÇžå€Ë€Ê€ë€³€È
63 *              (A-5) ÂПݥ¿¥¹¥¯€¬ÂÔ€ÁŸõÂրǡ€Í¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€ª
64 *                        €ê¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹°Ê³°€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î€ß€ò¥í¥Ã
65 *                        ¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Í¥ÀèÅÙ€¬Àµ€·€¯Êѹ¹€µ€ì¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç
66 *                        €Îœçœø€¬ºÇžå€Ë€Ê€ë€³€È
67 *              (A-6) ÂПݥ¿¥¹¥¯€¬ÂÔ€ÁŸõÂրǡ€Í¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€ª
68 *                        €ê¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Æ±€ž
69 *                        Í¥ÀèÅÙÆâ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È
70 *      (B) ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊѹ¹œèÍý¡Êchg_pri¡Ë€ÎE_ILUSE¥š¥é¡Œ
71 *              (B-1) ÂПݥ¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€è€ê
72 *                        €â¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€¿»þ¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë
73 *                        €³€È
74 *              (B-2) ÂПݥ¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Æ€â¡€
75 *                        ¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€è€ê€â¡€¥Ù¡Œ¥¹Í¥
76 *                        ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€Ê€€Ÿì¹ç€Ë€Ï¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€
77 *                        €³€È
78 *              (B-3) ÂПݥ¿¥¹¥¯€¬¥í¥Ã¥¯€òÂԀÀƀ€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ
79 *                        €è€ê€â¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€¿»þ¡€E_ILUSE¥š¥é¡Œ€Ë
80 *                        €Ê€ë€³€È
81 *              (B-4) ÂПݥ¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á€Ç€¢€Ã€Æ€â¡€¥í¥Ã
82 *                        ¥¯€òÂԀÀƀ€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€è€ê€â¡€¥Ù¡Œ¥¹Í¥
83 *                        ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€Ê€€Ÿì¹ç€Ë€Ï¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€
84 *                        €³€È
85 *
86 * ¡Ú¥Æ¥¹¥È¹àÌ܀ΌžœÊýË¡¡Û
87 *
88 *      (A-1)
89 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ŒÂ¹Ô²ÄÇœŸõÂրλþ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
90 *              ¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€ŒÂ¹Ô²ÄÇœŸõÂրΟ€Î
91 *              ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê€â¡€Í¥Àèœç°Ì€¬Ä〯€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥
92 *      (A-2)
93 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬Í¥ÀèÅÙœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯
94 *              €·¡€ŒÂ¹Ô²ÄÇœŸõÂրλþ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥
95 *              ÀèÅÙ€Ëchg_pri€¹€ë€È¡€ŒÂ¹Ô²ÄÇœŸõÂրΟ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë
96 *              €è€ê€â¡€Í¥Àèœç°Ì€¬Ä〯€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥
97 *      (A-3)
98 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
99 *              ¥¯€·¡€ŒÂ¹Ô²ÄÇœŸõÂրλþ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄã
100 *              Í¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊѲœ€·€Ê€€€³€È€ò³Îǧ€¹€ë¡¥
101 *              €Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK2¡€TASK3¡Ë€òÍѰՀ·
102 *              €Æ€ª€­¡€Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³Îǧ€¹€ë¡¥
103 *      (A-4)
104 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€òÂÔ€Ã
105 *              €Æ€€€ë»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ë
106 *              chg_pri€¹€ë€È¡€MTX2€òÂԀÀƀ€€ëŸ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê
107 *              €â¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬žå€Ë€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥
108 *      (A-5)
109 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬Í¥ÀèÅÙœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯
110 *              €·¡€¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€òÂԀÀƀ€€ë»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿
111 *              ¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€MTX2€òÂԀÀƀ€
112 *              €ëŸ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê€â¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬ÊÑ€ï€é
113 *              €Ê€€€³€È€ò³Îǧ€¹€ë¡¥
114 *      (A-6)
115 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
116 *              ¥¯€·¡€¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€òÂԀÀƀ€€ë»þ€Ë¡€¹âÍ¥
117 *              ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€TASK1€Î
118 *              Í¥ÀèÅÙ€¬ÊѲœ€·€Ê€€€³€È€ò³Îǧ€¹€ë¡¥€Þ€¿¡€MTX2€òÂԀÀƀ€€ëÃæÍ¥Àè
119 *              ÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK2¡€TASK3¡Ë€òÍѰՀ·€Æ€ª€­¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø
120 *              €¬ÊÑ€ï€é€Ê€€€³€È€ò³Îǧ€¹€ë¡¥
121 *      (B-1)
122 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
123 *              ¥¯€·¡€ŒÂ¹Ô²ÄÇœŸõÂրλþ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€ò¹â
124 *              Í¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥
125 *      (B-2)
126 *              (A-3)€Î¥Æ¥¹¥È¹àÌ܀ǡ€chg_pri€¬E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€€³€È€Ç³Îǧ
127 *              €Ç€­€Æ€€€ë¡¥
128 *      (B-3)
129 *              ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€Î¥í¥Ã
130 *              ¥¯€òÂԀÀƀ€€ë»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK2€ò¹âÍ¥ÀèÅÙ
131 *              €Ëchg_pri€¹€ë€È¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë€³€È€ò³Îǧ€¹€ë¡¥
132 *      (B-4)
133 *              (A-6)€Î¥Æ¥¹¥È¹àÌ܀ǡ€chg_pri€¬E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€€³€È€Ç³Îǧ
134 *              €Ç€­€Æ€€€ë¡¥
135 *
136 * ¡Ú»ÈÍѥ꥜¡Œ¥¹¡Û
137 *
138 *      TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
139 *      TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
140 *      TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
141 *      TASK4: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
142 *      TASK5: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
143 *      MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILING°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
144 *      MTX2: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILING°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
145 *      MTX3: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_TPRI°À­¡Ë
146 *
147 * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
148 *
149 *      == TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
150 *              call(set_bit_func(bit_mutex))
151 *      1:      act_tsk(TASK4)
152 *      2:      act_tsk(TASK5)
153 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK4
154 *      == TASK5¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
155 *      3:      chg_pri(TASK1, LOW_PRIORITY)            ... (A-1)
156 *      //              ¹â¡§TASK5¡€Äã¡§TASK4¢ªTASK1
157 *      4:      slp_tsk()
158 *      == TASK4¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
159 *      5:      slp_tsk()
160 *      == TASK1¡Ê³€­¡Ë==
161 *      6:      chg_pri(TSK_SELF, TPRI_INI)
162 *
163 *      7:      loc_mtx(MTX3)
164 *      8:      wup_tsk(TASK4)
165 *      9:      wup_tsk(TASK5)
166 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK4¡€MTX3¡§TASK1
167 *      == TASK5¡Ê³€­¡Ë==
168 *      10:     chg_pri(TASK1, LOW_PRIORITY)            ... (A-2)
169 *      //              ¹â¡§TASK5¡€Äã¡§TASK4¢ªTASK1¡€MTX3¡§TASK1
170 *      11:     slp_tsk()
171 *      == TASK4¡Ê³€­¡Ë==
172 *      12:     slp_tsk()
173 *      == TASK1¡Ê³€­¡Ë==
174 *      13:     unl_mtx(MTX3)
175 *              chg_pri(TSK_SELF, TPRI_INI)
176 *
177 *      14:     loc_mtx(MTX1)
178 *      15:     act_tsk(TASK2)
179 *      16:     dis_dsp()
180 *      17:     rot_rdq(MID_PRIORITY)
181 *      18:     act_tsk(TASK3)
182 *      //              Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
183 *      19:     wup_tsk(TASK5)
184 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
185 *      20:     ena_dsp()
186 *      == TASK5¡Ê³€­¡Ë==
187 *      21:     chg_pri(TASK1, LOW_PRIORITY)            ... (A-3)(B-2)
188 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
189 *              get_pri(TASK1, &tskpri)
190 *              assert(tskpri == MID_PRIORITY)
191 *      22:     slp_tsk()
192 *      //              Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
193 *      == TASK2¡Ê³€­¡Ë==
194 *      23:     slp_tsk()
195 *      //              Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1
196 *      == TASK1¡Ê³€­¡Ë==
197 *      24:     unl_mtx(MTX1)
198 *      //              Ãæ¡§TASK3¡€Äã¡§TASK1
199 *      == TASK3¡Ê³€­¡Ë==
200 *      25:     slp_tsk()
201 *      == TASK1¡Ê³€­¡Ë==
202 *      26:     chg_pri(TSK_SELF, TPRI_INI)
203 *
204 *      27:     wup_tsk(TASK5)
205 *      == TASK5¡Ê³€­¡Ë==
206 *      28:     loc_mtx(MTX2)
207 *      29:     tslp_tsk(10) -> E_TMOUT
208 *      == TASK1¡Ê³€­¡Ë==
209 *      30:     wup_tsk(TASK4)
210 *      31:     loc_mtx(MTX2)
211 *      == TASK4¡Ê³€­¡Ë==
212 *      32:     loc_mtx(MTX2)
213 *      //              MTX2¡§TASK5¢ªTASK1¢ªTASK4
214 *      //              ¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
215 *      //              ¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK1¢ªTASK4
216 *      == TASK5¡Ê³€­¡Ë==
217 *      33:     chg_pri(TASK1, LOW_PRIORITY)            ... (A-4)
218 *      //              ¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK4¢ªTASK1
219 *      34:     unl_mtx(MTX2)
220 *      //              ¹â¡§TASK5¢ªTASK4¡€MTX2¡§TASK4¢ªTASK1
221 *      35:     slp_tsk()
222 *      //              ¹â¡§TASK4¡€MTX2¡§TASK4¢ªTASK1
223 *      == TASK4¡Ê³€­¡Ë==
224 *      36:     unl_mtx(MTX2)
225 *      //              ¹â¡§TASK1¡€Äã¡§TASK4¡€MTX2¡§TASK1
226 *      == TASK1¡Ê³€­¡Ë==
227 *      37:     unl_mtx(MTX2)
228 *      //              Äã¡§TASK1¢ªTASK4
229 *      38:     chg_pri(TSK_SELF, TPRI_INI)
230 *
231 *      39:     loc_mtx(MTX3)
232 *      40:     wup_tsk(TASK5)
233 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK4¡€MTX3¡§TASK1
234 *      == TASK5¡Ê³€­¡Ë==
235 *      41:     loc_mtx(MTX2)
236 *      42:     tslp_tsk(10) -> E_TMOUT
237 *      == TASK1¡Ê³€­¡Ë==
238 *      43:     loc_mtx(MTX2)
239 *      == TASK4¡Ê³€­¡Ë==
240 *      44:     loc_mtx(MTX2)
241 *      //              MTX2¡§TASK5¢ªTASK1¢ªTASK4¡€MTX3¡§TASK1
242 *      //              ¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
243 *      //              ¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK1¢ªTASK4¡€MTX3¡§TASK1
244 *      == TASK5¡Ê³€­¡Ë==
245 *      45:     chg_pri(TASK1, LOW_PRIORITY)            ... (A-5)
246 *      //              ¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK4¢ªTASK1¡€MTX3¡§TASK1
247 *      46:     unl_mtx(MTX2)
248 *      //              ¹â¡§TASK5¢ªTASK4¡€MTX2¡§TASK4¢ªTASK1¡€MTX3¡§TASK1
249 *      47:     slp_tsk()
250 *      //              ¹â¡§TASK4¡€MTX2¡§TASK4¢ªTASK1¡€MTX3¡§TASK1
251 *      == TASK4¡Ê³€­¡Ë==
252 *      48:     unl_mtx(MTX2)
253 *      //              ¹â¡§TASK1¡€Äã¡§TASK4¡€MTX2¡§TASK1¡€MTX3¡§TASK1
254 *      == TASK1¡Ê³€­¡Ë==
255 *      49:     unl_mtx(MTX2)
256 *      //              Äã¡§TASK1¢ªTASK4¡€MTX3¡§TASK1
257 *      50:     unl_mtx(MTX3)
258 *      //              Äã¡§TASK1¢ªTASK4
259 *      51:     ter_tsk(TASK4)
260 *      52:     chg_pri(TSK_SELF, TPRI_INI)
261 *
262 *      53:     loc_mtx(MTX1)
263 *      54:     wup_tsk(TASK5)
264 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¡€MTX1¡§TASK1
265 *      == TASK5¡Ê³€­¡Ë==
266 *      55:     loc_mtx(MTX2)
267 *      56:     tslp_tsk(10) -> E_TMOUT
268 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1¡€MTX2¡§TASK5
269 *      == TASK1¡Ê³€­¡Ë==
270 *      57:     wup_tsk(TASK2)
271 *      58:     rot_rdq(MID_PRIORITY)
272 *      == TASK2¡Ê³€­¡Ë==
273 *      59:     loc_mtx(MTX2)
274 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2
275 *      == TASK1¡Ê³€­¡Ë==
276 *      60:     wup_tsk(TASK3)
277 *      61:     loc_mtx(MTX2)
278 *      //              Ãæ¡§TASK3¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1
279 *      == TASK3¡Ê³€­¡Ë==
280 *      62:     loc_mtx(MTX2)
281 *      //              MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1¢ªTASK3
282 *      //              ¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
283 *      //              ¹â¡§TASK5¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1¢ªTASK3
284 *      == TASK5¡Ê³€­¡Ë==
285 *      63:     chg_pri(TASK1, LOW_PRIORITY)            ... (A-6)(B-4)
286 *      //              ¹â¡§TASK5¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1¢ªTASK3
287 *              get_pri(TASK1, &tskpri)
288 *              assert(tskpri == MID_PRIORITY)
289 *      64:     unl_mtx(MTX2)
290 *      //              ¹â¡§TASK5¢ªTASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK2¢ªTASK1¢ªTASK3
291 *      65:     slp_tsk()
292 *      //              ¹â¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK2¢ªTASK1¢ªTASK3
293 *      == TASK2¡Ê³€­¡Ë==
294 *      66:     unl_mtx(MTX2)
295 *      //              ¹â¡§TASK1¡€Ãæ¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¢ªTASK3
296 *      == TASK1¡Ê³€­¡Ë==
297 *      67:     unl_mtx(MTX2)
298 *      //              ¹â¡§TASK3¡€Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK3
299 *      == TASK3¡Ê³€­¡Ë==
300 *      68:     unl_mtx(MTX2)
301 *      //              Ãæ¡§TASK3¢ªTASK1¢ªTASK2¡€MTX1¡§TASK1
302 *      69:     ext_tsk() -> noreturn
303 *      //              Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK1
304 *      == TASK1¡Ê³€­¡Ë==
305 *      70:     chg_pri(TSK_SELF, TPRI_INI)
306 *      //              Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK1
307 *
308 *      71:     rot_rdq(MID_PRIORITY)
309 *      //              Ãæ¡§TASK2¢ªTASK1¡€MTX1¡§TASK1
310 *      == TASK2¡Ê³€­¡Ë==
311 *      72:     loc_mtx(MTX1)
312 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK2
313 *      == TASK1¡Ê³€­¡Ë==
314 *      73:     wup_tsk(TASK5)
315 *      //              ¹â¡§TASK5¡€Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK2
316 *      == TASK5¡Ê³€­¡Ë==
317 *      74:     chg_pri(TASK1, HIGH_PRIORITY) -> E_ILUSE        ... (B-1)
318 *      75:     chg_pri(TASK2, HIGH_PRIORITY) -> E_ILUSE        ... (B-3)
319 *      76:     ext_tsk() -> noreturn
320 *      //              Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK2
321 *      == TASK1¡Ê³€­¡Ë==
322 *      77:     unl_mtx(MTX1)
323 *      //              Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK2
324 *      78:     ext_tsk() -> noreturn
325 *      == TASK2¡Ê³€­¡Ë==
326 *      79:     unl_mtx(MTX1)
327 *      80:     END
328 */
329
330#include <kernel.h>
331#include <t_syslog.h>
332#include "kernel_cfg.h"
333#include "test_lib.h"
334#include "test_mutex8.h"
335
336extern ER       bit_mutex(void);
337
338/* DO NOT DELETE THIS LINE -- gentest depends on it. */
339
340void
341task1(intptr_t exinf)
342{
343        ER_UINT ercd;
344
345        test_start(__FILE__);
346
347        set_bit_func(bit_mutex);
348
349        check_point(1);
350        ercd = act_tsk(TASK4);
351        check_ercd(ercd, E_OK);
352
353        check_point(2);
354        ercd = act_tsk(TASK5);
355        check_ercd(ercd, E_OK);
356
357        check_point(6);
358        ercd = chg_pri(TSK_SELF, TPRI_INI);
359        check_ercd(ercd, E_OK);
360
361        check_point(7);
362        ercd = loc_mtx(MTX3);
363        check_ercd(ercd, E_OK);
364
365        check_point(8);
366        ercd = wup_tsk(TASK4);
367        check_ercd(ercd, E_OK);
368
369        check_point(9);
370        ercd = wup_tsk(TASK5);
371        check_ercd(ercd, E_OK);
372
373        check_point(13);
374        ercd = unl_mtx(MTX3);
375        check_ercd(ercd, E_OK);
376
377        ercd = chg_pri(TSK_SELF, TPRI_INI);
378        check_ercd(ercd, E_OK);
379
380        check_point(14);
381        ercd = loc_mtx(MTX1);
382        check_ercd(ercd, E_OK);
383
384        check_point(15);
385        ercd = act_tsk(TASK2);
386        check_ercd(ercd, E_OK);
387
388        check_point(16);
389        ercd = dis_dsp();
390        check_ercd(ercd, E_OK);
391
392        check_point(17);
393        ercd = rot_rdq(MID_PRIORITY);
394        check_ercd(ercd, E_OK);
395
396        check_point(18);
397        ercd = act_tsk(TASK3);
398        check_ercd(ercd, E_OK);
399
400        check_point(19);
401        ercd = wup_tsk(TASK5);
402        check_ercd(ercd, E_OK);
403
404        check_point(20);
405        ercd = ena_dsp();
406        check_ercd(ercd, E_OK);
407
408        check_point(24);
409        ercd = unl_mtx(MTX1);
410        check_ercd(ercd, E_OK);
411
412        check_point(26);
413        ercd = chg_pri(TSK_SELF, TPRI_INI);
414        check_ercd(ercd, E_OK);
415
416        check_point(27);
417        ercd = wup_tsk(TASK5);
418        check_ercd(ercd, E_OK);
419
420        check_point(30);
421        ercd = wup_tsk(TASK4);
422        check_ercd(ercd, E_OK);
423
424        check_point(31);
425        ercd = loc_mtx(MTX2);
426        check_ercd(ercd, E_OK);
427
428        check_point(37);
429        ercd = unl_mtx(MTX2);
430        check_ercd(ercd, E_OK);
431
432        check_point(38);
433        ercd = chg_pri(TSK_SELF, TPRI_INI);
434        check_ercd(ercd, E_OK);
435
436        check_point(39);
437        ercd = loc_mtx(MTX3);
438        check_ercd(ercd, E_OK);
439
440        check_point(40);
441        ercd = wup_tsk(TASK5);
442        check_ercd(ercd, E_OK);
443
444        check_point(43);
445        ercd = loc_mtx(MTX2);
446        check_ercd(ercd, E_OK);
447
448        check_point(49);
449        ercd = unl_mtx(MTX2);
450        check_ercd(ercd, E_OK);
451
452        check_point(50);
453        ercd = unl_mtx(MTX3);
454        check_ercd(ercd, E_OK);
455
456        check_point(51);
457        ercd = ter_tsk(TASK4);
458        check_ercd(ercd, E_OK);
459
460        check_point(52);
461        ercd = chg_pri(TSK_SELF, TPRI_INI);
462        check_ercd(ercd, E_OK);
463
464        check_point(53);
465        ercd = loc_mtx(MTX1);
466        check_ercd(ercd, E_OK);
467
468        check_point(54);
469        ercd = wup_tsk(TASK5);
470        check_ercd(ercd, E_OK);
471
472        check_point(57);
473        ercd = wup_tsk(TASK2);
474        check_ercd(ercd, E_OK);
475
476        check_point(58);
477        ercd = rot_rdq(MID_PRIORITY);
478        check_ercd(ercd, E_OK);
479
480        check_point(60);
481        ercd = wup_tsk(TASK3);
482        check_ercd(ercd, E_OK);
483
484        check_point(61);
485        ercd = loc_mtx(MTX2);
486        check_ercd(ercd, E_OK);
487
488        check_point(67);
489        ercd = unl_mtx(MTX2);
490        check_ercd(ercd, E_OK);
491
492        check_point(70);
493        ercd = chg_pri(TSK_SELF, TPRI_INI);
494        check_ercd(ercd, E_OK);
495
496        check_point(71);
497        ercd = rot_rdq(MID_PRIORITY);
498        check_ercd(ercd, E_OK);
499
500        check_point(73);
501        ercd = wup_tsk(TASK5);
502        check_ercd(ercd, E_OK);
503
504        check_point(77);
505        ercd = unl_mtx(MTX1);
506        check_ercd(ercd, E_OK);
507
508        check_point(78);
509        ercd = ext_tsk();
510
511        check_point(0);
512}
513
514void
515task2(intptr_t exinf)
516{
517        ER_UINT ercd;
518
519        check_point(23);
520        ercd = slp_tsk();
521        check_ercd(ercd, E_OK);
522
523        check_point(59);
524        ercd = loc_mtx(MTX2);
525        check_ercd(ercd, E_OK);
526
527        check_point(66);
528        ercd = unl_mtx(MTX2);
529        check_ercd(ercd, E_OK);
530
531        check_point(72);
532        ercd = loc_mtx(MTX1);
533        check_ercd(ercd, E_OK);
534
535        check_point(79);
536        ercd = unl_mtx(MTX1);
537        check_ercd(ercd, E_OK);
538
539        check_finish(80);
540        check_point(0);
541}
542
543void
544task3(intptr_t exinf)
545{
546        ER_UINT ercd;
547
548        check_point(25);
549        ercd = slp_tsk();
550        check_ercd(ercd, E_OK);
551
552        check_point(62);
553        ercd = loc_mtx(MTX2);
554        check_ercd(ercd, E_OK);
555
556        check_point(68);
557        ercd = unl_mtx(MTX2);
558        check_ercd(ercd, E_OK);
559
560        check_point(69);
561        ercd = ext_tsk();
562
563        check_point(0);
564}
565
566void
567task4(intptr_t exinf)
568{
569        ER_UINT ercd;
570
571        check_point(5);
572        ercd = slp_tsk();
573        check_ercd(ercd, E_OK);
574
575        check_point(12);
576        ercd = slp_tsk();
577        check_ercd(ercd, E_OK);
578
579        check_point(32);
580        ercd = loc_mtx(MTX2);
581        check_ercd(ercd, E_OK);
582
583        check_point(36);
584        ercd = unl_mtx(MTX2);
585        check_ercd(ercd, E_OK);
586
587        check_point(44);
588        ercd = loc_mtx(MTX2);
589        check_ercd(ercd, E_OK);
590
591        check_point(48);
592        ercd = unl_mtx(MTX2);
593        check_ercd(ercd, E_OK);
594
595        check_point(0);
596}
597
598void
599task5(intptr_t exinf)
600{
601        ER_UINT ercd;
602        PRI             tskpri;
603
604        check_point(3);
605        ercd = chg_pri(TASK1, LOW_PRIORITY);
606        check_ercd(ercd, E_OK);
607
608        check_point(4);
609        ercd = slp_tsk();
610        check_ercd(ercd, E_OK);
611
612        check_point(10);
613        ercd = chg_pri(TASK1, LOW_PRIORITY);
614        check_ercd(ercd, E_OK);
615
616        check_point(11);
617        ercd = slp_tsk();
618        check_ercd(ercd, E_OK);
619
620        check_point(21);
621        ercd = chg_pri(TASK1, LOW_PRIORITY);
622        check_ercd(ercd, E_OK);
623
624        ercd = get_pri(TASK1, &tskpri);
625        check_ercd(ercd, E_OK);
626
627        check_assert(tskpri == MID_PRIORITY);
628
629        check_point(22);
630        ercd = slp_tsk();
631        check_ercd(ercd, E_OK);
632
633        check_point(28);
634        ercd = loc_mtx(MTX2);
635        check_ercd(ercd, E_OK);
636
637        check_point(29);
638        ercd = tslp_tsk(10);
639        check_ercd(ercd, E_TMOUT);
640
641        check_point(33);
642        ercd = chg_pri(TASK1, LOW_PRIORITY);
643        check_ercd(ercd, E_OK);
644
645        check_point(34);
646        ercd = unl_mtx(MTX2);
647        check_ercd(ercd, E_OK);
648
649        check_point(35);
650        ercd = slp_tsk();
651        check_ercd(ercd, E_OK);
652
653        check_point(41);
654        ercd = loc_mtx(MTX2);
655        check_ercd(ercd, E_OK);
656
657        check_point(42);
658        ercd = tslp_tsk(10);
659        check_ercd(ercd, E_TMOUT);
660
661        check_point(45);
662        ercd = chg_pri(TASK1, LOW_PRIORITY);
663        check_ercd(ercd, E_OK);
664
665        check_point(46);
666        ercd = unl_mtx(MTX2);
667        check_ercd(ercd, E_OK);
668
669        check_point(47);
670        ercd = slp_tsk();
671        check_ercd(ercd, E_OK);
672
673        check_point(55);
674        ercd = loc_mtx(MTX2);
675        check_ercd(ercd, E_OK);
676
677        check_point(56);
678        ercd = tslp_tsk(10);
679        check_ercd(ercd, E_TMOUT);
680
681        check_point(63);
682        ercd = chg_pri(TASK1, LOW_PRIORITY);
683        check_ercd(ercd, E_OK);
684
685        ercd = get_pri(TASK1, &tskpri);
686        check_ercd(ercd, E_OK);
687
688        check_assert(tskpri == MID_PRIORITY);
689
690        check_point(64);
691        ercd = unl_mtx(MTX2);
692        check_ercd(ercd, E_OK);
693
694        check_point(65);
695        ercd = slp_tsk();
696        check_ercd(ercd, E_OK);
697
698        check_point(74);
699        ercd = chg_pri(TASK1, HIGH_PRIORITY);
700        check_ercd(ercd, E_ILUSE);
701
702        check_point(75);
703        ercd = chg_pri(TASK2, HIGH_PRIORITY);
704        check_ercd(ercd, E_ILUSE);
705
706        check_point(76);
707        ercd = ext_tsk();
708
709        check_point(0);
710}
詳しい使い方は TracBrowser を参照してください。