Changeset 315 for rubycfg_asp/trunk/asp_dcre/test/test_sem2.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_sem2.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 * ã»ããã©æ©è½ã®ãã¹ã(2) 57 * 58 * ããã¹ãã®ç®çã 59 * 60 * isig_semãï¼sig_semã¨ã®éããä¸å¿ã«ãã¹ãããï¼ 61 * pol_semï¼twai_semãï¼wai_semã¨ã®éããä¸å¿ã«ãã¹ãããï¼ 62 * 63 * ããã¹ãé 64 ç®ã 65 * 66 * (A) isig_semã®éçã¨ã©ã¼ã®ãã¹ã 67 * (A-1) ã¿ã¹ã¯ã³ã³ããã¹ãããã®å¼åºã 68 * (A-2) CPUããã¯ç¶æ 69 ããã®å¼åºã 70 * (B) isig_semã«ããã»ããã©å¾ 71 ã¡ç¶æ 72 ã®ã¿ã¹ã¯ãå¾ 73 ã¡è§£é¤ããã 74 * (B-1) ã¢ã¤ãã«ç¶æ 75 ããï¼å¾ 76 ã¡è§£é¤ãããã¿ã¹ã¯ã«åãæãã 77 * (B-2) å®è¡ç¶æ 78 ã®ã¿ã¹ã¯ããï¼å¾ 79 ã¡è§£é¤ãããã¿ã¹ã¯ã«åãæãã 80 * (B-3) ãã£ã¹ãããä¿çç¶æ 81 ã§ï¼åãæãããªã 82 * (B-4) å¾ 83 ã¡è§£é¤ãããã¿ã¹ã¯ãå¼·å¶å¾ 84 ã¡ç¶æ 85 ã§ï¼åãæãããªã 86 * (B-5) å¾ 87 ã¡è§£é¤ãããã¿ã¹ã¯ãåªå 88 度ãä½ãï¼åãæãããªã 89 * (C) pol_semã®éçã¨ã©ã¼ã®ãã¹ã 90 * (C-1) éã¿ã¹ã¯ã³ã³ããã¹ãããã®å¼åºã 91 * (C-2) CPUããã¯ç¶æ 92 ããã®å¼åºã 93 * (C-3) ãã£ã¹ãããç¦æ¢ç¶æ 94 ããã®å¼åºãï¼E_CTXã¨ã©ã¼ã«ãªããªãï¼ 95 * (C-4) å²è¾¼ã¿åªå 96 度ãã¹ã¯å 97 ¨è§£é¤ã§ãªãç¶æ 98 ããã®å¼åºãï¼E_CTXã¨ã©ã¼ 99 * ã«ãªããªãï¼ 100 * (D) pol_semã§ãã¼ãªã³ã°å¤±æãã 101 * (E) twai_semã®éçã¨ã©ã¼ã®ãã¹ã 102 * (E-1) éã¿ã¹ã¯ã³ã³ããã¹ãããã®å¼åºã 103 * (E-2) CPUããã¯ç¶æ 104 ããã®å¼åºã 105 * (E-3) ãã£ã¹ãããç¦æ¢ç¶æ 106 ããã®å¼åºã 107 * (E-4) å²è¾¼ã¿åªå 108 度ãã¹ã¯å 109 ¨è§£é¤ã§ãªãç¶æ 110 ããã®å¼åºã 111 * (E-5) tmoutãä¸æ£ 112 * (F) twai_semã§tmout=TMO_POLã®æã«ãã¼ãªã³ã°å¤±æãã 113 * (G) twai_semã§tmout=TMO_FEVRã®æã«ã»ããã©å¾ 114 ã¡ç¶æ 115 ã«ãªã 116 * (H) twai_semã§tmoutã«ã¿ã¤ã ã¢ã¦ããè¨å®ããæã«ï¼ã¿ã¤ã ã¢ã¦ãä»ãã® 117 * ã»ããã©å¾ 118 ã¡ç¶æ 119 ã«ãªã 120 * 121 * ã使ç¨ãªã½ã¼ã¹ã 122 * 123 * TASK1: ä¸åªå 124 度ã¿ã¹ã¯ï¼TA_ACTå±æ§ 125 * TASK2: é«åªå 126 度ã¿ã¹ã¯ 127 * TASK3: ä½åªå 128 度ã¿ã¹ã¯ 129 * TASK4: ä¸åªå 130 度ã¿ã¹ã¯ 131 * TASK5: ä¸åªå 132 度ã¿ã¹ã¯ 133 * ALM1: ã¢ã©ã¼ã ãã³ãã© 134 * SEM1: TA_NULLå±æ§ï¼åæè³æºæ°1ï¼æ大è³æºæ°1 135 * 136 * ããã¹ãã·ã¼ã±ã³ã¹ã 137 * 138 * == TASK1ï¼åªå 139 度ï¼ä¸ï¼== 41 * セマフォ機能のテスト(2) 42 * 43 * 【テストの目的】 44 * 45 * isig_semを,sig_semとの違いを中心にテストする. 46 * pol_sem,twai_semを,wai_semとの違いを中心にテストする. 47 * 48 * 【テスト項目】 49 * 50 * (A) isig_semの静的エラーのテスト 51 * (A-1) タスクコンテキストからの呼出し 52 * (A-2) CPUロック状態からの呼出し 53 * (B) isig_semによりセマフォ待ち状態のタスクが待ち解除される 54 * (B-1) アイドル状態から,待ち解除されたタスクに切り換わる 55 * (B-2) 実行状態のタスクから,待ち解除されたタスクに切り換わる 56 * (B-3) ディスパッチ保留状態で,切り換わらない 57 * (B-4) 待ち解除されたタスクが強制待ち状態で,切り換わらない 58 * (B-5) 待ち解除されたタスクが優先度が低く,切り換わらない 59 * (C) pol_semの静的エラーのテスト 60 * (C-1) 非タスクコンテキストからの呼出し 61 * (C-2) CPUロック状態からの呼出し 62 * (C-3) ディスパッチ禁止状態からの呼出し(E_CTXエラーにならない) 63 * (C-4) 割込み優先度マスク全解除でない状態からの呼出し(E_CTXエラー 64 * にならない) 65 * (D) pol_semでポーリング失敗する 66 * (E) twai_semの静的エラーのテスト 67 * (E-1) 非タスクコンテキストからの呼出し 68 * (E-2) CPUロック状態からの呼出し 69 * (E-3) ディスパッチ禁止状態からの呼出し 70 * (E-4) 割込み優先度マスク全解除でない状態からの呼出し 71 * (E-5) tmoutが不正 72 * (F) twai_semでtmout=TMO_POLの時にポーリング失敗する 73 * (G) twai_semでtmout=TMO_FEVRの時にセマフォ待ち状態になる 74 * (H) twai_semでtmoutにタイムアウトを設定した時に,タイムアウト付きの 75 * セマフォ待ち状態になる 76 * 77 * 【使用リソース】 78 * 79 * TASK1: 中優先度タスク,TA_ACT属性 80 * TASK2: 高優先度タスク 81 * TASK3: 低優先度タスク 82 * TASK4: 中優先度タスク 83 * TASK5: 中優先度タスク 84 * ALM1: アラームハンドラ 85 * SEM1: TA_NULL属性,初期資源数1,最大資源数1 86 * 87 * 【テストシーケンス】 88 * 89 * == TASK1(優先度:中)== 140 90 * 1: isig_sem(SEM1) -> E_CTX ... (A-1) 141 91 * 2: loc_cpu() … … 163 113 * 10: isig_sem(SEM1) ... (B-1) 164 114 * RETURN 165 * == TASK1 ï¼ç¶ãï¼==115 * == TASK1(続き)== 166 116 * 11: act_tsk(TASK3) 167 117 * 12: wai_sem(SEM1) 168 * == TASK3ï¼åªå 169 度ï¼ä½ï¼== 118 * == TASK3(優先度:低)== 170 119 * 13: sta_alm(ALM1, 10) 171 120 * call(wait_var()) … … 174 123 * call(signal_var()) 175 124 * RETURN 176 * == TASK1 ï¼ç¶ãï¼==125 * == TASK1(続き)== 177 126 * 15: wai_sem(SEM1) 178 * == TASK3 ï¼ç¶ãï¼==127 * == TASK3(続き)== 179 128 * 16: sta_alm(ALM1, 10) 180 129 * dis_dsp() … … 184 133 * call(signal_var()) 185 134 * RETURN 186 * == TASK3 ï¼ç¶ãï¼==135 * == TASK3(続き)== 187 136 * 18: ena_dsp() 188 * == TASK1 ï¼ç¶ãï¼==137 * == TASK1(続き)== 189 138 * 19: wai_sem(SEM1) 190 * == TASK3 ï¼ç¶ãï¼==139 * == TASK3(続き)== 191 140 * 20: sta_alm(ALM1, 10) 192 141 * sus_tsk(TASK1) … … 196 145 * call(signal_var()) 197 146 * RETURN 198 * == TASK3 ï¼ç¶ãï¼==147 * == TASK3(続き)== 199 148 * 22: rsm_tsk(TASK1) 200 * == TASK1 ï¼ç¶ãï¼==149 * == TASK1(続き)== 201 150 * 23: act_tsk(TASK2) 202 * == TASK2ï¼åªå 203 度ï¼é«ï¼== 151 * == TASK2(優先度:高)== 204 152 * 24: tslp_tsk(10) -> E_TMOUT 205 * == TASK1 ï¼ç¶ãï¼==153 * == TASK1(続き)== 206 154 * 25: wai_sem(SEM1) 207 * == TASK3 ï¼ç¶ãï¼==155 * == TASK3(続き)== 208 156 * 26: ext_tsk() -> noreturn 209 * == TASK2 ï¼ç¶ãï¼==157 * == TASK2(続き)== 210 158 * 27: sta_alm(ALM1, 10) 211 159 * call(wait_var()) … … 214 162 * call(signal_var()) 215 163 * RETURN 216 * == TASK2 ï¼ç¶ãï¼==164 * == TASK2(続き)== 217 165 * 29: ext_tsk() -> noreturn 218 * == TASK1 ï¼ç¶ãï¼==166 * == TASK1(続き)== 219 167 * 30: sta_alm(ALM1, 10) 220 168 * 31: twai_sem(SEM1, 100) -> E_RLWAI … … 222 170 * 32: irel_wai(TASK1) 223 171 * RETURN 224 * == TASK1 ï¼ç¶ãï¼==172 * == TASK1(続き)== 225 173 * 33: sta_alm(ALM1, 100) 226 174 * 34: twai_sem(SEM1, 10) -> E_TMOUT ... (H) -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.