Ignore:
Timestamp:
Jul 23, 2017, 2:29:40 PM (7 years ago)
Author:
coas-nagasima
Message:

SVNプロパティを設定

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 to text/x-csrc; charset=UTF-8
    r313 r315  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    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 *      免責すること.
    4430 *
    45  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    46 ãŠ
    47  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    49  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    50  *  の責任を負わない.
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    5136 *
    5237 *  $Id$
     
    5439
    5540/*
    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(優先度:中)==
    159105 *  1:  ref_sem(SEM1, &rsem)
    160106 *              assert(rsem.wtskid == TSK_NONE)
     
    182128 *      3:      act_tsk(TASK3)
    183129 *      4:      slp_tsk()
    184  *      == TASK3(優å
    185 ˆåº¦ï¼šä½Žï¼‰==
     130 *      == TASK3(優先度:低)==
    186131 *      5:      wai_sem(SEM1)                                           ... (F-1)
    187132 *  6:  ref_sem(SEM1, &rsem)
     
    195140 *      10:     iwup_tsk(TASK1)
    196141 *      11:     RETURN
    197  *      == TASK1(続き)==
     142 *      == TASK1(続き)==
    198143 *      12:     act_tsk(TASK2)
    199  *      == TASK2(優å
    200 ˆåº¦ï¼šé«˜ï¼‰==
     144 *      == TASK2(優先度:高)==
    201145 *      13:     wai_sem(SEM1)                                           ... (G-2)
    202  *      == TASK1(続き)==
     146 *      == TASK1(続き)==
    203147 *  14: ref_sem(SEM1, &rsem)
    204148 *              assert(rsem.wtskid == TASK3)
     
    206150 *      15:     sig_sem(SEM1)                                           ... (B-4)
    207151 *      16:     sig_sem(SEM1)                                           ... (B-1)
    208  *      == TASK2(続き)==
     152 *      == TASK2(続き)==
    209153 *      17:     wai_sem(SEM1)                                           ... (G-1)
    210  *      == TASK1(続き)==
     154 *      == TASK1(続き)==
    211155 *      18: dis_dsp()
    212156 *      19:     sig_sem(SEM1)                                           ... (B-2)
    213157 *      20:     ena_dsp()
    214  *      == TASK2(続き)==
     158 *      == TASK2(続き)==
    215159 *      21:     wai_sem(SEM1)                                           ... (G-1)
    216  *      == TASK1(続き)==
     160 *      == TASK1(続き)==
    217161 *      22: sus_tsk(TASK2)
    218162 *      23:     sig_sem(SEM1)                                           ... (B-3)
     
    223167 *              assert(rsem.semcnt == 1)
    224168 *      27:     rsm_tsk(TASK2)
    225  *      == TASK2(続き)==
     169 *      == TASK2(続き)==
    226170 *      28:     wai_sem(SEM2)                                           ... (F-2)
    227171 *  29: ref_sem(SEM2, &rsem)
     
    230174 *      30:     wai_sem(SEM2)                                           ... (F-1)
    231175 *      31: wai_sem(SEM2)                                               ... (G-1)
    232  *      == TASK1(続き)==
     176 *      == TASK1(続き)==
    233177 *      32:     sig_sem(SEM2)                                           ... (B-1)
    234  *      == TASK2(続き)==
     178 *      == TASK2(続き)==
    235179 *      33:     wai_sem(SEM3)                                           ... (G-3)
    236  *      == TASK1(続き)==
     180 *      == TASK1(続き)==
    237181 *      34:     sig_sem(SEM2)                                           ... (C-1)
    238182 *      35:     sig_sem(SEM2)                                           ... (C-2)
     
    245189 *              assert(rsem.semcnt == 2)
    246190 *      39:     tslp_tsk(10) -> E_TMOUT
    247  *      == TASK3(続き)==
     191 *      == TASK3(続き)==
    248192 *      40:     wai_sem(SEM3)                                           ... (G-4)
    249  *      == TASK1(続き)==
     193 *      == TASK1(続き)==
    250194 *      41:     act_tsk(TASK4)
    251195 *      42:     act_tsk(TASK5)
    252196 *      43:     rot_rdq(TPRI_SELF)
    253  *      == TASK4(優å
    254 ˆåº¦ï¼šä¸­ï¼‰==
     197 *      == TASK4(優先度:中)==
    255198 *      44:     wai_sem(SEM3)                                           ... (G-6)
    256  *      == TASK5(優å
    257 ˆåº¦ï¼šä¸­ï¼‰==
     199 *      == TASK5(優先度:中)==
    258200 *      45:     wai_sem(SEM3)                                           ... (G-5)
    259  *      == TASK1(続き)==
     201 *      == TASK1(続き)==
    260202 *      46:     sig_sem(SEM3)                                           ... (B-1)
    261  *      == TASK2(続き)==
     203 *      == TASK2(続き)==
    262204 *      47:     wai_sem(SEM1)
    263205 *              wai_sem(SEM1) -> E_RLWAI
    264  *      == TASK1(続き)==
     206 *      == TASK1(続き)==
    265207 *      48:     sig_sem(SEM3)                                           ... (B-4)
    266208 *      49:     tslp_tsk(10) -> E_TMOUT
    267  *      == TASK4(続き)==
     209 *      == TASK4(続き)==
    268210 *      50:     ext_tsk() -> noreturn
    269  *      == TASK1(続き)==
     211 *      == TASK1(続き)==
    270212 *      51:     sig_sem(SEM3)                                           ... (B-4)
    271213 *      52:     tslp_tsk(10) -> E_TMOUT
    272  *      == TASK5(続き)==
     214 *      == TASK5(続き)==
    273215 *      53:     ext_tsk() -> noreturn
    274  *      == TASK1(続き)==
     216 *      == TASK1(続き)==
    275217 *      54:     sig_sem(SEM3)                                           ... (B-4)
    276218 *      55:     tslp_tsk(10) -> E_TMOUT
    277  *      == TASK3(続き)==
     219 *      == TASK3(続き)==
    278220 *      56:     ext_tsk() -> noreturn
    279  *      == TASK1(続き)==
     221 *      == TASK1(続き)==
    280222 *      57: rel_wai(TASK2)                                              ... (H)
    281  *      == TASK2(続き)==
     223 *      == TASK2(続き)==
    282224 *      58:     wai_sem(SEM1) -> E_DLT
    283  *      == TASK1(続き)==
     225 *      == TASK1(続き)==
    284226 *      59: ini_sem(SEM1)                                               ... (I)
    285  *      == TASK2(続き)==
     227 *      == TASK2(続き)==
    286228 *      60: ext_tsk() -> noreturn
    287  *      == TASK1(続き)==
     229 *      == TASK1(続き)==
    288230 *      61: END
    289231 */
Note: See TracChangeset for help on using the changeset viewer.