Ignore:
Timestamp:
Mar 8, 2016, 8:37:45 PM (7 years ago)
Author:
coas-nagasima
Message:

MIMEにSJISを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/asp_dcre/kernel/wait.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    13  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    15  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    16  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    18  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—p
    20  *      ŽÒƒ}ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    22  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    24  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    25  *      ‚ƁD
    26  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    29  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    31  *        •ñ‚·‚邱‚ƁD
    32  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    33  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    34  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    35  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    36  *      –Ɛӂ·‚邱‚ƁD
    37  *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    39  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    40  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    41  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    42  *  ‚̐ӔC‚𕉂í‚È‚¢D
     11 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     12 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     13 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     15 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     16 *      スコード中に含まれていること.
     17 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     18 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     19 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     20 *      の無保証規定を掲載すること.
     21 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     22 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     23 *      と.
     24 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     25 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     26 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     27 *        報告すること.
     28 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     29 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     30 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     31 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ‘Ò‚¿ó‘ÔŠÇ—ƒ‚ƒWƒ
    49 [ƒ‹
     44 *              待ち状態管理モジュール
    5045 */
    5146
     
    5752
    5853/*
    59  *  ƒ^ƒXƒN‚Ì—Dæ“x‡‚Ì‘Ò‚¿ƒLƒ
    60 [‚Ö‚Ì‘}“ü
    61  *
    62  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚ðCƒ^ƒXƒN—Dæ“x‡‚̃Lƒ
    63 [p_queue‚É‘}“ü‚·‚éD
    64  *  ƒLƒ
    65 [‚Ì’†‚É“¯‚¶—Dæ“x‚̃^ƒXƒN‚ª‚ ‚éê‡‚ɂ́C‚»‚̍Ōã‚É‘}“ü‚·‚éD
     54 *  タスクの優先度順の待ちキューへの挿入
     55 *
     56 *  p_tcbで指定されるタスクを,タスク優先度順のキューp_queueに挿入する.
     57 *  キューの中に同じ優先度のタスクがある場合には,その最後に挿入する.
    6658 */
    6759Inline void
     
    8173
    8274/*
    83  *  ‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚ
    84  *
    85  *  ŽÀs’†‚̃^ƒXƒN‚ð‘Ò‚¿ó‘Ô‚É‘JˆÚ‚³‚¹‚éD‹ï‘Ì“I‚ɂ́CŽÀs’†‚̃^ƒXƒN‚ð
    86  *  ƒŒƒfƒBƒLƒ
    87 [‚©‚çíœ‚µCTCB‚Ìp_winfoƒtƒB[ƒ‹ƒhCWINFO‚Ìp_tmevtbƒtƒB[
    88  *  ƒ‹ƒh‚ðÝ’è‚·‚éD
     75 *  待ち状態への遷移
     76 *
     77 *  実行中のタスクを待ち状態に遷移させる.具体的には,実行中のタスクを
     78 *  レディキューから削除し,TCBのp_winfoフィールド,WINFOのp_tmevtbフィー
     79 *  ルドを設定する.
    8980 */
    9081Inline void
     
    9788
    9889/*
    99  *  ‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚiƒ^ƒCƒ€ƒAƒEƒgŽw’èj
    100  *
    101  *  ŽÀs’†‚̃^ƒXƒN‚ðCƒ^ƒCƒ€ƒAƒEƒgŽw’è•t‚«‚Å‘Ò‚¿ó‘Ô‚É‘JˆÚ‚³‚¹‚éD‹ï‘Ì
    102  *  “I‚ɂ́CŽÀs’†‚̃^ƒXƒN‚ðƒŒƒfƒBƒLƒ
    103 [‚©‚çíœ‚µCTCB‚Ìp_winfoƒtƒB[
    104  *  ƒ‹ƒhCWINFO‚Ìp_tmevtbƒtƒB[ƒ‹ƒh‚ðÝ’è‚·‚éD‚Ü‚½Cƒ^ƒCƒ€ƒCƒxƒ“ƒgƒu
    105  *  ƒƒbƒN‚ð“o˜^‚·‚éD
     90 *  待ち状態への遷移(タイムアウト指定)
     91 *
     92 *  実行中のタスクを,タイムアウト指定付きで待ち状態に遷移させる.具体
     93 *  的には,実行中のタスクをレディキューから削除し,TCBのp_winfoフィー
     94 *  ルド,WINFOのp_tmevtbフィールドを設定する.また,タイムイベントブ
     95 *  ロックを登録する.
    10696 */
    10797extern void     make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout);
    10898
    10999/*
    110  *  ‘Ò‚¿‰ðœ‚Ì‚½‚߂̃^ƒXƒNó‘Ԃ̍XV
    111  *
    112  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚ðC‘Ò‚¿‰ðœ‚·‚é‚悤ƒ^ƒXƒNó‘Ô‚ðXV‚·‚éD
    113  *  ‘Ò‚¿‰ðœ‚·‚éƒ^ƒXƒN‚ªŽÀs‚Å‚«‚éó‘Ô‚É‚È‚éê‡‚́CƒŒƒfƒBƒLƒ
    114 [‚ɂ‚È
    115  *  ‚®D‚Ü‚½CƒfƒBƒXƒpƒbƒ`‚ª•K—v‚ȏꍇ‚É‚Ítrue‚ð•Ô‚·D
     100 *  待ち解除のためのタスク状態の更新
     101 *
     102 *  p_tcbで指定されるタスクを,待ち解除するようタスク状態を更新する.
     103 *  待ち解除するタスクが実行できる状態になる場合は,レディキューにつな
     104 *  ぐ.また,ディスパッチが必要な場合にはtrueを返す.
    116105 */
    117106Inline bool_t
     
    122111        if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
    123112                /*
    124                  *  ‘Ò‚¿ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô‚Ö‚Ì‘JˆÚ
     113                 *  待ち状態から実行できる状態への遷移
    125114                 */
    126115                p_tcb->tstat = TS_RUNNABLE;
     
    130119        else {
    131120                /*
    132                  *  “ñd‘Ò‚¿ó‘Ô‚©‚ç‹­§‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚ
     121                 *  二重待ち状態から強制待ち状態への遷移
    133122                 */
    134123                p_tcb->tstat = TS_SUSPENDED;
     
    139128
    140129/*
    141  *  ƒIƒuƒWƒFƒNƒg‘Ò‚¿ƒLƒ
    142 [‚©‚ç‚̍폜
    143  *
    144  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚ªC“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿ƒLƒ
    145 [‚É‚Â
    146  *  ‚È‚ª‚ê‚Ä‚¢‚ê‚΁C‘Ò‚¿ƒLƒ
    147 [‚©‚çíœ‚·‚éD
     130 *  オブジェクト待ちキューからの削除
     131 *
     132 *  p_tcbで指定されるタスクが,同期・通信オブジェクトの待ちキューにつ
     133 *  ながれていれば,待ちキューから削除する.
    148134 */
    149135Inline void
     
    156142
    157143/*
    158  *  ŽžŠÔ‘Ò‚¿‚Ì‚½‚߂̃^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚Ì“o˜^‰ðœ
    159  *
    160  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚ɑ΂µ‚āCŽžŠÔ‘Ò‚¿‚Ì‚½‚߂̃^ƒCƒ€ƒCƒxƒ“ƒgƒu
    161  *  ƒƒbƒN‚ª“o˜^‚³‚ê‚Ä‚¢‚ê‚΁C‚»‚ê‚ð“o˜^‰ðœ‚·‚éD
     144 *  時間待ちのためのタイムイベントブロックの登録解除
     145 *
     146 *  p_tcbで指定されるタスクに対して,時間待ちのためのタイムイベントブ
     147 *  ロックが登録されていれば,それを登録解除する.
    162148 */
    163149Inline void
     
    170156
    171157/*
    172  *  ‘Ò‚¿‰ðœ
    173  *
    174  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚Ì‘Ò‚¿ó‘Ô‚ð‰ðœ‚·‚éD‹ï‘Ì“I‚ɂ́Cƒ^ƒCƒ€ƒC
    175  *  ƒxƒ“ƒgƒuƒƒbƒN‚ª“o˜^‚³‚ê‚Ä‚¢‚ê‚΁C‚»‚ê‚ð“o˜^‰ðœ‚·‚éD‚Ü‚½Cƒ^ƒXƒN
    176  *  ó‘Ô‚ðXV‚µC‘Ò‚¿‰ðœ‚µ‚½ƒ^ƒXƒN‚©‚ç‚Ì•Ô’l‚ðE_OK‚Æ‚·‚éD‘Ò‚¿ƒLƒ
    177 [
    178  *  ‚©‚ç‚̍폜‚͍s‚í‚È‚¢D‘Ò‚¿‰ðœ‚µ‚½ƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`‚ª•K—v‚ȏê
    179  *  ‡‚É‚Ítrue‚ð•Ô‚·D
     158 *  待ち解除
     159 *
     160 *  p_tcbで指定されるタスクの待ち状態を解除する.具体的には,タイムイ
     161 *  ベントブロックが登録されていれば,それを登録解除する.また,タスク
     162 *  状態を更新し,待ち解除したタスクからの返値をE_OKとする.待ちキュー
     163 *  からの削除は行わない.待ち解除したタスクへのディスパッチが必要な場
     164 *  合にはtrueを返す.
    180165 */
    181166extern bool_t   wait_complete(TCB *p_tcb);
    182167
    183168/*
    184  *  ƒ^ƒCƒ€ƒAƒEƒg‚É”º‚¤‘Ò‚¿‰ðœ
    185  *
    186  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚ªC‘Ò‚¿ƒLƒ
    187 [‚ɂ‚Ȃª‚ê‚Ä‚¢‚ê‚Α҂¿ƒLƒ
    188 [
    189  *  ‚©‚çíœ‚µCƒ^ƒXƒNó‘Ô‚ðXV‚·‚éD‚Ü‚½C‘Ò‚¿‰ðœ‚µ‚½ƒ^ƒXƒN‚©‚ç‚Ì•Ô
    190  *  ’l‚ðCwait_tmout‚Å‚ÍE_TMOUTCwait_tmout_ok‚Å‚ÍE_OK‚Æ‚·‚éD‘Ò‚¿‰ðœ
    191  *  ‚µ‚½ƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`‚ª•K—v‚ÈŽž‚́Creqflg‚ðtrue‚É‚·‚éD
    192  *
    193  *  wait_tmout_ok‚́Cdly_tsk‚ÅŽg‚¤‚½‚ß‚Ì‚à‚̂ŁC‘Ò‚¿ƒLƒ
    194 [‚©‚çíœ‚·‚é
    195  *  ˆ—‚ðs‚í‚È‚¢D
    196  *
    197  *  ‚¢‚¸‚ê‚̊֐”‚àCƒ^ƒCƒ€ƒCƒxƒ“ƒg‚̃R[ƒ‹ƒoƒbƒNŠÖ”‚Æ‚µ‚Ä—p‚¢‚邽‚ß‚Ì
    198  *  ‚à‚̂ŁCŠ„ž‚݃nƒ“ƒhƒ‰‚©‚çŒÄ‚яo‚³‚ê‚邱‚Æ‚ð‘z’肵‚Ä‚¢‚éD
     169 *  タイムアウトに伴う待ち解除
     170 *
     171 *  p_tcbで指定されるタスクが,待ちキューにつながれていれば待ちキュー
     172 *  から削除し,タスク状態を更新する.また,待ち解除したタスクからの返
     173 *  値を,wait_tmoutではE_TMOUT,wait_tmout_okではE_OKとする.待ち解除
     174 *  したタスクへのディスパッチが必要な時は,reqflgをtrueにする.
     175 *
     176 *  wait_tmout_okは,dly_tskで使うためのもので,待ちキューから削除する
     177 *  処理を行わない.
     178 *
     179 *  いずれの関数も,タイムイベントのコールバック関数として用いるための
     180 *  もので,割込みハンドラから呼び出されることを想定している.
    199181 */
    200182extern void     wait_tmout(TCB *p_tcb);
     
    202184
    203185/*
    204  *  ‘Ò‚¿ó‘Ô‚Ì‹­§‰ðœ
    205  *
    206  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚Ì‘Ò‚¿ó‘Ô‚ð‹­§“I‚É‰ðœ‚·‚éD‹ï‘Ì“I‚ɂ́C
    207  *  ƒ^ƒXƒN‚ª‘Ò‚¿ƒLƒ
    208 [‚ɂ‚Ȃª‚ê‚Ä‚¢‚ê‚Α҂¿ƒLƒ
    209 [‚©‚çíœ‚µCƒ^ƒCƒ€ƒC
    210  *  ƒxƒ“ƒgƒuƒƒbƒN‚ª“o˜^‚³‚ê‚Ä‚¢‚ê‚΂»‚ê‚ð“o˜^‰ðœ‚·‚éD‚Ü‚½Cƒ^ƒXƒN‚Ì
    211  *  ó‘Ô‚ðXV‚µC‘Ò‚¿‰ðœ‚µ‚½ƒ^ƒXƒN‚©‚ç‚Ì•Ô’l‚ðE_RLWAI‚Æ‚·‚éD‚Ü‚½C
    212  *  ‘Ò‚¿‰ðœ‚µ‚½ƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`‚ª•K—v‚ȏꍇ‚É‚Ítrue‚ð•Ô‚·D
     186 *  待ち状態の強制解除
     187 *
     188 *  p_tcbで指定されるタスクの待ち状態を強制的に解除する.具体的には,
     189 *  タスクが待ちキューにつながれていれば待ちキューから削除し,タイムイ
     190 *  ベントブロックが登録されていればそれを登録解除する.また,タスクの
     191 *  状態を更新し,待ち解除したタスクからの返値をE_RLWAIとする.また,
     192 *  待ち解除したタスクへのディスパッチが必要な場合にはtrueを返す.
    213193 */
    214194extern bool_t   wait_release(TCB *p_tcb);
    215195
    216196/*
    217  *  ‘Ò‚¿ƒLƒ
    218 [‚̐擪‚̃^ƒXƒNID
    219  *
    220  *  p_wait_queue‚ÅŽw’肵‚½‘Ò‚¿ƒLƒ
    221 [‚̐擪‚̃^ƒXƒNID‚ð•Ô‚·D‘Ò‚¿ƒLƒ
    222 [
    223  *  ‚ª‹ó‚̏ꍇ‚ɂ́CTSK_NONE‚ð•Ô‚·D
     197 *  待ちキューの先頭のタスクID
     198 *
     199 *  p_wait_queueで指定した待ちキューの先頭のタスクIDを返す.待ちキュー
     200 *  が空の場合には,TSK_NONEを返す.
    224201 */
    225202Inline ID
     
    235212
    236213/*
    237  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª‘€ìƒ‹[ƒ`ƒ“
    238  *
    239  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚ÆŠÇ—ƒuƒƒbƒN‚̐擪•”•ª‚Í‹¤
    240  *  ’Ê‚É‚È‚Á‚Ä‚¢‚éDˆÈ‰º‚́C‚»‚Ì‹¤’Ê•”•ª‚ðˆµ‚¤‚½‚ß‚ÌŒ^‚¨‚æ‚у‹[ƒ`ƒ“ŒQ
    241  *  ‚Å‚ ‚éD
    242  *
    243  *  •¡”‚Ì‘Ò‚¿ƒLƒ
    244 [‚ðŽ‚Â“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏ꍇCæ“ªˆÈŠO‚Ì‘Ò‚¿
    245  *  ƒLƒ
    246 [‚𑀍삷‚éê‡‚ɂ́C‚±‚ê‚ç‚̃‹[ƒ`ƒ“‚ÍŽg‚¦‚È‚¢D‚Ü‚½CƒIƒuƒWƒF
    247  *  ƒNƒg‘®«‚ÌTA_TPRIƒrƒbƒg‚ðŽQÆ‚·‚é‚̂ŁC‚±‚̃rƒbƒg‚𑼂̖ړI‚ÉŽg‚Á‚Ä
    248  *  ‚¢‚éê‡‚àC‚±‚ê‚ç‚̃‹[ƒ`ƒ“‚ÍŽg‚¦‚È‚¢D
    249  */
    250 
    251 /*
    252  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
     214 *  同期・通信オブジェクトの管理ブロックの共通部分操作ルーチン
     215 *
     216 *  同期・通信オブジェクトの初期化ブロックと管理ブロックの先頭部分は共
     217 *  通になっている.以下は,その共通部分を扱うための型およびルーチン群
     218 *  である.
     219 *
     220 *  複数の待ちキューを持つ同期・通信オブジェクトの場合,先頭以外の待ち
     221 *  キューを操作する場合には,これらのルーチンは使えない.また,オブジェ
     222 *  クト属性のTA_TPRIビットを参照するので,このビットを他の目的に使って
     223 *  いる場合も,これらのルーチンは使えない.
     224 */
     225
     226/*
     227 *  同期・通信オブジェクトの初期化ブロックの共通部分
    253228 */
    254229typedef struct wait_object_initialization_block {
    255         ATR                     wobjatr;                /* ƒIƒuƒWƒFƒNƒg‘®« */
     230        ATR                     wobjatr;                /* オブジェクト属性 */
    256231} WOBJINIB;
    257232
    258233/*
    259  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
     234 *  同期・通信オブジェクトの管理ブロックの共通部分
    260235 */
    261236typedef struct wait_object_control_block {
    262         QUEUE           wait_queue;             /* ‘Ò‚¿ƒLƒ
    263 [ */
    264         const WOBJINIB *p_wobjinib;     /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
     237        QUEUE           wait_queue;             /* 待ちキュー */
     238        const WOBJINIB *p_wobjinib;     /* 初期化ブロックへのポインタ */
    265239} WOBJCB;
    266240
    267241/*
    268  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿î•ñƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    269  *
    270  *  ‚±‚̍\‘¢‘̂́C‘Ò‚¿î•ñƒuƒƒbƒNiWINFOj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾
    271  *  Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚Ì‚Å‚ ‚邪CWINFO‚ª‹¤—p‘Ì‚Å’è‹`‚³‚ê‚Ä‚¢‚邽
    272  *  ‚߂ɁC1‚‚̃tƒB[ƒ‹ƒh‚Æ‚µ‚ÄŠÜ‚ß‚Ä‚¢‚éD
     242 *  同期・通信オブジェクトの待ち情報ブロックの共通部分
     243 *
     244 *  この構造体は,待ち情報ブロック(WINFO)を拡張(オブジェクト指向言
     245 *  語の継承に相当)したものであるが,WINFOが共用体で定義されているた
     246 *  めに,1つのフィールドとして含めている.
    273247 */
    274248typedef struct wait_object_waiting_information {
    275         WINFO   winfo;                  /* •W€‚Ì‘Ò‚¿î•ñƒuƒƒbƒN */
    276         WOBJCB  *p_wobjcb;              /* ‘Ò‚¿ƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN */
     249        WINFO   winfo;                  /* 標準の待ち情報ブロック */
     250        WOBJCB  *p_wobjcb;              /* 待ちオブジェクトの管理ブロック */
    277251} WINFO_WOBJ;
    278252
    279253/*
    280  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ɑ΂·‚é‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚ
     254 *  同期・通信オブジェクトに対する待ち状態への遷移
    281255 * 
    282  *  ŽÀs’†‚̃^ƒXƒN‚ð‘Ò‚¿ó‘Ô‚É‘JˆÚ‚³‚¹C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿ƒLƒ
    283 [
    284  *  ‚ɂ‚Ȃ®D‚Ü‚½C‘Ò‚¿î•ñƒuƒƒbƒNiWINFOj‚Ìp_wobjcb‚ðÝ’è‚·‚éD
    285  *  wobj_make_wait_tmout‚́Cƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚Ì“o˜^‚às‚¤D
     256 *  実行中のタスクを待ち状態に遷移させ,同期・通信オブジェクトの待ちキュー
     257 *  につなぐ.また,待ち情報ブロック(WINFO)のp_wobjcbを設定する.
     258 *  wobj_make_wait_tmoutは,タイムイベントブロックの登録も行う.
    286259 */
    287260extern void     wobj_make_wait(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo);
     
    290263
    291264/*
    292  *  ƒ^ƒXƒN—Dæ“x•ÏXŽž‚̏ˆ—
    293  *
    294  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ɑ΂·‚é‘Ò‚¿ó‘Ô‚É‚ ‚éƒ^ƒXƒN‚Ì—Dæ“x‚ª•ÏX‚³
    295  *  ‚ꂽê‡‚ɁC‘Ò‚¿ƒLƒ
    296 [‚Ì’†‚ł̃^ƒXƒN‚̈ʒu‚ðC³‚·‚éD
     265 *  タスク優先度変更時の処理
     266 *
     267 *  同期・通信オブジェクトに対する待ち状態にあるタスクの優先度が変更さ
     268 *  れた場合に,待ちキューの中でのタスクの位置を修正する.
    297269 */
    298270Inline void
     
    306278
    307279/*
    308  *  ‘Ò‚¿ƒLƒ
    309 [‚̏‰Šú‰»
    310  *
    311  *  ‘Ò‚¿ƒLƒ
    312 [‚ɂ‚Ȃª‚ê‚Ä‚¢‚éƒ^ƒXƒN‚ð‚·‚×‚Ä‘Ò‚¿‰ðœ‚·‚éD‘Ò‚¿‰ðœ‚µ‚½
    313  *  ƒ^ƒXƒN‚©‚ç‚Ì•Ô’l‚́CE_DLT‚Æ‚·‚éD‘Ò‚¿‰ðœ‚µ‚½ƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`
    314  *  ‚ª•K—v‚ȏꍇ‚ÍtrueC‚»‚¤‚Å‚È‚¢ê‡‚Ífalse‚ð•Ô‚·D
     280 *  待ちキューの初期化
     281 *
     282 *  待ちキューにつながれているタスクをすべて待ち解除する.待ち解除した
     283 *  タスクからの返値は,E_DLTとする.待ち解除したタスクへのディスパッチ
     284 *  が必要な場合はtrue,そうでない場合はfalseを返す.
    315285 */
    316286extern bool_t   init_wait_queue(QUEUE *p_wait_queue);
Note: See TracChangeset for help on using the changeset viewer.