Changeset 315 for rubycfg_asp/trunk/asp_dcre/test/test_sem1.c
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/test/test_sem1.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=UTF-8
r313 r315 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 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 * 免責すること. 44 30 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * ã»ããã©æ©è½ã®ãã¹ã(1) 57 * 58 * ããã¹ãã®ç®çã 59 * 60 * sig_semï¼wai_semï¼CRE_SEMãç¶²ç¾ 61 çã«ãã¹ãããï¼ 62 * ãã ãï¼CRE_SEMã®ã¨ã©ã¼ã®ãã¹ãã¯é¤ãï¼ 63 * 64 * ããã¹ãé 65 ç®ã 66 * 67 * (A) sig_semã®éçã¨ã©ã¼ã®ãã¹ã 68 * (A-1) éã¿ã¹ã¯ã³ã³ããã¹ãããã®å¼åºã 69 * (A-2) CPUããã¯ç¶æ 70 ããã®å¼åºã 71 * (A-3) semidãä¸æ£ï¼å°ããããï¼ 72 * (A-4) semidãä¸æ£ï¼å¤§ããããï¼ 73 * (B) sig_semã«ããã»ããã©å¾ 74 ã¡ç¶æ 75 ã®ã¿ã¹ã¯ãå¾ 76 ã¡è§£é¤ããã 77 * (B-1) å¾ 78 ã¡è§£é¤ãããã¿ã¹ã¯ã«åãæãã 79 * (B-2) ãã£ã¹ãããä¿çç¶æ 80 ã§ï¼åãæãããªã 81 * (B-3) å¾ 82 ã¡è§£é¤ãããã¿ã¹ã¯ãå¼·å¶å¾ 83 ã¡ç¶æ 84 ã§ï¼åãæãããªã 85 * (B-4) å¾ 86 ã¡è§£é¤ãããã¿ã¹ã¯ãåªå 87 度ãä½ãï¼åãæãããªã 88 * (C) sig_semã«ããã»ããã©ã®è³æºæ°ã1å¢ãã 89 * (C-1) ã»ããã©ã®è³æºæ°ã0ãã1ã«ãªã 90 * (C-2) ã»ããã©ã®è³æºæ°ã1ãã2ã«ãªã 91 * (D) sig_semãE_QOVRã¨ã©ã¼ã¨ãªã 92 * (D-1) ã»ããã©ã®æ大è³æºæ°ã1ã®æ 93 * (D-2) ã»ããã©ã®æ大è³æºæ°ã2ã®æ 94 * (E) wai_semã®éçã¨ã©ã¼ã®ãã¹ã 95 * (E-1) éã¿ã¹ã¯ã³ã³ããã¹ãããã®å¼åºã 96 * (E-2) CPUããã¯ç¶æ 97 ããã®å¼åºã 98 * (E-3) ãã£ã¹ãããç¦æ¢ç¶æ 99 ããã®å¼åºã 100 * (E-4) å²è¾¼ã¿åªå 101 度ãã¹ã¯å 102 ¨è§£é¤ã§ãªãç¶æ 103 ããã®å¼åºã 104 * (E-5) semidãä¸æ£ï¼å°ããããï¼ 105 * (E-6) semidãä¸æ£ï¼å¤§ããããï¼ 106 * (F) wai_semã«ããã»ããã©ã®è³æºæ°ã1æ¸ã 107 * (F-1) ã»ããã©ã®è³æºæ°ã1ãã0ã«ãªã 108 * (F-2) ã»ããã©ã®è³æºæ°ã2ãã1ã«ãªã 109 * (G) wai_semã«ããã»ããã©å¾ 110 ã¡ç¶æ 111 ã«ãªã 112 * (G-1) TA_TNULLå±æ§ã®ã»ããã©ã§ï¼å¾ 113 ã£ã¦ããã¿ã¹ã¯ããªãã£ãå ´å 114 * (G-2) TA_TNULLå±æ§ã®ã»ããã©ã§ï¼å¾ 115 ã£ã¦ããã¿ã¹ã¯ããã£ãå ´å 116 * (G-3) TA_TPRIå±æ§ã®ã»ããã©ã§ï¼å¾ 117 ã£ã¦ããã¿ã¹ã¯ããªãã£ãå ´å 118 * (G-4) TA_TPRIå±æ§ã®ã»ããã©ã§ï¼åªå 119 度ãé«ãã¿ã¹ã¯ãå¾ 120 ã£ã¦ããå ´å 121 * (G-5) TA_TPRIå±æ§ã®ã»ããã©ã§ï¼åªå 122 度ãåãã¿ã¹ã¯ãå¾ 123 ã£ã¦ããå ´å 124 * (G-6) TA_TPRIå±æ§ã®ã»ããã©ã§ï¼åªå 125 度ãä½ãã¿ã¹ã¯ãå¾ 126 ã£ã¦ããå ´å 127 * (H) ã»ããã©å¾ 128 ã¡ç¶æ 129 ãå¼·å¶è§£é¤ããã 130 * (I) ã»ããã©å¾ 131 ã¡ç¶æ 132 ã®éã«ã»ããã©ãåæåããã 133 * (J) ã»ããã©ã®è³æºæ°ã®åæå¤ãæ£ããè¨å®ããã 134 * (J-1) ã»ããã©ã®è³æºæ°ã®åæå¤ã0 135 * (J-2) ã»ããã©ã®è³æºæ°ã®åæå¤ã1 136 * (J-3) ã»ããã©ã®è³æºæ°ã®åæå¤ã2 137 * 138 * ã使ç¨ãªã½ã¼ã¹ã 139 * 140 * TASK1: ä¸åªå 141 度ã¿ã¹ã¯ï¼TA_ACTå±æ§ 142 * TASK2: é«åªå 143 度ã¿ã¹ã¯ 144 * TASK3: ä½åªå 145 度ã¿ã¹ã¯ 146 * TASK4: ä¸åªå 147 度ã¿ã¹ã¯ 148 * TASK5: ä¸åªå 149 度ã¿ã¹ã¯ 150 * ALM1: ã¢ã©ã¼ã ãã³ãã© 151 * SEM1: TA_NULLå±æ§ï¼åæè³æºæ°1ï¼æ大è³æºæ°1 152 * SEM2: TA_NULLå±æ§ï¼åæè³æºæ°2ï¼æ大è³æºæ°2 153 * SEM3: TA_TPRIå±æ§ï¼åæè³æºæ°0ï¼æ大è³æºæ°1 154 * 155 * ããã¹ãã·ã¼ã±ã³ã¹ã 156 * 157 * == TASK1ï¼åªå 158 度ï¼ä¸ï¼== 41 * セマフォ機能のテスト(1) 42 * 43 * 【テストの目的】 44 * 45 * sig_sem,wai_sem,CRE_SEMを網羅的にテストする. 46 * ただし,CRE_SEMのエラーのテストは除く. 47 * 48 * 【テスト項目】 49 * 50 * (A) sig_semの静的エラーのテスト 51 * (A-1) 非タスクコンテキストからの呼出し 52 * (A-2) CPUロック状態からの呼出し 53 * (A-3) semidが不正(小さすぎる) 54 * (A-4) semidが不正(大きすぎる) 55 * (B) sig_semによりセマフォ待ち状態のタスクが待ち解除される 56 * (B-1) 待ち解除されたタスクに切り換わる 57 * (B-2) ディスパッチ保留状態で,切り換わらない 58 * (B-3) 待ち解除されたタスクが強制待ち状態で,切り換わらない 59 * (B-4) 待ち解除されたタスクが優先度が低く,切り換わらない 60 * (C) sig_semによりセマフォの資源数が1増える 61 * (C-1) セマフォの資源数が0から1になる 62 * (C-2) セマフォの資源数が1から2になる 63 * (D) sig_semがE_QOVRエラーとなる 64 * (D-1) セマフォの最大資源数が1の時 65 * (D-2) セマフォの最大資源数が2の時 66 * (E) wai_semの静的エラーのテスト 67 * (E-1) 非タスクコンテキストからの呼出し 68 * (E-2) CPUロック状態からの呼出し 69 * (E-3) ディスパッチ禁止状態からの呼出し 70 * (E-4) 割込み優先度マスク全解除でない状態からの呼出し 71 * (E-5) semidが不正(小さすぎる) 72 * (E-6) semidが不正(大きすぎる) 73 * (F) wai_semによりセマフォの資源数が1減る 74 * (F-1) セマフォの資源数が1から0になる 75 * (F-2) セマフォの資源数が2から1になる 76 * (G) wai_semによりセマフォ待ち状態になる 77 * (G-1) TA_TNULL属性のセマフォで,待っているタスクがなかった場合 78 * (G-2) TA_TNULL属性のセマフォで,待っているタスクがあった場合 79 * (G-3) TA_TPRI属性のセマフォで,待っているタスクがなかった場合 80 * (G-4) TA_TPRI属性のセマフォで,優先度が高いタスクが待っている場合 81 * (G-5) TA_TPRI属性のセマフォで,優先度が同じタスクが待っている場合 82 * (G-6) TA_TPRI属性のセマフォで,優先度が低いタスクが待っている場合 83 * (H) セマフォ待ち状態が強制解除される 84 * (I) セマフォ待ち状態の間にセマフォが初期化される 85 * (J) セマフォの資源数の初期値が正しく設定される 86 * (J-1) セマフォの資源数の初期値が0 87 * (J-2) セマフォの資源数の初期値が1 88 * (J-3) セマフォの資源数の初期値が2 89 * 90 * 【使用リソース】 91 * 92 * TASK1: 中優先度タスク,TA_ACT属性 93 * TASK2: 高優先度タスク 94 * TASK3: 低優先度タスク 95 * TASK4: 中優先度タスク 96 * TASK5: 中優先度タスク 97 * ALM1: アラームハンドラ 98 * SEM1: TA_NULL属性,初期資源数1,最大資源数1 99 * SEM2: TA_NULL属性,初期資源数2,最大資源数2 100 * SEM3: TA_TPRI属性,初期資源数0,最大資源数1 101 * 102 * 【テストシーケンス】 103 * 104 * == TASK1(優先度:中)== 159 105 * 1: ref_sem(SEM1, &rsem) 160 106 * assert(rsem.wtskid == TSK_NONE) … … 182 128 * 3: act_tsk(TASK3) 183 129 * 4: slp_tsk() 184 * == TASK3ï¼åªå 185 度ï¼ä½ï¼== 130 * == TASK3(優先度:低)== 186 131 * 5: wai_sem(SEM1) ... (F-1) 187 132 * 6: ref_sem(SEM1, &rsem) … … 195 140 * 10: iwup_tsk(TASK1) 196 141 * 11: RETURN 197 * == TASK1 ï¼ç¶ãï¼==142 * == TASK1(続き)== 198 143 * 12: act_tsk(TASK2) 199 * == TASK2ï¼åªå 200 度ï¼é«ï¼== 144 * == TASK2(優先度:高)== 201 145 * 13: wai_sem(SEM1) ... (G-2) 202 * == TASK1 ï¼ç¶ãï¼==146 * == TASK1(続き)== 203 147 * 14: ref_sem(SEM1, &rsem) 204 148 * assert(rsem.wtskid == TASK3) … … 206 150 * 15: sig_sem(SEM1) ... (B-4) 207 151 * 16: sig_sem(SEM1) ... (B-1) 208 * == TASK2 ï¼ç¶ãï¼==152 * == TASK2(続き)== 209 153 * 17: wai_sem(SEM1) ... (G-1) 210 * == TASK1 ï¼ç¶ãï¼==154 * == TASK1(続き)== 211 155 * 18: dis_dsp() 212 156 * 19: sig_sem(SEM1) ... (B-2) 213 157 * 20: ena_dsp() 214 * == TASK2 ï¼ç¶ãï¼==158 * == TASK2(続き)== 215 159 * 21: wai_sem(SEM1) ... (G-1) 216 * == TASK1 ï¼ç¶ãï¼==160 * == TASK1(続き)== 217 161 * 22: sus_tsk(TASK2) 218 162 * 23: sig_sem(SEM1) ... (B-3) … … 223 167 * assert(rsem.semcnt == 1) 224 168 * 27: rsm_tsk(TASK2) 225 * == TASK2 ï¼ç¶ãï¼==169 * == TASK2(続き)== 226 170 * 28: wai_sem(SEM2) ... (F-2) 227 171 * 29: ref_sem(SEM2, &rsem) … … 230 174 * 30: wai_sem(SEM2) ... (F-1) 231 175 * 31: wai_sem(SEM2) ... (G-1) 232 * == TASK1 ï¼ç¶ãï¼==176 * == TASK1(続き)== 233 177 * 32: sig_sem(SEM2) ... (B-1) 234 * == TASK2 ï¼ç¶ãï¼==178 * == TASK2(続き)== 235 179 * 33: wai_sem(SEM3) ... (G-3) 236 * == TASK1 ï¼ç¶ãï¼==180 * == TASK1(続き)== 237 181 * 34: sig_sem(SEM2) ... (C-1) 238 182 * 35: sig_sem(SEM2) ... (C-2) … … 245 189 * assert(rsem.semcnt == 2) 246 190 * 39: tslp_tsk(10) -> E_TMOUT 247 * == TASK3 ï¼ç¶ãï¼==191 * == TASK3(続き)== 248 192 * 40: wai_sem(SEM3) ... (G-4) 249 * == TASK1 ï¼ç¶ãï¼==193 * == TASK1(続き)== 250 194 * 41: act_tsk(TASK4) 251 195 * 42: act_tsk(TASK5) 252 196 * 43: rot_rdq(TPRI_SELF) 253 * == TASK4ï¼åªå 254 度ï¼ä¸ï¼== 197 * == TASK4(優先度:中)== 255 198 * 44: wai_sem(SEM3) ... (G-6) 256 * == TASK5ï¼åªå 257 度ï¼ä¸ï¼== 199 * == TASK5(優先度:中)== 258 200 * 45: wai_sem(SEM3) ... (G-5) 259 * == TASK1 ï¼ç¶ãï¼==201 * == TASK1(続き)== 260 202 * 46: sig_sem(SEM3) ... (B-1) 261 * == TASK2 ï¼ç¶ãï¼==203 * == TASK2(続き)== 262 204 * 47: wai_sem(SEM1) 263 205 * wai_sem(SEM1) -> E_RLWAI 264 * == TASK1 ï¼ç¶ãï¼==206 * == TASK1(続き)== 265 207 * 48: sig_sem(SEM3) ... (B-4) 266 208 * 49: tslp_tsk(10) -> E_TMOUT 267 * == TASK4 ï¼ç¶ãï¼==209 * == TASK4(続き)== 268 210 * 50: ext_tsk() -> noreturn 269 * == TASK1 ï¼ç¶ãï¼==211 * == TASK1(続き)== 270 212 * 51: sig_sem(SEM3) ... (B-4) 271 213 * 52: tslp_tsk(10) -> E_TMOUT 272 * == TASK5 ï¼ç¶ãï¼==214 * == TASK5(続き)== 273 215 * 53: ext_tsk() -> noreturn 274 * == TASK1 ï¼ç¶ãï¼==216 * == TASK1(続き)== 275 217 * 54: sig_sem(SEM3) ... (B-4) 276 218 * 55: tslp_tsk(10) -> E_TMOUT 277 * == TASK3 ï¼ç¶ãï¼==219 * == TASK3(続き)== 278 220 * 56: ext_tsk() -> noreturn 279 * == TASK1 ï¼ç¶ãï¼==221 * == TASK1(続き)== 280 222 * 57: rel_wai(TASK2) ... (H) 281 * == TASK2 ï¼ç¶ãï¼==223 * == TASK2(続き)== 282 224 * 58: wai_sem(SEM1) -> E_DLT 283 * == TASK1 ï¼ç¶ãï¼==225 * == TASK1(続き)== 284 226 * 59: ini_sem(SEM1) ... (I) 285 * == TASK2 ï¼ç¶ãï¼==227 * == TASK2(続き)== 286 228 * 60: ext_tsk() -> noreturn 287 * == TASK1 ï¼ç¶ãï¼==229 * == TASK1(続き)== 288 230 * 61: END 289 231 */ -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.