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

MIMEにSJISを設定

Location:
UsbWattMeter/trunk/asp_dcre
Files:
134 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/asp_dcre/arch/ccrx/tool_stddef.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    99 *  Copyright (C) 2007-2010 by Witz Corporation, 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *  t_stddef.h‚ÌŠJ”­ŠÂ‹«ˆË‘¶•”iƒ‹ƒlƒTƒX RXƒc[ƒ‹ƒ`ƒFƒCƒ“—pj
     44 *  t_stddef.hの開発環境依存部(ルネサス RXツールチェイン用)
    4945 *
    50  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ct_stddef.h ‚̐擪‚ŃCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD
    51  *  ‘¼‚̃tƒ@ƒCƒ‹‚©‚ç‚Í’¼ÚƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚Æ‚Í‚È‚¢D‘¼‚̃Cƒ“ƒNƒ‹[ƒh
    52  *  ƒtƒ@ƒCƒ‹‚ɐ旧‚Á‚ďˆ—‚³‚ê‚邽‚߁C‘¼‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚Ɉˑ¶‚µ
    53  *  ‚Ä‚Í‚È‚ç‚È‚¢D
     46 *  このインクルードファイルは,t_stddef.h の先頭でインクルードされる.
     47 *  他のファイルからは直接インクルードすることはない.他のインクルード
     48 *  ファイルに先立って処理されるため,他のインクルードファイルに依存し
     49 *  てはならない.
    5450 */
    5551
     
    5854
    5955/*
    60  *  ƒRƒ“ƒpƒCƒ‰‚ÌŠg’£‹@”\‚Ì‚½‚߂̃}ƒNƒ’è‹`
     56 *  コンパイラの拡張機能のためのマクロ定義
    6157 */
    6258/*
    63  *  inline Ž¯•ÊŽq‚ÍŠO•”’è‹`‚𐶐¬‚µ‚È‚¢.
     59 *  inline 識別子は外部定義を生成しない.
    6460 */
    6561#define Inline          static inline
    6662
    6763/*
    68  *  ƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚Í–{ƒRƒ“ƒpƒCƒ‰‚Å‚Í
    69  *  #pragma inline_asm‚݂̂̃Tƒ|[ƒg‚ƂȂ邽‚ß,
    70  *  asm/Asm’è‹`‚͍s‚í‚È‚¢.
     64 *  インラインアセンブラは本コンパイラでは
     65 *  #pragma inline_asmのみのサポートとなるため,
     66 *  asm/Asm定義は行わない.
    7167 */
    7268
    7369/*
    74  *  NoReturn / alignof‚Í–{ƒRƒ“ƒpƒCƒ‰‚ł̓Tƒ|[ƒg‚³‚ê‚È‚¢.
    75  *  offsetof‚Ístddef.h‚Ì’è‹`‚ð—˜—p‚·‚é.
     70 *  NoReturn / alignofは本コンパイラではサポートされない.
     71 *  offsetofはstddef.hの定義を利用する.
    7672 */
    7773#define NoReturn
     
    7975
    8076/*
    81  *  ŠJ”­ŠÂ‹«‚Ì•W€ƒCƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚Ì—˜—p
     77 *  開発環境の標準インクルードファイルの利用
    8278 *
    83  *  NULL‚Ì’è‹`‚ðstddef.h‚©‚çCINT_MAXCINT_MINCUINT_MAXCLONG_MAXC
    84  *  LONG_MINCULONG_MAXCCHAR_BIT‚Ì’è‹`‚ðlimits.h‚©‚çŽæ‚荞‚ށD
     79 *  NULLの定義をstddef.hから,INT_MAX,INT_MIN,UINT_MAX,LONG_MAX,
     80 *  LONG_MIN,ULONG_MAX,CHAR_BITの定義をlimits.hから取り込む.
    8581 *
    86  *  C++/EC++‚ł́C•W€Žd—lã‚Í‚±‚ê‚ç‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚ª—pˆÓ‚³‚ê‚Ä
    87  *  ‚¢‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚ ‚éi‚Ù‚Æ‚ñ‚Ç‚ÌŠJ”­ŠÂ‹«‚Å—pˆÓ‚³‚ê
    88  *  ‚Ä‚¢‚éjD
     82 *  C++/EC++では,標準仕様上はこれらのインクルードファイルが用意されて
     83 *  いるとは限らないので注意が必要である(ほとんどの開発環境で用意され
     84 *  ている).
    8985 */
    9086#ifndef TOPPERS_MACRO_ONLY
     
    9591
    9692/*
    97  *  ƒRƒ“ƒpƒCƒ‰ˆË‘¶‚̃f[ƒ^Œ^‚Ì’è‹`
     93 *  コンパイラ依存のデータ型の定義
    9894 *
    99  *  stdint.h‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é
     95 *  stdint.hをインクルードする
    10096 */
    10197#ifndef TOPPERS_MACRO_ONLY
     
    105101
    106102/*
    107  *  •‚“®¬”“_Œ^‚ÉŠÖ‚·‚é’è‹`
     103 *  浮動小数点型に関する定義
    108104 *
    109  *  ‰º‹L‚Ì’è‹`‚Ídbl_size = 8ƒIƒvƒVƒ‡ƒ“‚ðŽw’肵‚½ê‡‚Ì‚Ý—LŒø‚Æ‚·‚邱‚Æ.
     105 *  下記の定義はdbl_size = 8オプションを指定した場合のみ有効とすること.
    110106 */
    111107#ifndef TOPPERS_MACRO_ONLY
    112 typedef float           float32_t;                      /* IEEE754€‹’‚Ì’P¸“x•‚“®¬”“_” */
    113 typedef double          double64_t;                     /* IEEE754€‹’‚Ì”{¸“x•‚“®¬”“_” */
     108typedef float           float32_t;                      /* IEEE754準拠の単精度浮動小数点数 */
     109typedef double          double64_t;                     /* IEEE754準拠の倍精度浮動小数点数 */
    114110#endif /* TOPPERS_MACRO_ONLY */
    115111
     
    121117
    122118/*
    123  *  ‹óƒ‰ƒxƒ‹‚Ì’è‹`
     119 *  空ラベルの定義
    124120 *
    125  *  –{ƒRƒ“ƒpƒCƒ‰‚Å‚Í‘å‚«‚³ƒ[ƒ‚Ì”z—ñ‚̓Rƒ“ƒpƒCƒ‹ƒGƒ‰[‚ɂȂ邽‚ß,
    126  *  ƒTƒCƒY1‚É‚Ä’è‹`‚·‚é.
     121 *  本コンパイラでは大きさゼロの配列はコンパイルエラーになるため,
     122 *  サイズ1にて定義する.
    127123 */
    128124#define TOPPERS_EMPTY_LABEL( type, symbol )             type symbol[ 1 ]
  • UsbWattMeter/trunk/asp_dcre/arch/logtrace/trace_config.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  $Id$
     
    4541
    4642/*
    47  *              ƒgƒŒ[ƒXƒƒO‹@”\
     43 *              トレースログ機能
    4844 */
    4945
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚Æ‚»‚ê‚ɃAƒNƒZƒX‚·‚邽‚߂̃|ƒCƒ“ƒ^
    57  */
    58 SYSLOG  trace_buffer[TCNT_TRACE_BUFFER];        /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@ */
    59 uint_t  trace_count;                            /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@’†‚̃ƒO‚̐” */
    60 uint_t  trace_head;                                     /* æ“ª‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    61 uint_t  trace_tail;                                     /* ŽŸ‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    62 MODE    trace_mode;                                     /* ƒgƒŒ[ƒXƒ‚[ƒh */
    63 
    64 /*
    65  *  ƒgƒŒ[ƒXƒƒO‹@”\‚̏‰Šú‰»
     52 *  トレースログバッファとそれにアクセスするためのポインタ
     53 */
     54SYSLOG  trace_buffer[TCNT_TRACE_BUFFER];        /* トレースログバッファ */
     55uint_t  trace_count;                            /* トレースログバッファ中のログの数 */
     56uint_t  trace_head;                                     /* 先頭のトレースログの格納位置 */
     57uint_t  trace_tail;                                     /* 次のトレースログの格納位置 */
     58MODE    trace_mode;                                     /* トレースモード */
     59
     60/*
     61 *  トレースログ機能の初期化
    6662 */
    6763void
     
    7773
    7874/*
    79  *  ƒgƒŒ[ƒXƒƒO‚ÌŠJŽn
     75 *  トレースログの開始
    8076 */
    8177ER
     
    9288
    9389/*
    94  *  ƒgƒŒ[ƒXƒƒO‚̏‘ž‚Ý
     90 *  トレースログの書込み
    9591 */
    9692ER
     
    10399
    104100                /*
    105                  *  ƒgƒŒ[ƒXŽž‚̐ݒè
     101                 *  トレース時刻の設定
    106102                 *
    107                  *  LOG_WRI_LOG_ENTER‚©‚çŒÄ‚΂ꂽê‡‚Ép_trace->logtim‚ð‘‚«Š·
    108                  *  ‚¦‚Ä‚µ‚Ü‚¤‚Ì‚Í‹CŽ‚¿‚ªˆ«‚¢‚ªCwri_log‚Ì•û‚ŏ㏑‚«‚·‚邽‚ß–â
    109                  *  ‘è‚Í‚È‚¢D
     103                 *  LOG_WRI_LOG_ENTERから呼ばれた場合にp_trace->logtimを書き換
     104                 *  えてしまうのは気持ちが悪いが,wri_logの方で上書きするため問
     105                 *  題はない.
    110106                 */
    111107                p_trace->logtim = TRACE_GET_TIM();
    112108
    113109                /*
    114                  *  ƒgƒŒ[ƒXƒoƒbƒtƒ@‚É‹L˜^
     110                 *  トレースバッファに記録
    115111                 */
    116112                trace_buffer[trace_tail] = *p_trace;
     
    136132
    137133/*
    138  *  ƒgƒŒ[ƒXƒƒO‚̓Ǐo‚µ
     134 *  トレースログの読出し
    139135 */
    140136ER
     
    147143
    148144        /*
    149          *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚©‚ç‚ÌŽæo‚µ
     145         *  トレースログバッファからの取出し
    150146         */
    151147        if (trace_count > 0U) {
     
    167163
    168164/*
    169  *  ƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚߂̃‰ƒCƒuƒ‰ƒŠŠÖ”
     165 *  トレースログを出力するためのライブラリ関数
    170166 */
    171167
     
    213209
    214210/*
    215  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚Å‹Lq‚³‚ê‚éƒR[ƒh‚©‚çƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚ß‚ÌŠÖ
    216  *  ”
     211 *  アセンブリ言語で記述されるコードからトレースログを出力するための関
     212 * 
    217213 */
    218214
  • UsbWattMeter/trunk/asp_dcre/arch/logtrace/trace_config.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  $Id$
     
    4541
    4642/*
    47  *              ƒgƒŒ[ƒXƒƒO‚ÉŠÖ‚·‚éÝ’è
     43 *              トレースログに関する設定
    4844 *
    49  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_config.h‚¨‚æ‚Ñtarget_syssvc.h‚Ì
    50  *  ‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‚Ü‚½CƒgƒŒ[ƒXƒƒO‹@”\‚̏‰Šú‰»‚â‹L˜^‚ÌŠJ
    51  *  Žn^’âŽ~CƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒv‚ðs‚¤ƒvƒƒOƒ‰ƒ€‚©‚çƒCƒ“ƒNƒ‹[ƒh‚·‚é
    52  *  ‚±‚Æ‚ð‘z’肵‚Ä‚¢‚éD
     45 *  このインクルードファイルは,target_config.hおよびtarget_syssvc.hの
     46 *  みからインクルードされる.また,トレースログ機能の初期化や記録の開
     47 *  始/停止,トレースログのダンプを行うプログラムからインクルードする
     48 *  ことを想定している.
    5349 */
    5450
     
    5753
    5854/*
    59  *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚̃TƒCƒY
     55 *  トレースログバッファのサイズ
    6056 */
    6157#ifndef TCNT_TRACE_BUFFER
     
    6460
    6561/*
    66  *  ƒgƒŒ[ƒXŽž‚̎擾•û–@
     62 *  トレース時刻の取得方法
    6763 */
    6864#ifndef TRACE_GET_TIM
     
    7369
    7470/*
    75  *  ƒgƒŒ[ƒXƒƒO‚̃f[ƒ^\‘¢
     71 *  トレースログのデータ構造
    7672 *
    77  *  ƒVƒXƒeƒ€ƒƒO‹@”\‚̃ƒOî•ñ‚̃f[ƒ^\‘¢‚Æ“¯‚¶‚à‚Ì‚ð—p‚¢‚éD
     73 *  システムログ機能のログ情報のデータ構造と同じものを用いる.
    7874 */
    7975#include <t_syslog.h>
     
    8177
    8278/*
    83  *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚Æ‚»‚ê‚ɃAƒNƒZƒX‚·‚邽‚߂̃|ƒCƒ“ƒ^
     79 *  トレースログバッファとそれにアクセスするためのポインタ
    8480 */
    85 extern TRACE    trace_buffer[];         /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@ */
    86 extern uint_t   trace_count;            /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@’†‚̃ƒO‚̐” */
    87 extern uint_t   trace_head;                     /* æ“ª‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    88 extern uint_t   trace_tail;                     /* ŽŸ‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    89 extern uint_t   trace_lost;                     /* Ž¸‚í‚ꂽƒgƒŒ[ƒX‚̐” */
     81extern TRACE    trace_buffer[];         /* トレースログバッファ */
     82extern uint_t   trace_count;            /* トレースログバッファ中のログの数 */
     83extern uint_t   trace_head;                     /* 先頭のトレースログの格納位置 */
     84extern uint_t   trace_tail;                     /* 次のトレースログの格納位置 */
     85extern uint_t   trace_lost;                     /* 失われたトレースの数 */
    9086
    9187#endif /* TOPPERS_MACRO_ONLY */
    9288
    9389/*
    94  *  ƒgƒŒ[ƒXƒ‚[ƒh‚Ì’è‹`
     90 *  トレースモードの定義
    9591 */
    96 #define TRACE_STOP                      UINT_C(0x00)    /* ƒgƒŒ[ƒX’âŽ~ */
    97 #define TRACE_RINGBUF           UINT_C(0x01)    /* ƒŠƒ“ƒOƒoƒbƒtƒ@ƒ‚[ƒh */
    98 #define TRACE_AUTOSTOP          UINT_C(0x02)    /* Ž©“®’âŽ~ƒ‚[ƒh */
    99 #define TRACE_CLEAR                     UINT_C(0x04)    /* ƒgƒŒ[ƒXƒƒO‚̃NƒŠƒA */
     92#define TRACE_STOP                      UINT_C(0x00)    /* トレース停止 */
     93#define TRACE_RINGBUF           UINT_C(0x01)    /* リングバッファモード */
     94#define TRACE_AUTOSTOP          UINT_C(0x02)    /* 自動停止モード */
     95#define TRACE_CLEAR                     UINT_C(0x04)    /* トレースログのクリア */
    10096
    10197#ifndef TOPPERS_MACRO_ONLY
    10298
    10399/*
    104  *  ƒgƒŒ[ƒXƒƒO‹@”\‚̏‰Šú‰»
     100 *  トレースログ機能の初期化
    105101 *
    106  *  ƒgƒŒ[ƒXƒƒO‹@”\‚ð‰Šú‰»‚·‚éD‰Šú‰»ƒ‹[ƒ`ƒ“‚Æ‚µ‚Ä“o˜^‚·‚邱‚Æ‚ð‘z
    107  *  ’肵‚Ä‚¢‚éDˆø”‚É‚æ‚莟‚Ì“®ì‚ðs‚¤D
     102 *  トレースログ機能を初期化する.初期化ルーチンとして登録することを想
     103 *  定している.引数により次の動作を行う.
    108104 *
    109  *  TRACE_STOPF‰Šú‰»‚݂̂ŃgƒŒ[ƒX‚ÍŠJŽn‚µ‚È‚¢D
    110  *  TRACE_RINGBUFFƒŠƒ“ƒOƒoƒbƒtƒ@ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
    111  *  TRACE_AUTOSTOPFŽ©“®’âŽ~ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
     105 *  TRACE_STOP:初期化のみでトレースは開始しない.
     106 *  TRACE_RINGBUF:リングバッファモードでトレースを開始.
     107 *  TRACE_AUTOSTOP:自動停止モードでトレースを開始.
    112108 */
    113109extern void     trace_initialize(intptr_t exinf);
    114110
    115111/*
    116  *  ƒgƒŒ[ƒXƒƒO‚ÌŠJŽn
     112 *  トレースログの開始
    117113 *
    118  *  ƒgƒŒ[ƒXƒƒO‚Ì‹L˜^‚ðŠJŽn^’âŽ~‚·‚éDˆø”‚É‚æ‚莟‚Ì“®ì‚ðs‚¤D
     114 *  トレースログの記録を開始/停止する.引数により次の動作を行う.
    119115 *
    120  *  TRACE_STOPFƒgƒŒ[ƒX‚ð’âŽ~D
    121  *  TRACE_RINGBUFFƒŠƒ“ƒOƒoƒbƒtƒ@ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
    122  *  TRACE_AUTOSTOPFŽ©“®’âŽ~ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
    123  *  TRACE_CLEARFƒgƒŒ[ƒXƒƒO‚ðƒNƒŠƒAD
     116 *  TRACE_STOP:トレースを停止.
     117 *  TRACE_RINGBUF:リングバッファモードでトレースを開始.
     118 *  TRACE_AUTOSTOP:自動停止モードでトレースを開始.
     119 *  TRACE_CLEAR:トレースログをクリア.
    124120 */
    125121extern ER       trace_sta_log(MODE mode);
    126122
    127123/*
    128  *  ƒgƒŒ[ƒXƒƒO‚̏‘ž‚Ý
     124 *  トレースログの書込み
    129125 */
    130126extern ER       trace_wri_log(TRACE *p_trace);
    131127
    132128/*
    133  *  ƒgƒŒ[ƒXƒƒO‚̓Ǐo‚µ
     129 *  トレースログの読出し
    134130 */
    135131extern ER       trace_rea_log(TRACE *p_trace);
    136132
    137133/*
    138  *  ƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒvitrace_dump.cj
     134 *  トレースログのダンプ(trace_dump.c)
    139135 *
    140  *  ƒgƒŒ[ƒXƒƒO‚ðƒ_ƒ“ƒv‚·‚éDI—¹ˆ—ƒ‹[ƒ`ƒ“‚Æ‚µ‚Ä“o˜^‚·‚邱‚Æ‚à‘z’è
    141  *  ‚µ‚Ä‚¢‚éDˆø”‚Æ‚µ‚āCƒ_ƒ“ƒvæ‚ƂȂ镶Žšo—͊֐”‚ւ̃|ƒCƒ“ƒ^‚ð“n‚·D
    142  *  ƒ^[ƒQƒbƒgˆË‘¶‚̒჌ƒxƒ‹•¶Žšo—Í‚ð—˜—p‚·‚éê‡‚ɂ́Ctarget_putc‚ð“n
    143  *  ‚·D
     136 *  トレースログをダンプする.終了処理ルーチンとして登録することも想定
     137 *  している.引数として,ダンプ先となる文字出力関数へのポインタを渡す.
     138 *  ターゲット依存の低レベル文字出力を利用する場合には,target_putcを渡
     139 *  す.
    144140 */
    145141extern void     trace_dump(intptr_t exinf);
    146142
    147143/*
    148  *  ƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚߂̃‰ƒCƒuƒ‰ƒŠŠÖ”
     144 *  トレースログを出力するためのライブラリ関数
    149145 */
    150146extern void     trace_write_0(uint_t type);
     
    155151
    156152/*
    157  *  ƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚߂̃}ƒNƒ
     153 *  トレースログを出力するためのマクロ
    158154 */
    159155
     
    174170
    175171/*
    176  *  ƒgƒŒ[ƒXƒƒO•û–@‚̐ݒè
     172 *  トレースログ方法の設定
    177173 */
    178174#define LOG_TSKSTAT(p_tcb)              trace_2(LOG_TYPE_TSKSTAT, p_tcb, p_tcb->tstat)
  • UsbWattMeter/trunk/asp_dcre/arch/logtrace/trace_dump.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  $Id$
     
    4339
    4440/*
    45  *              ƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒv
     41 *              トレースログのダンプ
    4642 */
    4743
     
    5147
    5248/*
    53  *  ƒJ[ƒlƒ‹î•ñ‚ÌŽæo‚µ
     49 *  カーネル情報の取出し
    5450 */
    5551static intptr_t
     
    10096
    10197/*
    102  *  ƒgƒŒ[ƒXƒƒO‚Ì•\Ž¦
     98 *  トレースログの表示
    10399 */
    104100static void
     
    144140
    145141/*
    146  *  ƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒv
     142 *  トレースログのダンプ
    147143 */
    148144void
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/makeoffset.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4642
    4743/*
    48  *      offset.inc (‚à‚µ‚­‚Í offset.h) ‚ɂ‚¢‚Ä
    49  *
    50  *        offset.inc ‚͍\‘¢‘Ì‚Ì“Á’è‚Ì—v‘f‚ª\‘¢‘̂̐擪‚©‚牽ƒoƒCƒg–Ú‚É
    51  *      ‘¶Ý‚·‚é‚©‚Æ‚¢‚¤‚±‚Æ‚â, “Á’è‚̃rƒbƒgƒtƒB[ƒ‹ƒh‚ªæ“ª‚©‚ç
    52  *      ‰½ƒoƒCƒgæ‚̉½ƒrƒbƒg–Ú‚É‘¶Ý‚·‚é‚©, ‚Æ‚¢‚¤î•ñ‚ð
    53  *      ƒAƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹‚É—^‚¦‚邽‚ß‚É‘¶Ý‚µ‚Ä‚¢‚é.
    54  *
    55  *        offset.inc ƒtƒ@ƒCƒ‹‚Ì’†g‚Í, ’P‚È‚éƒVƒ“ƒ{ƒ‹’è‹`ƒtƒ@ƒCƒ‹‚Å‚ ‚é.
    56  *      ƒVƒ“ƒ{ƒ‹‚Æ‚¢‚Á‚Ä‚à’è‹`‚·‚éƒVƒ“ƒ{ƒ‹‚Ì–¼Ì‚ɂ̓pƒ^[ƒ“‚ª‚ ‚è,
    57  *      ‘å‚«‚­•ª‚¯‚ÄŽŸ‚Ì3Ží—Þ‚É•ª—Þ‚Å‚«‚é.
    58  *
    59  *      <\‘¢‘Ì–¼>_<—v‘f–¼>     (—á) TCB_sp, TCB_pc, TCB_enatex ‚È‚Ç
    60  *      <\‘¢‘Ì–¼>_<—v‘f–¼>_bit (—á) TCB_enatex_bit ‚È‚Ç
    61  *      <\‘¢‘Ì–¼>_<—v‘f–¼>_mask (—á) TCB_enatex_mask ‚È‚Ç
    62  *
    63  *      (—á)
     44 *      offset.inc (もしくは offset.h) について
     45 *
     46 *        offset.inc は構造体の特定の要素が構造体の先頭から何バイト目に
     47 *      存在するかということや, 特定のビットフィールドが先頭から
     48 *      何バイト先の何ビット目に存在するか, という情報を
     49 *      アセンブリ言語ファイルに与えるために存在している.
     50 *
     51 *        offset.inc ファイルの中身は, 単なるシンボル定義ファイルである.
     52 *      シンボルといっても定義するシンボルの名称にはパターンがあり,
     53 *      大きく分けて次の3種類に分類できる.
     54 *
     55 *      <構造体名>_<要素名>    (例) TCB_sp, TCB_pc, TCB_enatex など
     56 *      <構造体名>_<要素名>_bit        (例) TCB_enatex_bit など
     57 *      <構造体名>_<要素名>_mask (例) TCB_enatex_mask など
     58 *
     59 *      ()
    6460 *              TCB_texptn              .equ    14
    6561 *              TCB_sp                  .equ    20
     
    6965 *              TCB_enatex_mask         .equ    0040H
    7066 *
    71  *        ˆê”Ô‚Í‚¶‚ß‚Í“Á’è‚Ì—v‘f‚ª\‘¢‘̂̐擪‚©‚牽ƒoƒCƒgæ‚É‚ ‚é‚©
    72  *      ‚Æ‚¢‚¤‚±‚Æ‚ðŽ¦‚·”’l‚ɂ‚¯‚郉ƒxƒ‹‚Ì–¼Ì.
    73  *        “ñ”Ô–Ú‚Í“Á’è‚̃rƒbƒgƒtƒB[ƒ‹ƒh’†‚̃rƒbƒg‚ª, ‰ºˆÊ‚©‚琔‚¦‚Ä
    74  *      ‰½ƒrƒbƒg–Ú‚É‚ ‚é‚©‚Æ‚¢‚¤‚±‚Æ‚ðŽ¦‚·”’l‚ɂ‚¯‚郉ƒxƒ‹‚Ì–¼Ì.
    75  *      0‚©‚çŽn‚܂鐔’l‚Å•\Œ»‚·‚é. Å‚à‰ºˆÊ‚̃rƒbƒg‚Í‘æ0ƒrƒbƒg‚Å‚ ‚é.
    76  *        ŽO”Ԗڂ͐æ‚Ù‚Ç‚Ì <\‘¢‘Ì–¼>_<—v‘f–¼>_bit ‚Æ‚àŠÖ˜A‚·‚邪,
    77  *      “Á’è‚̃rƒbƒgƒtƒB[ƒ‹ƒh’†‚̃rƒbƒg‚̃}ƒXƒN’l‚Ì–¼Ì.
    78  *      _bit ‚Æ *_mask ‚Ì’l‚ÌŠÔ‚É‚ÍŽŸ‚ÌŠÖŒW‚ª‚ ‚é.
     67 *        一番はじめは特定の要素が構造体の先頭から何バイト先にあるか
     68 *      ということを示す数値につけるラベルの名称.
     69 *        二番目は特定のビットフィールド中のビットが, 下位から数えて
     70 *      何ビット目にあるかということを示す数値につけるラベルの名称.
     71 *      0から始まる数値で表現する. 最も下位のビットは第0ビットである.
     72 *        三番目は先ほどの <構造体名>_<要素名>_bit とも関連するが,
     73 *      特定のビットフィールド中のビットのマスク値の名称.
     74 *      _bit と *_mask の値の間には次の関係がある.
    7975 *              (*_mask) == (1 << *_bit)
    80  * *    (—á) TCB_enatex_bit ‚ª 6 ‚ÌŽž, TCB_enatex_mask ‚Í 40H
    81  *
    82  *        ‚¿‚È‚Ý‚ÉM32CˆË‘¶•”‚ÌŽÀ‘•‚Å‚Í, “Á’èƒrƒbƒg‚̃`ƒFƒbƒN‚È‚Ç‚É
    83  *      ƒrƒbƒg–½—߃AƒhƒŒƒbƒVƒ“ƒO‚ðŽg—p‚µ‚Ä‚¢‚é‚Ì‚Å *_mask ‚Æ‚¢‚¤ƒ‰ƒxƒ‹‚Í
    84  *      Žg—p‚µ‚Ä‚¢‚È‚¢.
     76 * *    (例) TCB_enatex_bit が 6 の時, TCB_enatex_mask は 40H
     77 *
     78 *        ちなみにM32C依存部の実装では, 特定ビットのチェックなどに
     79 *      ビット命令アドレッシングを使用しているので *_mask というラベルは
     80 *      使用していない.
    8581 */
    8682
    8783/*
    88  *      offset.inc ‚̍ì‚è•û(M32Cƒ^[ƒQƒbƒgˆË‘¶•”Œü‚¯)
    89  *
    90  *        GNU CƒRƒ“ƒpƒCƒ‰‚ð—p‚¢‚Ä‚¢‚éƒ^[ƒQƒbƒgˆË‘¶•”‚ɂ‚¢‚Ä‚Í,
    91  *      ƒJ[ƒlƒ‹‚̃gƒbƒvƒfƒBƒŒƒNƒgƒŠ‚̉º‚É‚ ‚é util ‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚Ì
    92  *      ‰º‚É genoffset ‚Æ‚¢‚¤ perl ƒXƒNƒŠƒvƒg‚ª—pˆÓ‚³‚ê‚Ä‚¢‚é‚Ì‚Å,
    93  *      “Á‚ÉŽè“®‚Å offset.h ‚ðì¬‚·‚é•K—v‚Í‚È‚¢.
    94  *        genoffset ‚Í GNU ŠJ”­ŠÂ‹«‚ð‘z’肵‚č쐬‚³‚ê‚Ä‚¢‚é‚Ì‚Å,
    95  *      ¶¬‚³‚ê‚éƒAƒZƒ“ƒuƒŠŒ¾Œê‹^Ž—–½—߂␶¬‹K‘¥‚̈قȂ鑼‚Ì
    96  *      CƒRƒ“ƒpƒCƒ‰‚É‚Í‚»‚Ì‚Ü‚Ü“K—p‚Å‚«‚È‚¢‰Â”\«‚ª‚ ‚é.
    97  *        ‚»‚±‚Å, ‚±‚±‚Å‚ÍWindowsŠÂ‹« Œü‚¯‚Ì genoffset ‚ð—pˆÓ‚¹‚¸,
    98  *      ì‚è•û‚ð‚±‚±‚É‹L‚µ, Žèì‹Æ‚Å offset.inc ‚ðì¬‚µ‚Ä‚à‚炤‚±‚Æ‚Æ
    99  *      ‚·‚é. ˆÈ‰º‚É‚»‚Ì•û–@‚ðŽ¦‚·. ‚È‚¨, ‚±‚Ì•û–@‚ÍM32C‚ÌŠJ”­ŠÂ‹«‚â
    100  *      –½—߃Zƒbƒg‚Ɉˑ¶‚µ‚Ä‚¢‚邽‚ß, ‘¼‚̃^[ƒQƒbƒg‚ðŽg—p‚µ‚Ä‚¢‚éê‡‚Í
    101  *      ‚»‚Ì‚Ü‚Ü“K—p‚Å‚«‚È‚¢.
    102  *
    103  *  1.  makeoffset.c ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚©‚çCƒRƒ“ƒpƒCƒ‰‚ðŽg—p‚µ‚Ä
    104  *      ƒAƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹ makeoffset.a30 ‚𐶐¬‚·‚é.
    105  *      ƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚̓J[ƒlƒ‹ƒR[ƒh‚É—^‚¦‚é‚à‚Ì‚Æ“¯‚¶
    106  *      ‚à‚Ì‚ð—^‚¦‚é.
    107  *      ƒ‹ƒlƒTƒX»ƒc[ƒ‹ TM ‚ðŽg—p‚µ‚Ä‚¢‚éê‡‚Í, ƒvƒƒWƒFƒNƒgƒGƒfƒBƒ^‚Ì
    108  *      ¶¬Žè‡ƒrƒ
    109 [‚©‚ç makeoffset.a30 ‚ð‘I‚Ñ, ‰EƒNƒŠƒbƒNƒƒjƒ
    110 [‚Ì
    111  *      ¢•”•ªƒrƒ‹ƒh£‚ð‘I‘ð‚·‚é‚±‚ƂŐ¶¬‚Å‚«‚é.
    112  *      ‚à‚µ‚­‚̓Rƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚сƒCƒNƒtƒ@ƒCƒ‹‚Æ“¯‚¶ƒfƒBƒŒƒNƒgƒŠ‚É
    113  *      ˆÚ“®‚µ, "make -f ƒƒCƒNƒtƒ@ƒCƒ‹–¼ makeoffset.a30" ‚ð
    114  *      ŽÀs‚µ‚Ä‚à“¯—l‚ÌŒ‹‰Ê‚ª“¾‚ç‚ê‚é. (ƒƒCƒNƒtƒ@ƒCƒ‹‚ÍTM‚ªŽg—p‚µ‚Ä
    115  *      ‚¢‚é‚à‚Ì‚Æ“¯‚¶ƒtƒ@ƒCƒ‹‚ðŽw’è‰Â”\)
    116  *
    117  *  2.  æ‚Ù‚Ç‚Ì 1. ‚̍ì‹Æ‚Å“¾‚ç‚ꂽ, makeoffset.a30 ƒtƒ@ƒCƒ‹‚©‚ç
    118  *      "! BEGIN XXXX"  ‚Å‚Í‚¶‚Ü‚è "! END" ‚ŏI‚í‚Á‚Ä‚¢‚é•”•ª‚ð’T‚·.
    119  *
    120  *      4‰ÓŠ‚ ‚è, ‚»‚ꂼ‚ꏭ‚µ‚¸‚ˆقȂé‚̂ŏ‡‚Éà–¾‚·‚é.
    121  *      (ˆÈ‰º, à–¾’†‚ł̓AƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹‚̃Rƒƒ“ƒgs‚͏Ȃ­)
    122  *
    123  * (1)  \‘¢‘̂̐擪‚©‚烁ƒ“ƒo‚ւ̃IƒtƒZƒbƒg
     84 *      offset.inc の作り方(M32Cターゲット依存部向け)
     85 *
     86 *        GNU Cコンパイラを用いているターゲット依存部については,
     87 *      カーネルのトップディレクトリの下にある util というディレクトリの
     88 *      下に genoffset という perl スクリプトが用意されているので,
     89 *      特に手動で offset.h を作成する必要はない.
     90 *        genoffset は GNU 開発環境を想定して作成されているので,
     91 *      生成されるアセンブリ言語疑似命令や生成規則の異なる他の
     92 *      Cコンパイラにはそのまま適用できない可能性がある.
     93 *        そこで, ここではWindows環境 向けの genoffset を用意せず,
     94 *      作り方をここに記し, 手作業で offset.inc を作成してもらうことと
     95 *      する. 以下にその方法を示す. なお, この方法はM32Cの開発環境や
     96 *      命令セットに依存しているため, 他のターゲットを使用している場合は
     97 *      そのまま適用できない.
     98 *
     99 *  1.  makeoffset.c というファイルからCコンパイラを使用して
     100 *      アセンブリ言語ファイル makeoffset.a30 を生成する.
     101 *      コンパイルオプションはカーネルコードに与えるものと同じ
     102 *      ものを与える.
     103 *      ルネサス製ツール TM を使用している場合は, プロジェクトエディタの
     104 *      生成手順ビューから makeoffset.a30 を選び, 右クリックメニューの
     105 *      「部分ビルド」を選択することで生成できる.
     106 *      もしくはコマンドプロンプトでメイクファイルと同じディレクトリに
     107 *      移動し, "make -f メイクファイル名 makeoffset.a30" を
     108 *      実行しても同様の結果が得られる. (メイクファイルはTMが使用して
     109 *      いるものと同じファイルを指定可能)
     110 *
     111 *  2.  先ほどの 1. の作業で得られた, makeoffset.a30 ファイルから
     112 *      "! BEGIN XXXX"  ではじまり "! END" で終わっている部分を探す.
     113 *
     114 *      4箇所あり, それぞれ少しずつ異なるので順に説明する.
     115 *      (以下, 説明中ではアセンブリ言語ファイルのコメント行は省く)
     116 *
     117 * (1)  構造体の先頭からメンバへのオフセット
    124118 *
    125119 *      ! BEGIN TCB_texptn
     
    127121 *      ! END
    128122 *
    129  *      ã‹L"! BEGIN"‚ÌŒã‚ë‚Ì•¶Žš—ñ‚ªoffset.inc‚Å’è‹`‚·‚éƒVƒ“ƒ{ƒ‹–¼‚Æ‚È‚é.
    130  *      ‚»‚̃Vƒ“ƒ{ƒ‹‚Ì’l‚Í, ŽŸs‚Ìbset–½—ß‚Ì‘æ2ƒIƒyƒ‰ƒ“ƒh‚Ì’l‚Å‚ ‚é
    131  *      0000000eH‚ª‚»‚ê‚É‘Š“–‚·‚é. ‚±‚ꂪ\‘¢‘̂̐擪‚©‚çtexptn‚Ü‚Å‚Ì
    132  *      ƒIƒtƒZƒbƒg’l‚Æ‚È‚é. ‚µ‚½‚ª‚Á‚Ä‚±‚̏ꍇ, offset.inc ‚É‚Í
     123 *      上記"! BEGIN"の後ろの文字列がoffset.incで定義するシンボル名となる.
     124 *      そのシンボルの値は, 次行のbset命令の第2オペランドの値である
     125 *      0000000eHがそれに相当する. これが構造体の先頭からtexptnまでの
     126 *      オフセット値となる. したがってこの場合, offset.inc には
    133127 *      TCB_texptn      .equ    14
    134  *      ‚Æ‚¢‚¤s‚ð‹Lq‚·‚é.
    135  *
    136  * (2)  \‘¢‘̂̃ƒ“ƒo‚ª\‘¢‘Ì‚Å, ‚»‚Ì’†‚̃ƒ“ƒo‚ɑ΂·‚éƒIƒtƒZƒbƒg
    137  *
    138  *      TCB_sp ‚ɂ‚¢‚Ä‚à‚Ù‚Ú“¯—l‚¾‚ª, sp ‚ÍTCB\‘¢‘Ì‚Ì’¼Ú‚Ì
    139  *      ƒƒ“ƒo‚Å‚È‚­TCB\‘¢‘̂̃ƒ“ƒo‚Å‚ ‚éTSKCTXB\‘¢‘̂̃ƒ“ƒo‚Å
    140  *      ‚ ‚é“_‚ªˆÙ‚È‚é. ‚»‚ê‚Å‚à’è‹`‚·‚éƒVƒ“ƒ{ƒ‹–¼‚Æ‚µ‚Ä‚Í
    141  *      TCB_sp ‚̂悤‚É•\Œ»‚·‚é. ƒAƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹‚Å‚Í
     128 *      という行を記述する.
     129 *
     130 * (2)  構造体のメンバが構造体で, その中のメンバに対するオフセット
     131 *
     132 *      TCB_sp についてもほぼ同様だが, sp はTCB構造体の直接の
     133 *      メンバでなくTCB構造体のメンバであるTSKCTXB構造体のメンバで
     134 *      ある点が異なる. それでも定義するシンボル名としては
     135 *      TCB_sp のように表現する. アセンブリ言語ファイルでは
    142136 *
    143137 *      ! BEGIN TCB_sp
     
    149143 *      ! END *
    150144 *
    151  *      ‚̂悤‚É‚È‚è,14H(=20) ‚ª‹‚ß‚é’l‚È‚Ì‚Åoffset.inc ‚É‚ÍŽŸ‚̂悤‚É
    152  *      ‹Lq‚·‚é.
     145 *      のようになり,14H(=20) が求める値なのでoffset.inc には次のように
     146 *      記述する.
    153147 *
    154148 *      TCB_sp  .equ    20
    155149 *
    156  * (3)  ƒƒ“ƒo‚ªŠÖ”‚ւ̃|ƒCƒ“ƒ^‚Å‚ ‚Á‚½ê‡
    157  *
    158  *      ŽŸ‚Í TCB_pc ‚̏ꍇ.
     150 * (3)  メンバが関数へのポインタであった場合
     151 *
     152 *      次は TCB_pc の場合.
    159153 *
    160154 *      ! BEGIN TCB_pc
     
    163157 *      ! END
    164158 *
    165  *      pc ‚à sp ‚Æ“¯‚¶‚­, TCB\‘¢‘Ì‚Ì’¼Ú‚̃ƒ“ƒo‚Å‚Í‚È‚¢‚ª
    166  *      TCB_pc ‚Æ•\Œ»‚µ‚Ä‚¢‚é. ‚±‚ê‚͊֐”‚̃AƒhƒŒƒX‚ðŠi”[‚·‚é•Ï”‚È‚Ì‚Å,
     159 *      pc も sp と同じく, TCB構造体の直接のメンバではないが
     160 *      TCB_pc と表現している. これは関数のアドレスを格納する変数なので,
    167161 *      (((TCB *)0)->tskctxb.pc)();
    168  *      ‚Æ‚µ‚Ċ֐”ŒÄ‚яo‚µ‚̂悤‚É‹Lq‚·‚é‚Əã‹L‚̂悤‚ȃAƒZƒ“ƒuƒŠŒ¾Œê
    169  *      ƒR[ƒh‚ðo—Í‚·‚é. ƒVƒ“ƒ{ƒ‹’è‹`‚·‚éÛ‚̃Vƒ“ƒ{ƒ‹–¼‚͍¡‚Ü‚Å‚Æ
    170  *      “¯‚¶‚­, TCB_pc ‚Æ‚·‚é.
    171  *      ‹‚ß‚é’l‚͍\‘¢‘Ì‚©‚çŠÖ”ƒ|ƒCƒ“ƒ^‚܂ł̃IƒtƒZƒbƒg‚Å‚ ‚è, ã‚Ìmov.l
    172  *      –½—ß‚ÌŒ‹‰Ê‚©‚ç  00000018H(=24) ‚Æ‚È‚é.
    173  *      ‚µ‚½‚ª‚Á‚Ä, offset.inc ‚É‚ÍŽŸ‚̂悤‚É‹Lq‚·‚é.
     162 *      として関数呼び出しのように記述すると上記のようなアセンブリ言語
     163 *      コードを出力する. シンボル定義する際のシンボル名は今までと
     164 *      同じく, TCB_pc とする.
     165 *      求める値は構造体から関数ポインタまでのオフセットであり, 上のmov.l
     166 *      命令の結果から         00000018H(=24) となる.
     167 *      したがって, offset.inc には次のように記述する.
    174168 *
    175169 *      TCB_pc  .equ    24
    176170 *
    177  * (4)  \‘¢‘̂̃ƒ“ƒo‚ªƒrƒbƒgƒtƒB[ƒ‹ƒh‚Å‚»‚̃rƒbƒgˆÊ’u‚à’m‚肽‚¢ê‡
     171 * (4)  構造体のメンバがビットフィールドでそのビット位置も知りたい場合
    178172 *
    179173 *      ! BEGIN TCB_enatex
     
    181175 *      ! END
    182176 *
    183  *      ¡‚Ü‚Å‚Æ“¯—l, BEGIN ‚ÌŒã‚Ì•¶Žš—ñ‚ðƒVƒ“ƒ{ƒ‹–¼‚Æ‚·‚é.
    184  *      ‚±‚±‚Å‚ÌTCB_enatex‚Ì’l‚͍\‘¢‘̂̐擪‚©‚çƒrƒbƒgƒtƒB[ƒ‹ƒh‚ðŠÜ‚Þƒo
    185  *      ƒCƒg‚܂ł̃IƒtƒZƒbƒg‚Å, M32C‚̃rƒbƒg–½—߃AƒhƒŒƒbƒVƒ“ƒO‚ÍŽw’è‚Å‚«
    186  *      ‚éƒrƒbƒgˆÊ’u‚ª0‚©‚ç7‚ÌŠÔ‚ÉŽû‚Ü‚é‚悤‚ɃAƒNƒZƒX‚·‚éƒAƒhƒŒƒX‚É“K“–
    187  *      ”‚ª‰Á‚¦‚ç‚ê‚é‚Ì‚Å cH+1(=13) ‚Æ‚È‚Á‚Ä‚¢‚é. ‚Ü‚½, ƒrƒbƒgƒtƒB[ƒ‹ƒh
    188  *      ’†‚̍ʼnºˆÊƒrƒbƒg‚©‚ç‚̃rƒbƒgˆÊ’u‚Í 6‚Æ‚È‚é.
    189  *      ˆÈã‚æ‚莟‚̂悤‚ɏ‘‚­‚±‚Æ‚ª‚Å‚«‚é.
     177 *      今までと同様, BEGIN の後の文字列をシンボル名とする.
     178 *      ここでのTCB_enatexの値は構造体の先頭からビットフィールドを含むバ
     179 *      イトまでのオフセットで, M32Cのビット命令アドレッシングは指定でき
     180 *      るビット位置が0から7の間に収まるようにアクセスするアドレスに適当
     181 *      数が加えられるので cH+1(=13) となっている. また, ビットフィールド
     182 *      中の最下位ビットからのビット位置は 6となる.
     183 *      以上より次のように書くことができる.
    190184 *
    191185 *              TCB_enatex      .equ    13
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    77$  Copyright (C) 2013      by Mitsuhiro Matsuura
    88$
    9 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18 $      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23 $      ‚ƁD
    24 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29 $        •ñ‚·‚邱‚ƁD
    30 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34 $      –Ɛӂ·‚邱‚ƁD
    35 $
    36 $  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37 $  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38 $  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39 $  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40 $  ‚̐ӔC‚𕉂í‚È‚¢D
     9$  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11$  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13$      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14$      スコード中に含まれていること.
     15$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16$      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17$      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18$      の無保証規定を掲載すること.
     19$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20$      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21$      と.
     22$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23$        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25$        報告すること.
     26$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27$      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28$      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29$      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30$      免責すること.
     31$
     32$  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33$  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34$  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35$  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36$  の責任を負わない.
    4137$
    4238$  @(#) $Id$
     
    4440
    4541$
    46 ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
    47 $
    48 
    49 
    50 
    51 $
    52 $  ATT_ISR‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚Æ‚»‚ê‚ɑΉž‚·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†
     42アーキテクチャ依存テンプレート(RX630用)
     43$
     44
     45
     46
     47$
     48$  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
    5349$
    5450
     
    5854
    5955$
    60 $  DEF_INT^DEF_EXC‚ÅŽg—p‚Å‚«‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†^CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†
     56$  DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
    6157$
    6258
     
    6662
    6763$
    68 $  CFG_INT‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚ÆŠ„ž‚Ý—Dæ“x
     64$  CFG_INTで使用できる割込み番号と割込み優先度
    6965$
    7066
     
    7470
    7571$
    76 ƒ^[ƒQƒbƒg”ñˆË‘¶•”‚ÉŠÜ‚Ü‚ê‚é•W€‚ÌŠ„ž‚ÝŠÇ—‹@”\/—áŠOŠÇ—‹@”\‚̏‰Šú‰»ˆ—‚ðŽg—p‚·‚é
     72ターゲット非依存部に含まれる標準の割込み管理機能/例外管理機能の初期化処理を使用する
    7773$
    7874
     
    8278
    8379$
    84 ƒXƒ^ƒbƒNƒTƒCƒY‚̃`ƒFƒbƒN•û–@Žw’è
     80スタックサイズのチェック方法指定
    8581$
    8682
     
    8985
    9086$
    91 ƒ^ƒXƒNƒXƒ^ƒbƒNƒTƒCƒY‚̍ŏ¬’l
    92 $
    93 ƒ^ƒXƒN‹N“®Žž‚É4byte,
    94 Š„ž‚Ý“üŒûˆ—‚É‚Ä48byte, CPU—áŠO“üŒûˆ—‚É‚Ä84byte,
    95 ‚Å‚ ‚邽‚ß, Å¬’l‚Í88byte‚Æ‚·‚é.
     87タスクスタックサイズの最小値
     88$
     89タスク起動時に4byte,
     90割込み入口処理にて48byte, CPU例外入口処理にて84byte,
     91であるため, 最小値は88byteとする.
    9692$
    9793
     
    10096
    10197$
    102 ’萔’è‹`
     98定数定義
    10399$
    104100
     
    107103
    108104$
    109 $ ƒ^[ƒQƒbƒgˆË‘¶‚ÌŠ„ž‚Ý‘®«‚Ì’è‹`
     105$ ターゲット依存の割込み属性の定義
    110106$
    111107
     
    114110
    115111$
    116 $ ƒ^[ƒQƒbƒgˆË‘¶‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‘®«‚Ì’è‹`
     112$ ターゲット依存の割込みハンドラ属性の定義
    117113$
    118114
     
    121117
    122118$
    123 $ ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚݃nƒ“ƒhƒ‰‚͌Œ肳‚¹‚È‚¢‚½‚ß,
     119$ カーネル管理外割込みハンドラは固定させないため,
    124120$ INTNO_FIX_KERNEL
    125121$ INHNO_FIX_KERNEL
    126122$ INHNO_FIX_NONKERNEL
    127123$ INHNO_FIX_NONKERNEL
    128 $ ‚ð’è‹`‚µ‚È‚¢.
    129 $
    130 
    131 
    132 $
    133 •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     124$ を定義しない.
     125$
     126
     127
     128$
     129標準テンプレートファイルのインクルード
    134130$
    135131$INCLUDE "kernel.tf"$
     
    138134
    139135$
    140 $  CFG_INT‚̃^[ƒQƒbƒgˆË‘¶‚̃Gƒ‰[ƒ`ƒFƒbƒN
     136$  CFG_INTのターゲット依存のエラーチェック
    141137$
    142138
    143139$FOREACH intno INT.ORDER_LIST$
    144 $ IRQŠ„ž‚ݔԍ†‚©‚Ç‚¤‚©‚ðƒ`ƒFƒbƒN
     140$ IRQ割込み番号かどうかをチェック
    145141        $IF ( LENGTH( FIND( INTNO_INT, INT.INTNO[intno] ) ) != 0 )$
    146142
    147 $   TA_POSEDGE‚ÆTA_NEGEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     143$   TA_POSEDGEとTA_NEGEDGEが同時に設定されている場合
    148144                $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE )) == ( TA_POSEDGE | TA_NEGEDGE ))$
    149145                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
    150146                $END$
    151147
    152 $   TA_POSEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     148$   TA_POSEDGEとTA_BOTHEDGEが同時に設定されている場合
    153149                $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_BOTHEDGE ))$
    154150                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
    155151                $END$
    156152
    157 $   TA_NEGEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     153$   TA_NEGEDGEとTA_BOTHEDGEが同時に設定されている場合
    158154                $IF ((INT.INTATR[intno] & ( TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_NEGEDGE | TA_BOTHEDGE ))$
    159155                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
    160156                $END$
    161157
    162 $   TA_POSEDGE‚ÆTA_NEGEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     158$   TA_POSEDGEとTA_NEGEDGEとTA_BOTHEDGEが同時に設定されている場合
    163159                $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE ))$
    164160                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
     
    167163        $ELSE$
    168164
    169 $   IRQŠ„ž‚݈ȊO‚ÌŠ„ž‚݂ɑ΂µ‚ÄŠ„ž‚Ý‘®«‚ªŽw’肳‚ê‚Ä‚¢‚éê‡
     165$   IRQ割込み以外の割込みに対して割込み属性が指定されている場合
    170166                $IF (INT.INTATR[intno] & (~( TA_ENAINT | TA_EDGE ))) != 0$
    171167                        $ERROR$ INT.TEXT_LINE[intno]: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
     
    179175
    180176$
    181 $ Š„ž‚ݔԍ†‚©‚犄ž‚Ý—Dæ“x‹y‚Ñ‘®«‚ðŽæ‚èo‚·ƒe[ƒuƒ‹
     177$ 割込み番号から割込み優先度及び属性を取り出すテーブル
    182178$
    183179
     
    187183const CFG_INT_INFO _kernel_cfg_int_table[$LENGTH(INTNO_RANGE)$] = {$NL$
    188184$FOREACH intno INTNO_RANGE$
    189 $ Š„ž‚Ý—Dæ“x‚ðŽæ“¾
     185$ 割込み優先度を取得
    190186        $IF LENGTH(INT.INTNO[intno])$
    191187                $intpri = -INT.INTPRI[intno]$
     
    196192        $END$
    197193
    198 $ ƒe[ƒuƒ‹‚Ì’†g‚ðo—Í
     194$ テーブルの中身を出力
    199195        $TAB$$FORMAT("{ %2d, %08x }, /* %02u */", intpri, intatr, +intno)$$NL$
    200196$END$
     
    203199
    204200$
    205 ƒAƒZƒ“ƒuƒ‰o—̓tƒ@ƒCƒ‹
     201アセンブラ出力ファイル
    206202$
    207203
     
    209205
    210206;$NL$
    211 ;  RX630ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶o—̓tƒ@ƒCƒ‹$NL$
    212 ;$NL$
    213 Š„ž‚݃xƒNƒ^‹y‚ÑŠ„ž‚݃nƒ“ƒhƒ‰’è‹`$NL$
     207;  RX630アーキテクチャ依存出力ファイル$NL$
     208;$NL$
     209割込みベクタ及び割込みハンドラ定義$NL$
    214210;$NL$
    215211$NL$$NL$
     
    217213
    218214$
    219 Š„ž‚Ý“üŒûˆ—
    220 $
    221 
    222 $
    223 ‹¤’ʊ֐”‚̐錾
     215割込み入口処理
     216$
     217
     218$
     219共通関数の宣言
    224220$
    225221
     
    231227
    232228$
    233 Š„ž‚݃nƒ“ƒhƒ‰‚̏o—Í
     229割込みハンドラの出力
    234230$
    235231
     
    240236                        $TAB$.glb       __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry$NL$
    241237                        __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry:$NL$
    242                         $TAB$pushm      r1-r5                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    243                         $TAB$mov.l      #$+INH.INHNO[inhno]$, r1        ; Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    244                         $TAB$mov.l      #_$INH.INTHDR[inhno]$, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    245                         $TAB$bra.a      _kernel_interrupt                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    246                 $END$
    247         $END$
    248 $END$
    249 
    250 
    251 $ –¢“o˜^Š„ž‚݃nƒ“ƒhƒ‰“üŒûˆ—
     238                        $TAB$pushm      r1-r5                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     239                        $TAB$mov.l      #$+INH.INHNO[inhno]$, r1        ; 割込みハンドラ番号をr1へ $NL$
     240                        $TAB$mov.l      #_$INH.INTHDR[inhno]$, r2       ; ハンドラのアドレスをr2へ $NL$
     241                        $TAB$bra.a      _kernel_interrupt                       ; 共通ルーチンへ $NL$$NL$$NL$
     242                $END$
     243        $END$
     244$END$
     245
     246
     247$ 未登録割込みハンドラ入口処理
    252248$TAB$.glb$TAB$__kernel_default_int_handler_entry$NL$
    253249__kernel_default_int_handler_entry:$NL$
    254 $TAB$pushm      r1-r5                                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    255 $TAB$mov.l      #0FFFFFFFFH, r1                                         ; Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    256 $TAB$mov.l      #__kernel_default_int_handler, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    257 $TAB$bra.a      _kernel_interrupt                                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    258 
    259 
    260 $
    261 $  CPU—áŠOƒnƒ“ƒhƒ‰“üŒûˆ—
     250$TAB$pushm      r1-r5                                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     251$TAB$mov.l      #0FFFFFFFFH, r1                                         ; 割込みハンドラ番号をr1へ $NL$
     252$TAB$mov.l      #__kernel_default_int_handler, r2       ; ハンドラのアドレスをr2へ $NL$
     253$TAB$bra.a      _kernel_interrupt                                       ; 共通ルーチンへ $NL$$NL$$NL$
     254
     255
     256$
     257$  CPU例外ハンドラ入口処理
    262258$
    263259
     
    269265                $TAB$.glb       __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry$NL$
    270266                __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry:$NL$
    271                 $TAB$pushm      r1-r5                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    272                 $TAB$mov.l      #$+EXC.EXCNO[excno]$, r1        ; CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    273                 $TAB$mov.l      #_$EXC.EXCHDR[excno]$, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    274                 $TAB$bra.a      _kernel_exception                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    275         $END$
    276 $END$
    277 
    278 
    279 $ –¢“o˜^CPU—áŠOƒnƒ“ƒhƒ‰“üŒûˆ—
     267                $TAB$pushm      r1-r5                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     268                $TAB$mov.l      #$+EXC.EXCNO[excno]$, r1        ; CPU例外ハンドラ番号をr1へ $NL$
     269                $TAB$mov.l      #_$EXC.EXCHDR[excno]$, r2       ; ハンドラのアドレスをr2へ $NL$
     270                $TAB$bra.a      _kernel_exception                       ; 共通ルーチンへ $NL$$NL$$NL$
     271        $END$
     272$END$
     273
     274
     275$ 未登録CPU例外ハンドラ入口処理
    280276$TAB$.glb$TAB$__kernel_default_exc_handler_entry$NL$
    281277__kernel_default_exc_handler_entry:$NL$
    282 $TAB$pushm      r1-r5                                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    283 $TAB$mov.l      #0FFFFFFFFH, r1                                         ; CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    284 $TAB$mov.l      #__kernel_default_exc_handler, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    285 $TAB$bra.a      _kernel_exception                                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    286 
    287 
    288 $
    289 ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹
    290 $
    291 
    292 ;$NL$
    293 ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹$NL$
     278$TAB$pushm      r1-r5                                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     279$TAB$mov.l      #0FFFFFFFFH, r1                                         ; CPU例外ハンドラ番号をr1へ $NL$
     280$TAB$mov.l      #__kernel_default_exc_handler, r2       ; ハンドラのアドレスをr2へ $NL$
     281$TAB$bra.a      _kernel_exception                                       ; 共通ルーチンへ $NL$$NL$$NL$
     282
     283
     284$
     285可変ベクタテーブル
     286$
     287
     288;$NL$
     289可変ベクタテーブル$NL$
    294290;$NL$
    295291$NL$
     
    322318
    323319$
    324 ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹
     320固定ベクタテーブル
    325321$
    326322$FOREACH excno EXCNO_RANGE$
     
    334330$NL$
    335331;$NL$
    336 ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹$NL$
     332固定ベクタテーブル$NL$
    337333;$NL$
    338334$NL$
     
    343339
    344340$TAB$ .offset$TAB$ 020H$NL$
    345 $TAB$ .lword$TAB$ 00000000 $TAB$ ; §ŒäƒR[ƒh, IDƒR[ƒh1 - 3$NL$
    346 $TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh4 - 7$NL$
    347 $TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh8 - 11$NL$
    348 $TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh12 - 15$NL$$NL$
     341$TAB$ .lword$TAB$ 00000000 $TAB$ ; 制御コード, IDコード1 - 3$NL$
     342$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDコード4 - 7$NL$
     343$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDコード8 - 11$NL$
     344$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDコード12 - 15$NL$$NL$
    349345
    350346$TAB$ .offset$TAB$ 050H$NL$
    351 $TAB$ .lword$TAB$ _$EXCHDR[20]$ $TAB$ $TAB$ ;$SPC$ 20:“ÁŒ –½—ß—áŠO $SPC$$NL$
     347$TAB$ .lword$TAB$ _$EXCHDR[20]$ $TAB$ $TAB$ ;$SPC$ 20:特権命令例外 $SPC$$NL$
    352348$TAB$ .offset$TAB$ 05CH$NL$
    353 $TAB$ .lword$TAB$ _$EXCHDR[23]$ $TAB$ $TAB$ ;$SPC$ 23:–¢’è‹`–½—ß—áŠO $SPC$$NL$
     349$TAB$ .lword$TAB$ _$EXCHDR[23]$ $TAB$ $TAB$ ;$SPC$ 23:未定義命令例外 $SPC$$NL$
    354350$TAB$ .offset$TAB$ 064H$NL$
    355 $TAB$ .lword$TAB$ _$EXCHDR[25]$ $TAB$ $TAB$ ;$SPC$ 25:•‚“®¬”“_—áŠO $SPC$$NL$
     351$TAB$ .lword$TAB$ _$EXCHDR[25]$ $TAB$ $TAB$ ;$SPC$ 25:浮動小数点例外 $SPC$$NL$
    356352$TAB$ .offset$TAB$ 078H$NL$
    357 $TAB$ .lword$TAB$ _$EXCHDR[30]$ $TAB$ $TAB$ ;$SPC$ 30:ƒmƒ“ƒ}ƒXƒJƒuƒ‹—áŠO $SPC$$NL$
    358 $TAB$ .lword$TAB$ _start $TAB$ $TAB$ $TAB$ $TAB$ ;$SPC$ 31:ƒŠƒZƒbƒg $SPC$$NL$
     353$TAB$ .lword$TAB$ _$EXCHDR[30]$ $TAB$ $TAB$ ;$SPC$ 30:ノンマスカブル例外 $SPC$$NL$
     354$TAB$ .lword$TAB$ _start $TAB$ $TAB$ $TAB$ $TAB$ ;$SPC$ 31:リセット $SPC$$NL$
    359355
    360356$NL$ $NL$
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_asm_config.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $     asm_config.inc ¶¬—p
    3 $     ƒpƒX2‚̃A[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
     2$     asm_config.inc 生成用
     3$     パス2のアーキテクチャ依存テンプレート(RX630用)
    44$
    55
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_cfg1_out.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    11/*
    2  *              cfg1_out.c‚̃Šƒ“ƒN‚É•K—v‚ȃXƒ^ƒu‚Ì’è‹`
     2 *              cfg1_out.cのリンクに必要なスタブの定義
    33 */
    44
     
    2020
    2121/*
    22  *  ƒIƒtƒZƒbƒgƒtƒ@ƒCƒ‹‚𐶐¬‚·‚邽‚ß‚Ì’è‹`
     22 *  オフセットファイルを生成するための定義
    2323 */
    2424const uint8_t   MAGIC_1 = 0x12;
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_check.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    66$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    77$
    8 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17 $      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22 $      ‚ƁD
    23 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28 $        •ñ‚·‚邱‚ƁD
    29 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33 $      –Ɛӂ·‚邱‚ƁD
     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$      免責すること.
    3430$
    35 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39 ‚̐ӔC‚𕉂í‚È‚¢D
     31本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35の責任を負わない.
    4036$
    4137$  @(#) $Id$
     
    4339
    4440$
    45 $               ƒpƒX3‚̃vƒƒZƒbƒTˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
     41$               パス3のプロセッサ依存テンプレート(RX630用)
    4642$
    4743
    4844$
    49 ƒ`ƒFƒbƒN•û–@‚ÌŽw’è
     45チェック方法の指定
    5046$
    5147$CHECK_FUNC_ALIGN = 1$
     
    5753
    5854$
    59 •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     55標準テンプレートファイルのインクルード
    6056$
    6157$INCLUDE "kernel/kernel_check.tf"$
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_config.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    1010 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1111 *
    12  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    14  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    16  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    17  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—p
    21  *      ŽÒƒ}ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    23  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    25  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    26  *      ‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    30  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    32  *        •ñ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    34  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    35  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    36  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    37  *      –Ɛӂ·‚邱‚ƁD
    38  *
    39  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    40  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    41  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    42  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    43  *  ‚̐ӔC‚𕉂í‚È‚¢D
     12 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17 *      スコード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21 *      の無保証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24 *      と.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28 *        報告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33 *      免責すること.
     34 *
     35 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39 *  の責任を負わない.
    4440 *
    4541 *  @(#) $Id$
     
    4743
    4844/*
    49  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    50 [ƒ‹iRX630—pj
     45 *              プロセッサ依存モジュール(RX630用)
    5146 */
    5247
     
    5651
    5752/*
    58  *  Š„ž‚Ý”­¶‰ñ”‚ð•Û‘¶‚·‚é•Ï”
     53 *  割込み発生回数を保存する変数
    5954 */
    6055uint16_t        intnest;
    6156
    6257/*
    63  *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”
     58 *  CPUロックフラグ実現のための変数
    6459 */
    6560#if TIPM_LOCK != -15
    66 bool_t          lock_flag;              /* CPUƒƒbƒNƒtƒ‰ƒO‚Ì’l‚ð•ÛŽ‚·‚é•Ï” */
    67 uint32_t        saved_ipl;              /* Š„ž‚Ý—Dæ“xƒŒƒxƒ‹‚ð•Û‘¶‚·‚é•Ï” */
     61bool_t          lock_flag;              /* CPUロックフラグの値を保持する変数 */
     62uint32_t        saved_ipl;              /* 割込み優先度レベルを保存する変数 */
    6863#endif  /* TIPM_LOCK != -15     */
    6964
    7065
    7166/*
    72  *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»
     67 *  プロセッサ依存の初期化
    7368 */
    7469void
     
    7671{
    7772        /*
    78          *  Š„ž‚Ý”­¶‰ñ”‚̏‰Šú‰»
    79          *
    80          *  ƒXƒ^[ƒgƒAƒbƒv‚Í‘SŠ„ž‚݃ƒbƒNó‘Ô & ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg
    81          *  ‚É‚Ä“®ì‚·‚邽‚ß, ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚É‹U‘•‚·‚é.
     73         *  割込み発生回数の初期化
     74         *
     75         *  スタートアップは全割込みロック状態 & 非タスクコンテキスト
     76         *  にて動作するため, 非タスクコンテキストに偽装する.
    8277         */
    8378        intnest = 1U;
     
    8580#if TIPM_LOCK != -15
    8681        /*
    87          *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”‚̏‰Šú‰»
     82         *  CPUロックフラグ実現のための変数の初期化
    8883         */
    8984        lock_flag = true;
     
    9489
    9590/*
    96  *  ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹ˆ—
     91 *  プロセッサ依存の終了処理
    9792 */
    9893void
     
    10095{
    10196        /*
    102          *  “Á‚É•K—v‚ȏˆ—‚Í‚È‚¢
    103          */
    104 }
    105 
    106 
    107 /*
    108  *  CPU—áŠO‚Ì”­¶ó‹µ‚̃ƒOo—Í
     97         *  特に必要な処理はない
     98         */
     99}
     100
     101
     102/*
     103 *  CPU例外の発生状況のログ出力
    109104 *
    110  *  CPU—áŠOƒnƒ“ƒhƒ‰‚Ì’†‚©‚çCCPU—áŠOî•ñƒ|ƒCƒ“ƒ^ip_excinfj‚ðˆø”‚Æ‚µ
    111  *  ‚ČĂяo‚·‚±‚ƂŁCCPU—áŠO‚Ì”­¶ó‹µ‚ðƒVƒXƒeƒ€ƒƒO‚ɏo—Í‚·‚éD
     105 *  CPU例外ハンドラの中から,CPU例外情報ポインタ(p_excinf)を引数とし
     106 *  て呼び出すことで,CPU例外の発生状況をシステムログに出力する.
    112107 */
    113108#ifdef SUPPORT_XLOG_SYS
     
    140135
    141136/*
    142  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚Ì‘®«‚̐ݒè
     137 *  割込み要求ラインの属性の設定
    143138 *
    144  *  ASPƒJ[ƒlƒ‹‚Å‚Ì—˜—p‚ð‘z’肵‚āCƒpƒ‰ƒ[ƒ^ƒGƒ‰[‚̓AƒT[ƒVƒ‡ƒ“‚Ń`ƒFƒb
    145  *  ƒN‚µ‚Ä‚¢‚éDcfg_intƒT[ƒrƒXƒR[ƒ‹‚ðÝ‚¯‚éê‡‚ɂ́CƒGƒ‰[‚ð•Ô‚·‚悤
    146  *  ‚É‚·‚ׂ«‚Å‚ ‚낤D
     139 *  ASPカーネルでの利用を想定して,パラメータエラーはアサーションでチェッ
     140 *  クしている.cfg_intサービスコールを設ける場合には,エラーを返すよう
     141 *  にすべきであろう.
    147142 */
    148143void
     
    165160
    166161        /*
    167          *  Š„ž‚݂̃}ƒXƒN
    168          *
    169          *  Š„ž‚Ý‚ðŽó‚¯•t‚¯‚½‚܂܁CƒŒƒxƒ‹ƒgƒŠƒK^ƒGƒbƒWƒgƒŠƒK‚̐ݒè‚âCŠ„
    170          *  ž‚Ý—Dæ“x‚̐ݒè‚ðs‚¤‚̂͊댯‚È‚½‚߁CŠ„ž‚Ý‘®«‚É‚©‚©‚í‚炸C
    171          *  ˆê’Uƒ}ƒXƒN‚·‚éD
     162         *  割込みのマスク
     163         *
     164         *  割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割
     165         *  込み優先度の設定を行うのは危険なため,割込み属性にかかわらず,
     166         *  一旦マスクする.
    172167         */
    173168        ( void )x_disable_int( intno );
    174169
    175170        /*
    176          *  ƒŒƒxƒ‹ƒgƒŠƒK/ƒGƒbƒWƒgƒŠƒK‚̐ݒè
    177          *
    178          *  IRQ‚̂݃Tƒ|[ƒg‚·‚é
     171         *  レベルトリガ/エッジトリガの設定
     172         *
     173         *  IRQのみサポートする
    179174         */
    180175        if( INTNO_IRQ( intno ) != 0U ){
     
    195190                else{
    196191                        /*
    197                          *  ƒRƒ“ƒtƒBƒMƒ
    198 ƒŒ[ƒ^‚ɂă`ƒFƒbƒN‚µ‚Ä‚¢‚邽‚ß,
    199                          *  ‚±‚±‚Ö‚­‚邱‚Æ‚Í‚ ‚肦‚È‚¢.
     192                         *  コンフィギュレータにてチェックしているため,
     193                         *  ここへくることはありえない.
    200194                         */
    201195                        irq_val = 0U;
     
    206200
    207201        /*
    208          *  Š„ž‚݃Œƒxƒ‹‚̐ݒè
    209          *
    210          *  Š„ž‚ݔԍ†‚ɑΉž‚µ‚½IPR’l‚ðÝ’è‚·‚é.
     202         *  割込みレベルの設定
     203         *
     204         *  割込み番号に対応したIPR値を設定する.
    211205         */
    212206        sil_wrb_mem((uint8_t *)ipr_reg_addr[intno], cfg_int_table[intno].intpri);
    213207
    214208        /*
    215          *  Š„ž‚݂̃}ƒXƒN‰ðœ
     209         *  割込みのマスク解除
    216210         */
    217211        if( ( intatr & TA_ENAINT ) != 0U ){
     
    223217#ifndef OMIT_DEFAULT_INT_HANDLER
    224218/*
    225  *  –¢“o˜^‚ÌŠ„ž‚Ý‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     219 *  未登録の割込みが発生した場合に呼び出される
    226220 */
    227221void
     
    234228#ifndef OMIT_DEFAULT_EXC_HANDLER
    235229/*
    236  *  –¢“o˜^‚Ì—áŠO‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     230 *  未登録の例外が発生した場合に呼び出される
    237231 */
    238232void
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_config.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1111 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    15  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    17  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—p
    22  *      ŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    24  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    26  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27  *      ‚ƁD
    28  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33  *        •ñ‚·‚邱‚ƁD
    34  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38  *      –Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18 *      スコード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22 *      の無保証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25 *      と.
     26 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     28 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29 *        報告すること.
     30 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34 *      免責すること.
    3935 *
    40  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44  *  ‚̐ӔC‚𕉂í‚È‚¢D
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    4541 *
    4642 *  @(#) $Id$
     
    4844
    4945/*
    50  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    51 [ƒ‹iRX630—pj
    52  *
    53  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_config.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    54  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    55  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     46 *              プロセッサ依存モジュール(RX630用)
     47 *
     48 *  このインクルードファイルは,target_config.h(または,そこからインク
     49 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     50 *  直接インクルードしてはならない.
    5651 */
    5752
     
    6257
    6358/*
    64  *  ƒvƒƒZƒbƒT‚Ì“ÁŽê–½—߂̃Cƒ“ƒ‰ƒCƒ“ŠÖ”’è‹`
     59 *  プロセッサの特殊命令のインライン関数定義
    6560 */
    6661#include "prc_insn.h"
     
    6964
    7065/*
    71  *  ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN‰Šú’l
     66 *  非タスクコンテキスト用のスタック初期値
    7267 */
    7368
     
    7671
    7772/*
    78  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgƒuƒƒbƒN‚Ì’è‹`
     73 *  タスクコンテキストブロックの定義
    7974 */
    8075typedef struct task_context_block {
    81         void    *sp;            /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^ */
    82         FP              pc;                     /* ƒvƒƒOƒ‰ƒ€ƒJƒEƒ“ƒ^ */
     76        void    *sp;            /* スタックポインタ */
     77        FP              pc;                     /* プログラムカウンタ */
    8378} TSKCTXB;
    8479
    8580
    8681/*
    87  *  Š„ž‚Ý”­¶‰ñ”‚ð•Û‘¶‚·‚é•Ï”
     82 *  割込み発生回数を保存する変数
    8883 */
    8984extern uint16_t intnest;
     
    9186
    9287/*
    93  *  CPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN
    94  *
    95  *  TIPM_LOCK‚́CCPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNC‚·‚È‚í‚¿CƒJ[ƒl
    96  *  ƒ‹ŠÇ—ŠO‚Ì‚à‚Ì‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý—v‹‚ðƒ}ƒXƒN‚·‚é’l‚É’è‹`‚·‚éD
    97  *
    98  *  TMIN_INTPRI•ÏX‚·‚邱‚Æ‚ÅŠÇ—ŠOŠ„ž‚Ý‚Ì—L–³‚ðŒˆ’è‚·‚éD
    99  *  —Ⴆ‚ÎTMIN_INTPRI‚ð-14‚ɐݒ肷‚é‚ƁCƒŒƒxƒ‹15‚ÌŠ„ž‚Ý‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚Æ
    100  *  ‚È‚éDTMIN_INTPRI‚ð-15‚ɐݒ肷‚é‚ƁCNMIˆÈŠO‚ɃJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚ð
    101  *  Ý‚¯‚È‚¢‚±‚Æ‚É‚È‚éi‚±‚̏ꍇ‚É‚Í-15‚ɐݒ肷‚邱‚Ƃ𐄏§‚·‚éjD
     88 *  CPUロック状態での割込み優先度マスク
     89 *
     90 *  TIPM_LOCKは,CPUロック状態での割込み優先度マスク,すなわち,カーネ
     91 *  ル管理外のものを除くすべての割込み要求をマスクする値に定義する.
     92 *
     93 *  TMIN_INTPRI変更することで管理外割込みの有無を決定する.
     94 *  例えばTMIN_INTPRIを-14に設定すると,レベル15の割込みがカーネル管理外と
     95 *  なる.TMIN_INTPRIを-15に設定すると,NMI以外にカーネル管理外の割込みを
     96 *  設けないことになる(この場合には-15に設定することを推奨する).
    10297 */
    10398#ifndef TIPM_LOCK
     
    107102
    108103/*
    109  *  TOPPERS•W€Š„ž‚ݏˆ—ƒ‚ƒfƒ‹‚ÌŽÀŒ»
    110  */
    111 /*
    112  *  ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
    113  *
    114  *  RX‚ł́CŠ„ž‚Ý‚Ì–ß‚èæ‚ªƒ^ƒXƒN‚©‚Ç‚¤‚©‚ð”»’f‚·‚邽‚ß‚É intnest
    115  *  ‚ðŽg—p‚µ‚Ä‚¢‚éD‚±‚ê‚ð—p‚¢‚ăRƒ“ƒeƒLƒXƒg‚ð”»’f‚·‚éD
     104 *  TOPPERS標準割込み処理モデルの実現
     105 */
     106/*
     107 *  コンテキストの参照
     108 *
     109 *  RXでは,割込みの戻り先がタスクかどうかを判断するために intnest
     110 *  を使用している.これを用いてコンテキストを判断する.
    116111 */
    117112Inline bool_t
    118113sense_context( void )
    119114{
    120         /*  ƒlƒXƒgƒJƒEƒ“ƒ^0‚æ‚è‘å‚È‚ç”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg  */
     115        /*  ネストカウンタ0より大なら非タスクコンテキスト  */
    121116        return ( intnest > 0U );
    122117}
     
    124119
    125120/*
    126  *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”
    127  *
    128  *  ‚±‚ê‚ç‚̕ϐ”‚́CCPUƒƒbƒNó‘Ô‚ÌŽž‚̂ݏ‘‚«Š·‚¦‚Ä‚æ‚¢‚à‚Ì‚Æ‚·‚éD
     121 *  CPUロックフラグ実現のための変数
     122 *
     123 *  これらの変数は,CPUロック状態の時のみ書き換えてよいものとする.
    129124 */
    130125#if TIPM_LOCK != -15
    131 extern bool_t   lock_flag;              /* CPUƒƒbƒNƒtƒ‰ƒO‚Ì’l‚ð•ÛŽ‚·‚é•Ï” */
    132 extern uint32_t saved_ipl;              /* Š„ž‚Ý—Dæ“xƒŒƒxƒ‹‚ð•Û‘¶‚·‚é•Ï” */
     126extern bool_t   lock_flag;              /* CPUロックフラグの値を保持する変数 */
     127extern uint32_t saved_ipl;              /* 割込み優先度レベルを保存する変数 */
    133128#endif  /* TIPM_LOCK != -15     */
    134129
     
    137132
    138133/*
    139  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌŠO•”•\Œ»‚Æ“à•”•\Œ»‚Ì•ÏŠ·
    140  *
    141  *  RX630‚ł́CƒvƒƒZƒbƒTƒXƒe[ƒ^ƒXƒ[ƒhƒŒƒWƒXƒ^iPSWj‚̉º‚©‚ç
    142  *  24`27ƒrƒbƒg–Ú‚Ì4ƒrƒbƒg‚ÉŠ„ž‚Ý—Dæ“xƒŒƒxƒ‹iIPLj‚ª’u‚©‚ê‚Ä‚¢‚éD
    143  *  ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚Ý‚ðŽÀ‘•‚·‚éê‡‚ÉIPL‚ðŽg—p‚µ‚½§Œä‚ðs‚¤D
    144  *  ƒJ[ƒlƒ‹‚ÍŠ„ž‚Ý—Dæ“xƒ}ƒXƒNi-1‚©‚ç˜A‘±‚µ‚½•‰‚Ì’lj‚ÅŠÇ—‚³‚ê‚Ä
    145  *  ‚¢‚邽‚ßIPL‚Æ‚Ì•ÏŠ·‚ª•K—v‚Æ‚È‚éD
    146  */
    147 #define IPL_TO_IPM( ipl )       (-(( PRI )(( ipl ) >> 24U )))           /* IPL‚ðIPM‚É   */
    148 #define IPM_TO_IPL( ipm )       ((( uint32_t )(-( ipm ))) << 24U )      /* IPM‚ðIPL‚É   */
    149 
    150 
    151 /*
    152  *  CPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌIPL
     134 *  割込み優先度マスクの外部表現と内部表現の変換
     135 *
     136 *  RX630では,プロセッサステータスワードレジスタ(PSW)の下から
     137 *  24〜27ビット目の4ビットに割込み優先度レベル(IPL)が置かれている.
     138 *  カーネル管理外割込みを実装する場合にIPLを使用した制御を行う.
     139 *  カーネルは割込み優先度マスク(-1から連続した負の値)で管理されて
     140 *  いるためIPLとの変換が必要となる.
     141 */
     142#define IPL_TO_IPM( ipl )       (-(( PRI )(( ipl ) >> 24U )))           /* IPLをIPMに     */
     143#define IPM_TO_IPL( ipm )       ((( uint32_t )(-( ipm ))) << 24U )      /* IPMをIPLに     */
     144
     145
     146/*
     147 *  CPUロック状態での割込み優先度マスクのIPL
    153148 */
    154149#define IPL_LOCK                ( IPM_TO_IPL( TIPM_LOCK ) )
    155150
    156151/*
    157  *  TIPM_ENAALLiŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœj‚ÌIPL
     152 *  TIPM_ENAALL(割込み優先度マスク全解除)のIPL
    158153 */
    159154#define IPL_ENAALL              ( IPM_TO_IPL( TIPM_ENAALL ) )
     
    163158
    164159/*
    165  *  Š„ž‚Ý—vˆö–ˆ‚̃Œƒxƒ‹ & ‘®«’è‹`ƒe[ƒuƒ‹
    166  *  (ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚É‚æ‚éo—Í)
     160 *  割込み要因毎のレベル & 属性定義テーブル
     161 *  (テンプレートファイルによる出力)
    167162 */
    168163typedef struct cfg_int_info {
     
    175170
    176171/*
    177  *  Š„ž‚ݔԍ†‚͈̔͂̔»’è
    178  *
    179  *  Š„ž‚ݔԍ†‚ª—LŒø‚È’l‚©Œµ–§‚Ƀ`ƒFƒbƒN‚·‚邽‚ß,
    180  *  ƒRƒ“ƒtƒBƒMƒ
    181 ƒŒ[ƒ^o—̓e[ƒuƒ‹‚ðŽQÆ‚·‚é.
     172 *  割込み番号の範囲の判定
     173 *
     174 *  割込み番号が有効な値か厳密にチェックするため,
     175 *  コンフィギュレータ出力テーブルを参照する.
    182176 */
    183177#define VALID_INTNO( intno )    \
     
    186180#define VALID_INTNO_CFGINT( intno )     VALID_INTNO( intno )
    187181
    188 /* cre_int‚Å—LŒø‚ÈŠ„ž‚ݔԍ†‚ÌŽw’è  */
     182/* cre_intで有効な割込み番号の指定  */
    189183#define VALID_INTNO_CREINT          VALID_INTNO_CFGINT((intno))
    190184
    191 /* cre_isr‚Å—LŒø‚ÈŠ„ž‚ݔԍ†‚ÌŽw’è  */
     185/* cre_isrで有効な割込み番号の指定  */
    192186#define VALID_INTNO_CREISR(intno)       VALID_INTNO_CFGINT((intno))
    193187
    194188
    195189/*
    196  *  Š„ž‚ݐ§ŒäƒŒƒWƒXƒ^ŠÖ˜A‚Ì’è‹`
     190 *  割込み制御レジスタ関連の定義
    197191 */
    198192#define IRQ_POSEDGE                     ( 0x08U )
     
    203197
    204198/*
    205  *  CPUƒƒbƒNó‘Ԃւ̈ڍs
    206  *
    207  *  IPMiƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNj‚ðCsaved_iipm‚É•Û‘¶‚µCƒJ[
    208  *  ƒlƒ‹ŠÇ—ŠO‚Ì‚à‚Ì‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý—v‹‚ðƒ}ƒXƒN‚·‚é’liTIPM_LOCKj
    209  *  ‚ɐݒ肷‚éD‚Ü‚½Clock_flag‚ðTRUE‚É‚·‚éD
    210  *
    211  *  IPM‚ªCÅ‰‚©‚çTIPM_LOCK‚Æ“¯‚¶‚©‚»‚ê‚æ‚荂‚¢ê‡‚ɂ́C‚»‚ê‚ð
    212  *  saved_iipm‚É•Û‘¶‚·‚é‚݂̂ŁCTIPM_LOCK‚ɂ͐ݒ肵‚È‚¢D‚±‚ê‚́Cƒ‚ƒfƒ‹
    213  *  ã‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ªCTIPM_LOCK‚Æ“¯‚¶‚©‚»‚ê‚æ‚荂‚¢ƒŒƒxƒ‹‚ɐݒè
    214  *  ‚³‚ê‚Ä‚¢‚éó‘Ô‚É‚ ‚½‚éD
    215  *
    216  *  ‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԁilock_flag‚ªTRUE‚̏ó‘ԁj‚ŌĂ΂ê‚邱‚Æ‚Í
    217  *  ‚È‚¢‚à‚Ì‚Æ‘z’肵‚Ä‚¢‚éD
     199 *  CPUロック状態への移行
     200 *
     201 *  IPM(ハードウェアの割込み優先度マスク)を,saved_iipmに保存し,カー
     202 *  ネル管理外のものを除くすべての割込み要求をマスクする値(TIPM_LOCK)
     203 *  に設定する.また,lock_flagをTRUEにする.
     204 *
     205 *  IPMが,最初からTIPM_LOCKと同じかそれより高い場合には,それを
     206 *  saved_iipmに保存するのみで,TIPM_LOCKには設定しない.これは,モデル
     207 *  上の割込み優先度マスクが,TIPM_LOCKと同じかそれより高いレベルに設定
     208 *  されている状態にあたる.
     209 *
     210 *  この関数は,CPUロック状態(lock_flagがTRUEの状態)で呼ばれることは
     211 *  ないものと想定している.
    218212 */
    219213Inline void
     
    226220
    227221        /*
    228          *  current_ipl()‚Ì•Ô‚è’l‚𒼐Úsaved_ipl‚É•Û‘¶‚¹‚¸CˆêŽž•Ï”ipl
    229          *  ‚ð—p‚¢‚Ä‚¢‚é‚̂́Ccurrent_ipl()‚ðŒÄ‚ñ‚¾’¼Œã‚ÉŠ„ž‚Ý‚ª”­¶‚µC
    230          *  ‹N“®‚³‚ꂽŠ„ž‚ݏˆ—‚Åsaved_ipl‚ª•ÏX‚³‚ê‚é‰Â”\«‚ª‚ ‚邽‚ß‚Å
    231          *  ‚ ‚éD
     222         *  current_ipl()の返り値を直接saved_iplに保存せず,一時変数ipl
     223         *  を用いているのは,current_ipl()を呼んだ直後に割込みが発生し,
     224         *  起動された割込み処理でsaved_iplが変更される可能性があるためで
     225         *  ある.
    232226         */
    233227        ipl = current_ipl();
     
    246240
    247241/*
    248  *  CPUƒƒbƒNó‘Ԃ̉ðœ
    249  *
    250  *  lock_flag‚ðFALSE‚É‚µCIPMiƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNj‚ðC
    251  *  saved_iipm‚É•Û‘¶‚µ‚½’l‚É–ß‚·D
    252  *
    253  *  ‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԁilock_flag‚ªtrue‚̏ó‘ԁj‚ł̂݌Ă΂ê‚é‚à
    254  *  ‚Ì‚Æ‘z’肵‚Ä‚¢‚éD
     242 *  CPUロック状態の解除
     243 *
     244 *  lock_flagをFALSEにし,IPM(ハードウェアの割込み優先度マスク)を,
     245 *  saved_iipmに保存した値に戻す.
     246 *
     247 *  この関数は,CPUロック状態(lock_flagがtrueの状態)でのみ呼ばれるも
     248 *  のと想定している.
    255249 */
    256250Inline void
     
    270264
    271265/*
    272  *  CPUƒƒbƒNó‘Ô‚ÌŽQÆ
     266 *  CPUロック状態の参照
    273267 */
    274268Inline bool_t
     
    287281
    288282/*
    289  * iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚̐ݒè
    290  *
    291  *  CPUƒƒbƒNƒtƒ‰ƒO‚ªƒNƒŠƒA‚³‚ê‚Ä‚¢‚鎞‚́Cƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}
    292  *  ƒXƒN‚ðÝ’è‚·‚éDCPUƒƒbƒNƒtƒ‰ƒO‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚鎞‚́Csaved_iipm
    293  *  ‚ðÝ’肵C‚³‚ç‚ɁCƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ðCÝ’肵‚悤‚Æ
    294  *  ‚µ‚½iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÆTIPM_LOCK‚̍‚‚¢•û‚ɐݒ肷‚éD
     283 * (モデル上の)割込み優先度マスクの設定
     284 *
     285 *  CPUロックフラグがクリアされている時は,ハードウェアの割込み優先度マ
     286 *  スクを設定する.CPUロックフラグがセットされている時は,saved_iipm
     287 *  を設定し,さらに,ハードウェアの割込み優先度マスクを,設定しようと
     288 *  した(モデル上の)割込み優先度マスクとTIPM_LOCKの高い方に設定する.
    295289 */
    296290Inline void
     
    316310
    317311/*
    318  * iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌŽQÆ
    319  *
    320  *  CPUƒƒbƒNƒtƒ‰ƒO‚ªƒNƒŠƒA‚³‚ê‚Ä‚¢‚鎞‚̓n[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}
    321  *  ƒXƒN‚ðCƒZƒbƒg‚³‚ê‚Ä‚¢‚鎞‚Ísaved_iipm‚ðŽQÆ‚·‚éD
     312 * (モデル上の)割込み優先度マスクの参照
     313 *
     314 *  CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ
     315 *  スクを,セットされている時はsaved_iipmを参照する.
    322316 */
    323317Inline PRI
     
    343337
    344338/*
    345  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃Zƒbƒg
    346  *
    347  *  Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ɑ΂µ‚ÄŠ„ž‚Ý—v‹‹ÖŽ~
    348  *  ƒtƒ‰ƒO‚ðƒZƒbƒg‚µ‚悤‚Æ‚µ‚½ê‡‚ɂ́CFALSE‚ð•Ô‚·D
     339 *  割込み要求禁止フラグのセット
     340 *
     341 *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
     342 *  フラグをセットしようとした場合には,FALSEを返す.
    349343 */
    350344Inline bool_t
     
    352346{
    353347        /*
    354          *  ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢
     348         *  レベル定義が0である場合はCFG_INTされていない
    355349         */
    356350        if( cfg_int_table[intno].intpri == 0 ){
     
    368362
    369363/*
    370  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃NƒŠƒA
    371  *
    372  *  Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ɑ΂µ‚ÄŠ„ž‚Ý—v‹‹ÖŽ~
    373  *  ƒtƒ‰ƒO‚ðƒNƒŠƒA‚µ‚悤‚Æ‚µ‚½ê‡‚ɂ́CFALSE‚ð•Ô‚·D
     364 *  割込み要求禁止フラグのクリア
     365 *
     366 *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
     367 *  フラグをクリアしようとした場合には,FALSEを返す.
    374368 */
    375369Inline bool_t
     
    377371{
    378372        /*
    379          *  ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢
     373         *  レベル定義が0である場合はCFG_INTされていない
    380374         */
    381375        if( cfg_int_table[intno].intpri == 0 ){
     
    393387
    394388/*
    395  *  Š„ž‚Ý—v‹‚̃NƒŠƒA
     389 *  割込み要求のクリア
    396390 */
    397391Inline void
     
    406400
    407401/*
    408  *  Š„ž‚Ý—v‹‚̃`ƒFƒbƒN
     402 *  割込み要求のチェック
    409403 */
    410404Inline bool_t
     
    412406{
    413407        /*
    414          *  Š„ž‚Ý—v‹ƒŒƒWƒXƒ^‚Í0 or 1‚Å‚µ‚©‚È‚¢‚½‚ß,
    415          *  ‚»‚Ì‚Ü‚Ü‚Ì’l‚ð•Ô‚·.
     408         *  割込み要求レジスタは0 or 1でしかないため,
     409         *  そのままの値を返す.
    416410         */
    417411        return ( *IR_REG(intno) );
     
    423417
    424418/*
    425  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚Ì‘®«‚̐ݒè
     419 *  割込み要求ラインの属性の設定
    426420 */
    427421extern void     x_config_int( INTNO intno, ATR intatr, PRI intpri );
     
    429423
    430424/*
    431  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒû‚Å•K—v‚ÈIRC‘€ì
     425 *  割込みハンドラの入口で必要なIRC操作
    432426 *
    433427 */
     
    438432
    439433        /*
    440          *  ƒŒƒxƒ‹ŒŸo‚ÌŠ„ž‚݂ɑ΂µ‚Ä‚ÍŠ„ž‚݃Xƒe[ƒ^ƒX
    441          *  ƒtƒ‰ƒO‚ðƒNƒŠƒA‚·‚é.
     434         *  レベル検出の割込みに対しては割込みステータス
     435         *  フラグをクリアする.
    442436         */
    443437        if( ( cfg_int_table[intno].intatr & TA_LOWLEVEL ) > 0 ){
    444438                if( *IR_REG(intno) > 0U ){
    445439                        /*
    446                          *  ŠO•”Š„ž‚݂̏ꍇ, IRQ’[Žq‚ªHigh‚É–ß‚Á‚Ä‚¢‚é
    447                          *  ‚±‚Æ‚ðŠm”F‚·‚éŽ|‚ª‹LÚ‚³‚ê‚Ä‚¢‚邪, È—ª‚·‚é.
     440                         *  外部割込みの場合, IRQ端子がHighに戻っている
     441                         *  ことを確認する旨が記載されているが, 省略する.
    448442                         */
    449443                //      *ir_reg_addr[intno] = 0U;
    450444
    451445                        /*
    452                          *  ƒn[ƒhƒEƒFƒAƒ}ƒjƒ
    453 ƒAƒ‹‚É0‚É‚È‚Á‚½‚±‚Æ‚ð
    454                          *  Šm”F‚·‚éŽ|‚ª‹LÚ‚ ‚邽‚ß, ƒŒƒWƒXƒ^’l‚ð“ǂݏo‚·.
     446                         *  ハードウェアマニュアルに0になったことを
     447                         *  確認する旨が記載あるため, レジスタ値を読み出す.
    455448                         */
    456449                //      reg = *ir_reg_addr[intno];
     
    461454
    462455/*
    463  *  Š„ž‚݃nƒ“ƒhƒ‰‚̏oŒû‚Å•K—v‚ÈIRC‘€ì
     456 *  割込みハンドラの出口で必要なIRC操作
    464457 *
    465458 */
     
    467460i_end_int( INTNO intno )
    468461{
    469         /* “Á‚ɍs‚¤‚ׂ«ˆ—‚Í‚È‚¢ */
    470 }
    471 
    472 
    473 /*
    474  *  Å‚—Dæ‡ˆÊƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`iprc_support.a30j
    475  *
    476  *  dispatch‚́Cƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚©‚çŒÄ‚яo‚³‚ꂽƒT[ƒrƒXƒR[ƒ‹ˆ—‚©
    477  *  ‚çŒÄ‚яo‚·‚ׂ«‚à‚̂ŁCƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgECPUƒƒbƒNó‘ԁEƒfƒBƒXƒpƒb
    478  *  ƒ`‹–‰Âó‘ԁEiƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘ԂŌĂяo‚³‚È
    479  *  ‚¯‚ê‚΂Ȃç‚È‚¢D
     462        /* 特に行うべき処理はない */
     463}
     464
     465
     466/*
     467 *  最高優先順位タスクへのディスパッチ(prc_support.a30)
     468 *
     469 *  dispatchは,タスクコンテキストから呼び出されたサービスコール処理か
     470 *  ら呼び出すべきもので,タスクコンテキスト・CPUロック状態・ディスパッ
     471 *  チ許可状態・(モデル上の)割込み優先度マスク全解除状態で呼び出さな
     472 *  ければならない.
    480473 */
    481474extern void     dispatch( void );
    482475
    483476/*
    484  *  ƒfƒBƒXƒpƒbƒ`ƒƒ‚Ì“®ìŠJŽniprc_support.a30j
    485  *
    486  *  start_dispatch‚́CƒJ[ƒlƒ‹‹N“®Žž‚ɌĂяo‚·‚ׂ«‚à‚̂ŁC‚·‚ׂĂ̊„ž
    487  *  ‚Ý‚ð‹ÖŽ~‚µ‚½ó‘ԁi‘SŠ„ž‚݃ƒbƒNó‘Ô‚Æ“¯“™‚̏ó‘ԁj‚ŌĂяo‚³‚È‚¯‚ê‚Î
    488  *  ‚È‚ç‚È‚¢D
     477 *  ディスパッチャの動作開始(prc_support.a30)
     478 *
     479 *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
     480 *  みを禁止した状態(全割込みロック状態と同等の状態)で呼び出さなければ
     481 *  ならない.
    489482 */
    490483extern void     start_dispatch( void ) NoReturn;
    491484
    492485/*
    493  *  Œ»Ý‚̃Rƒ“ƒeƒLƒXƒg‚ðŽÌ‚ĂăfƒBƒXƒpƒbƒ`iprc_support.a30j
    494  *
    495  *  exit_and_dispatch‚́Cext_tsk‚©‚çŒÄ‚яo‚·‚ׂ«‚à‚̂ŁCƒ^ƒXƒNƒRƒ“ƒeƒL
    496  *  ƒXƒgECPUƒƒbƒNó‘ԁEƒfƒBƒXƒpƒbƒ`‹–‰Âó‘ԁEiƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ
    497  *  “xƒ}ƒXƒN‘S‰ðœó‘ԂŌĂяo‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢D
     486 *  現在のコンテキストを捨ててディスパッチ(prc_support.a30)
     487 *
     488 *  exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ
     489 *  スト・CPUロック状態・ディスパッチ許可状態・(モデル上の)割込み優先
     490 *  度マスク全解除状態で呼び出さなければならない.
    498491 */
    499492#define _kernel_exit_and_dispatch();    \
     
    504497
    505498/*
    506  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µiprc_support.a30j
    507  *
    508  *  call_exit_kernel‚́CƒJ[ƒlƒ‹‚̏I—¹Žž‚ɌĂяo‚·‚ׂ«‚à‚̂ŁC”ñƒ^ƒXƒN
    509  *  ƒRƒ“ƒeƒLƒXƒg‚ɐ؂芷‚¦‚āCƒJ[ƒlƒ‹‚̏I—¹ˆ—iexit_kernelj‚ðŒÄ‚яo
    510  *  ‚·D
     499 *  カーネルの終了処理の呼出し(prc_support.a30)
     500 *
     501 *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
     502 *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
     503 *  す.
    511504 */
    512505extern void call_exit_kernel( void ) NoReturn;
    513506
    514507/*
    515  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚̏‰Šú‰»
    516  *
    517  *  ƒ^ƒXƒN‚ª‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘ԂɈڍs‚·‚鎞‚ɌĂ΂ê‚éD‚±‚ÌŽž“_
    518  *  ‚ŃXƒ^ƒbƒN—̈æ‚ðŽg‚Á‚Ä‚Í‚È‚ç‚È‚¢D
    519  *
    520  *  activate_context‚ðCƒCƒ“ƒ‰ƒCƒ“ŠÖ”‚Å‚Í‚È‚­ƒ}ƒNƒ’è‹`‚Æ‚µ‚Ä‚¢‚é‚̂́C
    521  *  ‚±‚ÌŽž“_‚Å‚ÍTCB‚ª’è‹`‚³‚ê‚Ä‚¢‚È‚¢‚½‚ß‚Å‚ ‚éD
     508 *  タスクコンテキストの初期化
     509 *
     510 *  タスクが休止状態から実行できる状態に移行する時に呼ばれる.この時点
     511 *  でスタック領域を使ってはならない.
     512 *
     513 *  activate_contextを,インライン関数ではなくマクロ定義としているのは,
     514 *  この時点ではTCBが定義されていないためである.
    522515 */
    523516extern void     start_r( void );
     
    527520        {                                                                                                                                                                       \
    528521                                                                                                                                                                                \
    529                 /*  ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‰Šú’l‚ÌÝ’è  */                                                                                    \
     522                /*  スタックポインタ初期値の設定  */                                                                                  \
    530523                ( p_tcb )->tskctxb.sp = ( void * )((( uint32_t ) ( p_tcb )->p_tinib->stk ) +    \
    531524                                                                ( p_tcb )->p_tinib->stksz );                                                    \
    532                 /* ‹N“®”Ô’n‚̐ݒè */                                                                                                                    \
     525                /* 起動番地の設定 */                                                                                                                   \
    533526                ( p_tcb )->tskctxb.pc = ( FP ) start_r;                                                                                 \
    534527        }                                                                                                                                                                       \
     
    537530
    538531/*
    539  *  calltex‚ÍŽg—p‚µ‚È‚¢
     532 *  calltexは使用しない
    540533 */
    541534#define OMIT_CALLTEX
     
    543536
    544537/*
    545  *  Š„ž‚݃nƒ“ƒhƒ‰‚̐ݒè
    546  *
    547  *  RX630‚ÍROM‚ÉŠ„ž‚݃xƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹óŠÖ”‚ÅŽÀ‘•‚·‚éD
     538 *  割込みハンドラの設定
     539 *
     540 *  RX630はROMに割込みベクタを配置するため,本関数は空関数で実装する.
    548541 */
    549542Inline void
     
    554547
    555548/*
    556  *  CPU—áŠOƒnƒ“ƒhƒ‰‚̐ݒè
    557  *
    558  *  RX630‚ÍROM‚É—áŠOƒxƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹óŠÖ”‚ÅŽÀ‘•‚·‚éD
     549 *  CPU例外ハンドラの設定
     550 *
     551 *  RX630はROMに例外ベクタを配置するため,本関数は空関数で実装する.
    559552 */
    560553Inline void
     
    565558
    566559/*
    567  *  Š„ž‚Ý/—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
    568  *
    569  *  ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚É‚æ‚萶¬‚·‚邽‚ß‹óƒ}ƒNƒ‚Æ‚·‚éD
     560 *  割込み/例外ハンドラの入口処理の生成マクロ
     561 *
     562 *  テンプレートファイルにより生成するため空マクロとする.
    570563 */
    571564#define HDR_ENTRY(hdr, intexc_num , tobejmp)
    572565
    573566/*
    574  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     567 *  割込みハンドラの入口処理の生成マクロ
    575568 */
    576569#define _INT_ENTRY(inhno, inthdr)                               _kernel_##inthdr##_##inhno##_entry
     
    583576
    584577/*
    585  *  CPU—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     578 *  CPU例外ハンドラの入口処理の生成マクロ
    586579 */
    587580#define _EXC_ENTRY(excno , exchdr)                                      _kernel_##exchdr##_##excno##_entry
     
    594587
    595588/*
    596  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÌŽQÆ
    597  *
    598  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ªCƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ÌŽž‚ÉFALSEC
    599  *  ‚»‚¤‚Å‚È‚¢Žž‚Étrue‚ð•Ô‚·D
     589 *  CPU例外の発生した時のコンテキストの参照
     590 *
     591 *  CPU例外の発生した時のコンテキストが,タスクコンテキストの時にFALSE,
     592 *  そうでない時にtrueを返す.
    600593 */
    601594Inline bool_t
     
    603596{
    604597        /*
    605          *  ƒlƒXƒgƒJƒEƒ“ƒ^‚ª1‚æ‚è‘å‚È‚ç”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg
     598         *  ネストカウンタが1より大なら非タスクコンテキスト
    606599         */
    607600        return( intnest > 1U );
     
    610603
    611604/*
    612  *  CPU—áŠOî•ñ p_excinf ‚©‚ç PSW ‚Ì’l‚ðŽæ“¾‚·‚邽‚߂̃IƒtƒZƒbƒg’l
    613  *  EXCNO + ACC + FPSW + R1`R15 + PC
     605 *  CPU例外情報 p_excinf から PSW の値を取得するためのオフセット値
     606 *  EXCNO + ACC + FPSW + R1R15 + PC
    614607 */
    615608#define EXC_GET_PSW_OFFSET      (4+8+4+60+4)
    616609
    617610/*
    618  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚ÌIPL‚ÌŽQÆ
     611 *  CPU例外の発生した時のIPLの参照
    619612 */
    620613Inline uint32_t
     
    634627
    635628/*
    636  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÆŠ„ž‚݂̃}ƒXƒNó‘Ô‚ÌŽQÆ
    637  *
    638  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃VƒXƒeƒ€ó‘Ô‚ªCƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚­Cƒ^ƒXƒNƒR
    639  *  ƒ“ƒeƒLƒXƒg‚Å‚ ‚èC‘SŠ„ž‚݃ƒbƒNó‘Ô‚Å‚È‚­CCPUƒƒbƒNó‘Ô‚Å‚È‚­Ciƒ‚
    640  *  ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å‚ ‚鎞‚ÉtrueC‚»‚¤‚Å‚È‚¢Žž
    641  *  ‚ÉFALSE‚ð•Ô‚·iCPU—áŠO‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚ݏˆ—’†‚Å”­¶‚µ‚½ê‡
    642  *  ‚É‚àFALSE‚ð•Ô‚·jD
     629 *  CPU例外の発生した時のコンテキストと割込みのマスク状態の参照
     630 *
     631 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     632 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でなく,(モ
     633 *  デル上の)割込み優先度マスク全解除状態である時にtrue,そうでない時
     634 *  にFALSEを返す(CPU例外がカーネル管理外の割込み処理中で発生した場合
     635 *  にもFALSEを返す).
    643636 * 
    644  *  ƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚¢¨ (TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     637 *  カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1
    645638 *                         (else)           IPL < IPL_LOCK
    646  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Å‚ ‚遨intnest == 0
    647  *  ‘SŠ„ž‚݃ƒbƒN‚Å‚È‚¢¨ Iƒtƒ‰ƒO == 1
    648  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚ª‘S‰ðœ¨IPL == 0
     639 *  タスクコンテキストである→intnest == 0
     640 *  全割込みロックでない→ Iフラグ == 1
     641 *  割込み優先度マスクが全解除→IPL == 0
    649642 * 
    650643 * 
     
    659652
    660653/*
    661  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÆŠ„ž‚݁^CPUƒƒbƒNó‘Ô‚ÌŽQÆ
    662  *
    663  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃VƒXƒeƒ€ó‘Ô‚ªCƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚­Cƒ^ƒXƒNƒR
    664  *  ƒ“ƒeƒLƒXƒg‚Å‚ ‚èC‘SŠ„ž‚݃ƒbƒNó‘Ô‚Å‚È‚­CCPUƒƒbƒNó‘Ô‚Å‚È‚¢Žž‚É
    665  *  trueC‚»‚¤‚Å‚È‚¢Žž‚Éfalse‚ð•Ô‚·iCPU—áŠO‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚ݏˆ
    666  *  —’†‚Å”­¶‚µ‚½ê‡‚É‚àfalse‚ð•Ô‚·jD
     654 *  CPU例外の発生した時のコンテキストと割込み/CPUロック状態の参照
     655 *
     656 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     657 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でない時に
     658 *  true,そうでない時にfalseを返す(CPU例外がカーネル管理外の割込み処
     659 *  理中で発生した場合にもfalseを返す).
    667660 * 
    668  *  ƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚¢¨ (TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     661 *  カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1
    669662 *                         (else)           IPL < TIPM_LOCK
    670  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Å‚ ‚遨intnest < 1
    671  *  ‘SŠ„ž‚݃ƒbƒN‚Å‚È‚¢¨ Iƒtƒ‰ƒO == 1
    672  *  CPUƒƒbƒNó‘Ô‚Å‚È‚¢¨(TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     663 *  タスクコンテキストである→intnest < 1
     664 *  全割込みロックでない→ Iフラグ == 1
     665 *  CPUロック状態でない→(TIPM_LOCK== -15) Iフラグ == 1
    673666 *                         (else)           IPL < TIPM_LOCK
    674667 */
     
    688681
    689682/*
    690  *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»
     683 *  プロセッサ依存の初期化
    691684 */
    692685extern void     prc_initialize( void );
    693686
    694687/*
    695  *  ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹Žžˆ—
     688 *  プロセッサ依存の終了時処理
    696689 */
    697690extern void     prc_terminate( void );
     
    700693#ifndef OMIT_DEFAULT_INT_HANDLER
    701694/*
    702  *  –¢“o˜^‚ÌŠ„ž‚Ý‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     695 *  未登録の割込みが発生した場合に呼び出される
    703696 */
    704697void default_int_handler( void );
     
    707700#ifndef OMIT_DEFAULT_EXC_HANDLER
    708701/*
    709  *  –¢“o˜^‚Ì—áŠO‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     702 *  未登録の例外が発生した場合に呼び出される
    710703 */
    711704void default_exc_handler( void );
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_def.csv

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_insn.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1010 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1111 *
    12  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    14  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    16  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    17  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—p
    21  *      ŽÒƒ}ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    23  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    25  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    26  *      ‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    30  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    32  *        •ñ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    34  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    35  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    36  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    37  *      –Ɛӂ·‚邱‚ƁD
     12 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17 *      スコード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21 *      の無保証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24 *      と.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28 *        報告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33 *      免責すること.
    3834 *
    39  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    40  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    41  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    42  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    43  *  ‚̐ӔC‚𕉂í‚È‚¢D
     35 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39 *  の責任を負わない.
    4440 *
    4541 *  @(#) $Id$
     
    4743
    4844/*
    49  *              ƒvƒƒZƒbƒT‚Ì“ÁŽê–½—߂̃Cƒ“ƒ‰ƒCƒ“ŠÖ”’è‹`iRX630—pj
     45 *              プロセッサの特殊命令のインライン関数定義(RX630用)
    5046 */
    5147
     
    6561
    6662/*
    67  *  Iƒtƒ‰ƒO, IPL‚ðŽæ“¾‚·‚邽‚߂̃}ƒNƒ’è‹`
     63 *  Iフラグ, IPLを取得するためのマクロ定義
    6864 */
    6965#define PSW_I_MASK              ( 0x00010000UL )
     
    7268
    7369/*
    74  *  ƒvƒƒZƒbƒTƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^(PSW)‚ÌŒ»Ý’l‚̓Ǐo‚µ
     70 *  プロセッサステータスレジスタ(PSW)の現在値の読出し
    7571 */
    7672#pragma inline_asm      current_psw
     
    8379
    8480/*
    85  *  ƒvƒƒZƒbƒTƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^(PSW)‚֐ݒè
     81 *  プロセッサステータスレジスタ(PSW)へ設定
    8682 */
    8783#pragma inline_asm      set_psw
     
    9490
    9591/*
    96  *  IPL‚ÌŒ»Ý’l‚̓Ǐo‚µ
     92 *  IPLの現在値の読出し
    9793 */
    9894Inline uint32_t
     
    104100
    105101/*
    106  *  IPL‚֐ݒè
     102 *  IPLへ設定
    107103 */
    108104Inline void
     
    114110
    115111/*
    116  *  NMI‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý‚Ì‹ÖŽ~
     112 *  NMIを除くすべての割込みの禁止
    117113 */
    118114#pragma inline_asm      disint
     
    125121
    126122/*
    127  *  NMI‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý‚Ì‹–‰Â
     123 *  NMIを除くすべての割込みの許可
    128124 */
    129125#pragma inline_asm      enaint
     
    136132
    137133/*
    138  *  ƒGƒ“ƒfƒBƒAƒ“•ÏŠ· 16bit
     134 *  エンディアン変換 16bit
    139135 */
    140136#pragma inline_asm      rev_endian_uint16
     
    146142
    147143/*
    148  *  ƒGƒ“ƒfƒBƒAƒ“•ÏŠ· 32bit
     144 *  エンディアン変換 32bit
    149145 */
    150146#pragma inline_asm      rev_endian_uint32
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_kernel.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    66 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              kernel.h‚̃vƒƒZƒbƒTˆË‘¶•”iRX630—pj
     41 *              kernel.hのプロセッサ依存部(RX630用)
    4642 *
    47  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_kernel.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    48  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    49  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     43 *  このインクルードファイルは,target_kernel.h(または,そこからインク
     44 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     45 *  直接インクルードしてはならない.
    5046 */
    5147
     
    5450
    5551/*
    56  *  ƒJ[ƒlƒ‹–{‘Ì‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚߂̃}ƒNƒ’è‹`
     52 *  カーネル本体をコンパイルするためのマクロ定義
    5753 *
    58  *  –{ŠÂ‹«‚Å‚Í1ŠÖ”‚ð1ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ɃRƒ“ƒpƒCƒ‹‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚½‚߁C
    59  *  ALLFUNCƒ}ƒNƒ‚ð’è‹`‚·‚éD
     54 *  本環境では1関数を1オブジェクトファイルにコンパイルすることができないため,
     55 *  ALLFUNCマクロを定義する.
    6056 */
    6157#define ALLFUNC
     
    6359
    6460/*
    65  *  ƒTƒ|[ƒg‚·‚é‹@”\‚Ì’è‹`
     61 *  サポートする機能の定義
    6662 */
    67 #define TOPPERS_TARGET_SUPPORT_DIS_INT          /* dis_int‚ðƒTƒ|[ƒg‚·‚é */
    68 #define TOPPERS_TARGET_SUPPORT_ENA_INT          /* ena_int‚ðƒTƒ|[ƒg‚·‚é */
     63#define TOPPERS_TARGET_SUPPORT_DIS_INT          /* dis_intをサポートする */
     64#define TOPPERS_TARGET_SUPPORT_ENA_INT          /* ena_intをサポートする */
    6965
    7066
    7167/*
    72  *  ƒJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚Ý—Dæ“x‚͈̔Í
     68 *  カーネル管理の割込み優先度の範囲
    7369 *
    74  *  TMIN_INTPRI‚Ì’è‹`‚ð•ÏX‚·‚邱‚ƂŁC‚ǂ̃Œƒxƒ‹‚æ‚è‚à‚‚¢Š„ž‚Ý—Dæ“x
    75  *  ‚ðŽ‚Â‚à‚Ì‚ðƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚Æ‚·‚é‚©‚ð•ÏX‚Å‚«‚éD
     70 *  TMIN_INTPRIの定義を変更することで,どのレベルよりも高い割込み優先度
     71 *  を持つものをカーネル管理外の割込みとするかを変更できる.
    7672 *
    77  *  TMIN_INTPRI‚ɐݒè‚Å‚«‚é’l‚́C-15`-1‚͈̔͂ł ‚éD—Ⴆ‚ÎTMIN_INTPRI
    78  *  ‚ð-14‚ɐݒ肷‚é‚ƁCNMI‚ɉÁ‚¦‚ăŒƒxƒ‹7‚ÌŠ„ž‚Ý‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚Æ‚È‚éD
    79  *  TMIN_INTPRI‚ð-15‚ɐݒ肷‚é‚ƁCNMIˆÈŠO‚ɃJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚ð
    80  *  Ý‚¯‚È‚¢‚±‚Æ‚É‚È‚éD
     73 *  TMIN_INTPRIに設定できる値は,-15〜-1の範囲である.例えばTMIN_INTPRI
     74 *  を-14に設定すると,NMIに加えてレベル7の割込みがカーネル管理外となる.
     75 *  TMIN_INTPRIを-15に設定すると,NMI以外にカーネル管理外の割込みを
     76 *  設けないことになる.
    8177 */
    8278#ifndef TMIN_INTPRI
    83 #define TMIN_INTPRI             ( -15 )         /* Š„ž‚Ý—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
     79#define TMIN_INTPRI             ( -15 )         /* 割込み優先度の最小値(最高値)*/
    8480#endif /* TMIN_INTPRI */
    85 #define TMAX_INTPRI             ( -1 )          /* Š„ž‚Ý—Dæ“x‚̍őå’liÅ’á’lj */
     81#define TMAX_INTPRI             ( -1 )          /* 割込み優先度の最大値(最低値) */
    8682
    8783
    8884/*
    89  *  Š„ž‚Ý‘®«‚Ì’è‹`
     85 *  割込み属性の定義
    9086 */
    91 #define TA_POSEDGE              TA_EDGE                 /* ƒ|ƒWƒeƒBƒuƒGƒbƒWƒgƒŠƒK */
    92 #define TA_NEGEDGE              UINT_C( 0x04 )  /* ƒlƒKƒeƒBƒuƒGƒbƒWƒgƒŠƒK */
    93 #define TA_BOTHEDGE             UINT_C( 0x08 )  /* —¼ƒGƒbƒWƒgƒŠƒK */
     87#define TA_POSEDGE              TA_EDGE                 /* ポジティブエッジトリガ */
     88#define TA_NEGEDGE              UINT_C( 0x04 )  /* ネガティブエッジトリガ */
     89#define TA_BOTHEDGE             UINT_C( 0x08 )  /* 両エッジトリガ */
    9490
    95 #define TA_LOWLEVEL             UINT_C( 0x10 )  /* LƒŒƒxƒ‹ */
     91#define TA_LOWLEVEL             UINT_C( 0x10 )  /* Lレベル */
    9692
    9793
    9894/*
    99  *  ƒfƒtƒHƒ‹ƒg‚ÌŠ„ž‚Ý/—áŠOƒnƒ“ƒhƒ‰‚Ì—L–³
     95 *  デフォルトの割込み/例外ハンドラの有無
    10096 */
    10197/*#define       OMIT_DEFAULT_INT_HANDLER*/
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_offset.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $               ƒIƒtƒZƒbƒgƒtƒ@ƒCƒ‹¶¬—pƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹iRX630—pj
     2$               オフセットファイル生成用テンプレートファイル(RX630用)
    33$
    44
    55$
    6 ƒIƒtƒZƒbƒg’l‚̃}ƒNƒ’è‹`‚̐¶¬
     6オフセット値のマクロ定義の生成
    77$
    88$DEFINE("TCB_p_tinib", offsetof_TCB_p_tinib)$
     
    1515
    1616$
    17 ƒrƒbƒgƒIƒtƒZƒbƒg’l“™‚̃}ƒNƒ’è‹`‚̐¶¬
     17ビットオフセット値等のマクロ定義の生成
    1818$
    1919$DEFINE_BIT("TCB_enatex", sizeof_TCB, "B")$
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_rename.def

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_rename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_sil.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    55 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    66 *
    7  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    9  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    11  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    12  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    14  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—p
    16  *      ŽÒƒ}ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    18  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    21  *      ‚ƁD
    22  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    25  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    27  *        •ñ‚·‚邱‚ƁD
    28  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    29  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    30  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    31  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    32  *      –Ɛӂ·‚邱‚ƁD
     7 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     8 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12 *      スコード中に含まれていること.
     13 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16 *      の無保証規定を掲載すること.
     17 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19 *      と.
     20 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     22 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23 *        報告すること.
     24 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28 *      免責すること.
    3329 *
    34  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    35  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    36  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    37  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    38  *  ‚̐ӔC‚𕉂í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34 *  の責任を負わない.
    3935 *
    4036 *  @(#) $Id$
     
    4238
    4339/*
    44  *              sil.h‚̃vƒƒZƒbƒTˆË‘¶•”iRX630—pj
     40 *              sil.hのプロセッサ依存部(RX630用)
    4541 */
    4642
     
    5551
    5652/*
    57  *  ‘SŠ„ž‚Ý‹ÖŽ~
     53 *  全割込み禁止
    5854 */
    5955Inline uint32_t
     
    7066
    7167/*
    72  *  ‘SŠ„ž‚Ý‹–‰Â
     68 *  全割込み許可
    7369 */
    7470Inline void
     
    8278
    8379/*
    84  *  ‘SŠ„ž‚݃ƒbƒNó‘Ԃ̐§Œä
     80 *  全割込みロック状態の制御
    8581 */
    8682#define SIL_PRE_LOC             uint32_t TOPPERS_i_psw;
     
    9086
    9187/*
    92  *  ƒGƒ“ƒfƒBƒAƒ“‚Ì”½“]
     88 *  エンディアンの反転
    9389 *
    94  *  –{ŠJ”­ŠÂ‹«‚ł̓Gƒ“ƒfƒBƒAƒ“•ÏŠ·–½—ß‚ª‘¶Ý‚·‚邽‚ß,
    95  *  ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶•”‚ɂă}ƒNƒ‚ðã‘‚«‚·‚é.
     90 *  本開発環境ではエンディアン変換命令が存在するため,
     91 *  アーキテクチャ依存部にてマクロを上書きする.
    9692 */
    9793#define TOPPERS_SIL_REV_ENDIAN_UINT16( data )   \
     
    10298
    10399/*
    104  *  ”÷­ŽžŠÔ‘Ò‚¿
     100 *  微少時間待ち
    105101 */
    106102extern void sil_dly_nse( ulong_t dlytim );
     
    110106
    111107/*
    112  *  ƒvƒƒZƒbƒT‚̃Gƒ“ƒfƒBƒAƒ“
     108 *  プロセッサのエンディアン
    113109 */
    114110#ifdef __LIT
    115 #define SIL_ENDIAN_LITTLE                       /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ */
     111#define SIL_ENDIAN_LITTLE                       /* リトルエンディアン */
    116112#endif
    117113#ifdef __BIG
    118 #define SIL_ENDIAN_BIG                          /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ */
     114#define SIL_ENDIAN_BIG                          /* ビッグエンディアン */
    119115#endif
    120116
    121117
    122118/*
    123  *  8ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     119 *  8ビット単位の読出し/書込み
    124120 */
    125121#ifdef UINT8_MAX
     
    145141
    146142/*
    147  *  16ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     143 *  16ビット単位の読出し/書込み
    148144 */
    149145
     
    165161}
    166162
    167 #ifdef SIL_ENDIAN_BIG                   /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     163#ifdef SIL_ENDIAN_BIG                   /* ビッグエンディアンプロセッサ */
    168164
    169165#define sil_reh_bem(mem)                sil_reh_mem(mem)
     
    194190#endif /* TOPPERS_OMIT_SIL_WRH_LEM */
    195191#else /* SIL_ENDIAN_BIG */
    196 #ifdef SIL_ENDIAN_LITTLE                /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     192#ifdef SIL_ENDIAN_LITTLE                /* リトルエンディアンプロセッサ */
    197193
    198194#define sil_reh_lem(mem)                sil_reh_mem(mem)
     
    230226
    231227/*
    232  *  32ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     228 *  32ビット単位の読出し/書込み
    233229 */
    234230
     
    250246}
    251247
    252 #ifdef SIL_ENDIAN_BIG                   /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     248#ifdef SIL_ENDIAN_BIG                   /* ビッグエンディアンプロセッサ */
    253249
    254250#define sil_rew_bem(mem)                sil_rew_mem(mem)
     
    278274
    279275#endif /* TOPPERS_OMIT_SIL_WRW_LEM */
    280 #else /* SIL_ENDIAN_BIG */              /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     276#else /* SIL_ENDIAN_BIG */              /* リトルエンディアンプロセッサ */
    281277
    282278#define sil_rew_lem(mem)                sil_rew_mem(mem)
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_stddef.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    55 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    66 *
    7  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    9  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    11  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    12  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    14  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—p
    16  *      ŽÒƒ}ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    18  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    21  *      ‚ƁD
    22  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    25  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    27  *        •ñ‚·‚邱‚ƁD
    28  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    29  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    30  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    31  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    32  *      –Ɛӂ·‚邱‚ƁD
     7 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     8 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12 *      スコード中に含まれていること.
     13 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16 *      の無保証規定を掲載すること.
     17 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19 *      と.
     20 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     22 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23 *        報告すること.
     24 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28 *      免責すること.
    3329 *
    34  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    35  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    36  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    37  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    38  *  ‚̐ӔC‚𕉂í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34 *  の責任を負わない.
    3935 *
    4036 *  @(#) $Id$
     
    4238
    4339/*
    44  *              t_stddef.h‚̃vƒƒZƒbƒTˆË‘¶•”iRX630—pj
     40 *              t_stddef.hのプロセッサ依存部(RX630用)
    4541 *
    46  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_stddef.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    47  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    48  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     42 *  このインクルードファイルは,target_stddef.h(または,そこからインク
     43 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     44 *  直接インクルードしてはならない.
    4945 */
    5046
     
    5349
    5450/*
    55  *  ƒ^[ƒQƒbƒg‚ðŽ¯•Ê‚·‚邽‚߂̃}ƒNƒ‚Ì’è‹`
     51 *  ターゲットを識別するためのマクロの定義
    5652 */
    57 #define TOPPERS_RX630                           /* ƒvƒƒZƒbƒT—ªÌ */
     53#define TOPPERS_RX630                           /* プロセッサ略称 */
    5854
    5955#endif /* TOPPERS_PRC_STDDEF_H */
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_support.src

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
    r164 r167  
    1111;   Copyright (C) 2013      by Mitsuhiro Matsuura
    1212
    13 ;   ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14 ;   ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    15 ;   •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16 ;   (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    17 ;       Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18 ;       ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19 ;   (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20 ;       —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—p
    22 ;       ŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    24 ;       ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25 ;   (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    26 ;       —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27 ;       ‚ƁD
    28 ;     (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31 ;         ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32 ;     (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33 ;         •ñ‚·‚邱‚ƁD
    34 ;   (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35 ;       ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36 ;       ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37 ;       —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38 ;       –Ɛӂ·‚邱‚ƁD
     13;   上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14;   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15;   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16;   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17;       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18;       スコード中に含まれていること.
     19;   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20;       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21;       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22;       の無保証規定を掲載すること.
     23;   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24;       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25;       と.
     26;     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27;         作権表示,この利用条件および下記の無保証規定を掲載すること.
     28;     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29;         報告すること.
     30;   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31;       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32;       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33;       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34;       免責すること.
    3935
    40 ;   –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41 ;   ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42 ;   ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43 ;   ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44 ;   ‚̐ӔC‚𕉂í‚È‚¢D
     36;   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37;   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38;   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39;   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40;   の責任を負わない.
    4541
    4642;  @(#) $Id: prc_support.src 536 2014-10-09 23:11:40Z coas-nagasima $
     
    4844
    4945;
    50 ;  ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    51 [ƒ‹ ƒAƒZƒ“ƒuƒŠŒ¾Œê•”iRX630—pj
    52 ;
    53 
    54 ;
    55 ;  ƒfƒBƒXƒpƒbƒ`ƒƒ‚¨‚æ‚ÑŠ„ž‚Ý(CPU—áŠO)o“ü‚èŒû‚̃‹[ƒ‹:
    56 ;       “®ìƒ‚[ƒh‚ðˆÈ‰º‚̂悤‚É’è‹`‚·‚é.
    57 ;               ƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh:
    58 ;                       CPUƒƒbƒNó‘Ô, Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô,
    59 ;                       ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg(intnest = 0), ƒ^ƒXƒNƒXƒ^ƒbƒN
    60 ;               Š„ž‚Ý(CPU—áŠO)ˆ—ƒ‚[ƒh
    61 ;                       ‘SŠ„ž‚݃ƒbƒNó‘Ô(PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0),
    62 ;                       Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô(IPL != 0)
    63 ;                       Š„ž‚݃Rƒ“ƒeƒLƒXƒg(intnest != 0), Š„ž‚݃Xƒ^ƒbƒN
    64 ;
    65 ;       ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚݂̃Tƒ|[ƒg—L–³‚Æ, CPUƒƒbƒNó‘Ô, Š„ž‚Ý—Dæ“x
    66 ;       ƒ}ƒXƒN‘S‰ðœó‘Ô‚ÌŠÖŒW‚͈ȉº‚Ì’Ê‚è‚Å‚ ‚é.
    67 ;               ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚Ý–¢ƒTƒ|[ƒgŽž:
    68 ;                       CPUƒƒbƒNó‘Ô(PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0)
    69 ;                       Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô(IPL = 0)
    70 ;               ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚݃Tƒ|[ƒgŽž:
    71 ;                       CPUƒƒbƒNó‘Ô
    72 ;                               (PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0, IPL = IPL_LOCK, lock_flag = true)
    73 ;                       Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô(saved_ipl = 0)
    74 ;
    75 ;       Še\‘¢‘̃|ƒCƒ“ƒ^‚ðˆÈ‰º‚̂悤‚ÉŠeƒŒƒWƒXƒ^‚ɃAƒTƒCƒ“‚·‚é.
    76 ;               r15 = p_runtsk  ‚½‚¾‚µƒfƒBƒXƒpƒbƒ`ƒƒ‚ÌŠeoŒû‚Å‚Í–³Œø
    77 ;               r14 = *p_runtsk dispatcher ‚Ì’†‚Å‚Í p_runtsk Šm’莞‚ɍĎ擾‚·‚é
    78 ;       Še“ü‚èŒû‚©‚çÅ‰‚ɕϐ”ƒAƒNƒZƒX‚·‚é‚Æ‚«‚ɏã‹LƒŒƒWƒXƒ^‚É•Û‘¶‚·‚é.
    79 ;
    80 ;       \‘¢‘̃Aƒ‰ƒCƒƒ“ƒg‚ւ̑Ήž
    81 ;               \‘¢‘̃Aƒ‰ƒCƒƒ“ƒg‚ª4Byte(ƒAƒ“ƒpƒbƒN)‚̏ꍇ:
    82 ;                       ˆê”Ê“I‚ȃŒƒWƒXƒ^‘Š‘΃AƒhƒŒƒbƒVƒ“ƒO‚ª‰Â”\
    83 ;                               —á:     mov.l   #__kernel_p_runtsk, r15
     46;  プロセッサ依存モジュール アセンブリ言語部(RX630用)
     47;
     48
     49;
     50;  ディスパッチャおよび割込み(CPU例外)出入り口のルール:
     51;       動作モードを以下のように定義する.
     52;               ディスパッチャモード:
     53;                       CPUロック状態, 割込み優先度マスク全解除状態,
     54;                       タスクコンテキスト(intnest = 0), タスクスタック
     55;               割込み(CPU例外)処理モード
     56;                       全割込みロック状態(PSWレジスタIビット = 0),
     57;                       割込み優先度マスク全解除でない状態(IPL != 0)
     58;                       割込みコンテキスト(intnest != 0), 割込みスタック
     59;
     60;       カーネル管理外割込みのサポート有無と, CPUロック状態, 割込み優先度
     61;       マスク全解除状態の関係は以下の通りである.
     62;               カーネル管理外割込み未サポート時:
     63;                       CPUロック状態(PSWレジスタIビット = 0)
     64;                       割込み優先度マスク全解除状態(IPL = 0)
     65;               カーネル管理外割込みサポート時:
     66;                       CPUロック状態
     67;                               (PSWレジスタIビット = 0, IPL = IPL_LOCK, lock_flag = true)
     68;                       割込み優先度マスク全解除状態(saved_ipl = 0)
     69;
     70;       各構造体ポインタを以下のように各レジスタにアサインする.
     71;               r15 = p_runtsk  ただしディスパッチャの各出口では無効
     72;               r14 = *p_runtsk dispatcher の中では p_runtsk 確定時に再取得する
     73;       各入り口から最初に変数アクセスするときに上記レジスタに保存する.
     74;
     75;       構造体アライメントへの対応
     76;               構造体アライメントが4Byte(アンパック)の場合:
     77;                       一般的なレジスタ相対アドレッシングが可能
     78;                               例:      mov.l   #__kernel_p_runtsk, r15
    8479;                                       mov.l   r0, TCB_sp[r15]
    85 ;               \‘¢‘̃Aƒ‰ƒCƒƒ“ƒg‚ª4Byte‚Å‚Í‚È‚¢(ƒpƒbƒN)‚̏ꍇ:
    86 ;                       mov.l‚̂悤‚Ƀƒ“ƒOƒTƒCƒYŽw’è‚̏ꍇA‘Š‘Î’l‚Í4‚Ì”{”‚Ì‚Ý—LŒø
    87 ;                       ‚±‚Ì‚½‚ß, ˆê“x‘ΏۃAƒhƒŒƒX‚ð‹‚ß‚Ä‚©‚çƒAƒNƒZƒX‚·‚é•K—v‚ª‚ ‚é
    88 ;                               —á:     mov.l   #__kernel_p_runtsk, r15
     80;               構造体アライメントが4Byteではない(パック)の場合:
     81;                       mov.lのようにロングサイズ指定の場合、相対値は4の倍数のみ有効
     82;                       このため, 一度対象アドレスを求めてからアクセスする必要がある
     83;                               :      mov.l   #__kernel_p_runtsk, r15
    8984;                                       add             #TCB_sp, r15, r5
    9085;                                       mov.l   r0, [r5]
    91 ;               ŠeƒIƒtƒZƒbƒg’l‚ð”»’f‚µ, ðŒƒAƒZƒ“ƒuƒ‹‚É‚æ‚èƒR[ƒh‚ðØ‚è‘Ö‚¦‚é
    92 ;
    93 
    94 ;
    95 \‘¢‘̃AƒNƒZƒX‚̃IƒtƒZƒbƒg’è‹`
     86;               各オフセット値を判断し, 条件アセンブルによりコードを切り替える
     87;
     88
     89;
     90構造体アクセスのオフセット定義
    9691;
    9792        .include        offset.inc
    9893
    9994;
    100 ŠeŽíEQU’è‹`(Hƒtƒ@ƒCƒ‹‚Ì#define’è‹`)
     95各種EQU定義(Hファイルの#define定義)
    10196;
    10297        .include        asm_config.inc
     
    150145
    151146;
    152 ;  TCB_sp ‚ւ̏‘ž‚݃}ƒNƒ
     147;  TCB_sp への書込みマクロ
    153148;
    154149st_TCB_sp       .macro  src, tcb, tmp
     
    162157
    163158;
    164 ;  TCB_sp ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     159;  TCB_sp からの読出しマクロ
    165160;
    166161ld_TCB_sp       .macro  dst, tcb, tmp
     
    174169
    175170;
    176 ;  TCB_pc ‚ւ̏‘ž‚݃}ƒNƒ
     171;  TCB_pc への書込みマクロ
    177172;
    178173st_TCB_pc       .macro  src, tcb, tmp
     
    186181
    187182;
    188 ;  TCB_pc ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     183;  TCB_pc からの読出しマクロ
    189184;
    190185ld_TCB_pc       .macro  dst, tcb, tmp
     
    198193
    199194;
    200 ;  TCB_texptn ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     195;  TCB_texptn からの読出しマクロ
    201196;
    202197ld_TCB_texptn   .macro  dst, tcb, tmp
     
    210205
    211206;
    212 ;  TCB_p_tinib ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     207;  TCB_p_tinib からの読出しマクロ
    213208;
    214209ld_TCB_p_tinib  .macro  dst, tcb, tmp
     
    222217
    223218;
    224 ;  TINIB_exinf ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     219;  TINIB_exinf からの読出しマクロ
    225220;
    226221ld_TINIB_exinf  .macro  dst, tinib, tmp
     
    234229
    235230;
    236 ;  TINIB_task ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     231;  TINIB_task からの読出しマクロ
    237232;
    238233ld_TINIB_task   .macro  dst, tinib, tmp
     
    249244
    250245;
    251 ;  API‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    252 ;
    253 ŒÄ‚яo‚µðŒ:
    254 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    255 ;
    256 ‚±‚±‚Å‚Í, ƒRƒ“ƒeƒLƒXƒg‚Ì‘Þ”ð‚Æ, ŽÀsÄŠJ”Ô’n‚̐ݒè‚ð‚·‚é.
     246;  APIからのタスクディスパッチャ入口
     247;
     248呼び出し条件:
     249;       ・ディスパッチャモード(ファイルヘッダ参照)
     250;
     251ここでは, コンテキストの退避と, 実行再開番地の設定をする.
    257252;
    258253__kernel_dispatch:
    259         pushm   r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•Û‘¶
     254        pushm   r6-r13                                          ; 非スクラッチレジスタ保存
    260255        mov.l   #__kernel_p_runtsk, r15
    261256        mov.l   [r15], r14
    262         st_TCB_sp       r0, r14, r5                             ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðTCB‚É•Û‘¶
    263         st_TCB_pc       #dispatch_r, r14, r5    ; ŽÀsÄŠJ”Ô’n‚ðTCB‚É•Û‘¶
     257        st_TCB_sp       r0, r14, r5                             ; スタックポインタをTCBに保存
     258        st_TCB_pc       #dispatch_r, r14, r5    ; 実行再開番地をTCBに保存
    264259        bra             dispatcher
    265260
    266261;
    267 ;  API‚ւ̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒoŒû
    268 ;
    269 ŒÄ‚яo‚µðŒ:
    270 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    271 ;
    272 ‚±‚±‚Å‚Í, ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µ‚Æ, ƒRƒ“ƒeƒLƒXƒg‚Ì•œ‹A‚ð‚·‚é.
     262;  APIへのタスクディスパッチャ出口
     263;
     264呼び出し条件:
     265;       ・ディスパッチャモード(ファイルヘッダ参照)
     266;
     267ここでは, タスク例外ハンドラ呼出しと, コンテキストの復帰をする.
    273268;
    274269dispatch_r:
    275         btst    #TCB_enatex_bit, TCB_enatex[r14]        ; ƒ^ƒXƒN—áŠOˆ—‹–‰Â?
     270        btst    #TCB_enatex_bit, TCB_enatex[r14]        ; タスク例外処理許可?
    276271        bz      dispatch_r_rts
    277         ld_TCB_texptn   r5, r14, r4                     ; •Û—¯—áŠO—vˆö‚ª‚ ‚é‚©H
     272        ld_TCB_texptn   r5, r14, r4                     ; 保留例外要因があるか?
    278273        cmp             #0, r5
    279274        bz      dispatch_r_rts
    280         bsr             __kernel_call_texrtn            ; ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µˆ—ŽÀs
     275        bsr             __kernel_call_texrtn            ; タスク例外ハンドラ呼出し処理実行
    281276dispatch_r_rts:
    282         popm    r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•œ‹A
    283         rts                                     ; dispatch ŒÄ‚яo‚µŒ³‚Ö–ß‚é.
    284 
    285 ;
    286 ƒ^ƒXƒN‹N“®ˆ—(ƒ^ƒXƒNæ“ª‚ւ̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒoŒû)
    287 ;
    288 ŒÄ‚яo‚µðŒ:
    289 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    290 ;
    291 ‚±‚±‚Å‚Í, CPUƒƒbƒN‰ðœó‘Ô‚É‚µ, ƒ^ƒXƒN‚ð‹N“®‚·‚é.
     277        popm    r6-r13                                          ; 非スクラッチレジスタ復帰
     278        rts                                     ; dispatch 呼び出し元へ戻る.
     279
     280;
     281タスク起動処理(タスク先頭へのタスクディスパッチャ出口)
     282;
     283呼び出し条件:
     284;       ・ディスパッチャモード(ファイルヘッダ参照)
     285;
     286ここでは, CPUロック解除状態にし, タスクを起動する.
    292287;
    293288__kernel_start_r:
    294289        mov.l   #_ext_tsk, r5
    295         push.l  r5                                                      ; –ß‚è”Ô’n‚ðƒXƒ^ƒbƒN‚ɐςÞ
     290        push.l  r5                                                      ; 戻り番地をスタックに積む
    296291        ld_TCB_p_tinib  r5, r14, r4
    297         ld_TINIB_exinf  r1, r5, r4                      ; Šg’£î•ñ‚ð‘æˆêˆø”‚ɐݒè
    298         ld_TINIB_task   r5, r5, r4                      ; ƒ^ƒXƒN‚Ì‹N“®”Ô’n‚ðŽæ“¾
     292        ld_TINIB_exinf  r1, r5, r4                      ; 拡張情報を第一引数に設定
     293        ld_TINIB_task   r5, r5, r4                      ; タスクの起動番地を取得
    299294.if     TIPM_LOCK == -15
    300         setpsw  i                                                       ; Š„ž‚Ý‹–‰Â(CPUƒƒbƒN‰ðœó‘Ô)
    301 .else
    302         mov.l   #__kernel_lock_flag, r4         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
    303         mov.l   #0, [r4]                                        ; ‚±‚±‚É—ˆ‚é‚Æ‚«‚Í•K‚¸ saved_ipl ‚Ì
    304         mvtc    #00010000H, psw                         ; ’l‚Í 0 ‚Ì‚½‚ß, ’¼’l‚ðÝ’è‚·‚é.
    305                                                                 ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô( I = 1 )
    306                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô( IPL = 0 )
     295        setpsw  i                                                       ; 割込み許可(CPUロック解除状態)
     296.else
     297        mov.l   #__kernel_lock_flag, r4         ; CPUロック解除状態へ
     298        mov.l   #0, [r4]                                        ; ここに来るときは必ず saved_ipl の
     299        mvtc    #00010000H, psw                         ; 値は 0 のため, 直値を設定する.
     300                                                                ; 全割込みロック解除状態( I = 1 )
     301                                                                ; 割込み優先度マスク全解除状態( IPL = 0 )
    307302.endif
    308303        jmp             r5
    309304
    310305;
    311 ƒJ[ƒlƒ‹‹N“®‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    312 ;
    313 ‚±‚̃‹[ƒ`ƒ“‚́CƒJ[ƒlƒ‹‹N“®Žž‚ɁC‚·‚ׂĂ̊„ž‚Ý‚ð‹ÖŽ~‚µ‚½ó‘Ô
    314 ; iŠ„ž‚݃ƒbƒNó‘Ô‚Æ“¯“™j‚ŌĂяo‚³‚ê‚éD‚Ü‚½CŠ„ž‚݃‚[ƒhi”ñ
    315 ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Æ“¯“™j‚ŌĂяo‚³‚ê‚邱‚Æ‚ð‘z’肵‚Ä‚¢‚éD
    316 ;
    317 ŒÄ‚яo‚µðŒ:
    318 ;       EŠ„ž‚Ý(CPU—áŠO)ˆ—ƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    319 ;
    320 ‚±‚±‚Å‚Í, ƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh‚ɕύX‚·‚é.
     306カーネル起動からのタスクディスパッチャ入口
     307;
     308このルーチンは,カーネル起動時に,すべての割込みを禁止した状態
     309; (割込みロック状態と同等)で呼び出される.また,割込みモード(非
     310タスクコンテキストと同等)で呼び出されることを想定している.
     311;
     312呼び出し条件:
     313;       ・割込み(CPU例外)処理モード(ファイルヘッダ参照)
     314;
     315ここでは, ディスパッチャモードに変更する.
    321316;
    322317__kernel_start_dispatch:
    323318        mov.l   #__kernel_intnest, r5
    324         mov.w   #0, [r5]                                        ; ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     319        mov.w   #0, [r5]                                        ; タスクコンテキストに切換え
    325320.if     TIPM_LOCK != -15
    326         mvtc    #(IPL_LOCK | 00010000H), psw    ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô
    327                                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô
    328 .endif
    329 
    330 ;
    331 ; ƒ^ƒXƒNI—¹(Œ»Ý‚̃Rƒ“ƒeƒLƒXƒg‚ðŽÌ‚Ä‚é)‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    332 ;
    333 ŒÄ‚яo‚µðŒ:
    334 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    335 ;
    336 ‚±‚±‚Å‚Í, ‰½‚à‚·‚邱‚Æ‚Í‚È‚¢.
    337 ‚È‚¨, p_runtsk ‚̃AƒhƒŒƒXŽæ“¾‚¾‚¯‚͍s‚È‚¤.
     321        mvtc    #(IPL_LOCK | 00010000H), psw    ; 全割込みロック解除状態
     322                                                                                ; 割込み優先度マスク全解除でない状態
     323.endif
     324
     325;
     326; タスク終了(現在のコンテキストを捨てる)からのタスクディスパッチャ入口
     327;
     328呼び出し条件:
     329;       ・ディスパッチャモード(ファイルヘッダ参照)
     330;
     331ここでは, 何もすることはない.
     332なお, p_runtsk のアドレス取得だけは行なう.
    338333;
    339334__exit_and_dispatch:
     
    341336
    342337;
    343 ; ƒfƒBƒXƒpƒbƒ`ƒƒ–{‘Ì
    344 ;
    345 ŒÄ‚яo‚µðŒ:
    346 ;       E‚·‚ׂẴ^ƒXƒN‚̃Rƒ“ƒeƒLƒXƒg‚Í•Û‘¶‚³‚ê‚Ä‚¢‚é.
    347 ;
    348 ;  dispatcher ŒÄoŽž‚̃Xƒ^ƒbƒN:
    349 ;       E__kernel_dispatch ‚©‚ç‚«‚½ê‡                        : ƒ^ƒXƒNƒXƒ^ƒbƒN
    350 ;       Eexit_and_dispatch ‚©‚ç‚«‚½ê‡:
    351 ;               exit_task ‚©‚ç‚«‚½ê‡                                  : ƒ^ƒXƒNƒXƒ^ƒbƒN
    352 ;               ƒJ[ƒlƒ‹‹N“®Žž(__kernel_start_dispatch) : Š„ž‚݃Xƒ^ƒbƒN
    353 ;       Eret_int ‚©‚ç‚«‚½ê‡                                          : ƒ^ƒXƒNƒXƒ^ƒbƒN
    354 ;       Edispatcher_idle_loop ‚©‚ç‚«‚½ê‡                     : Š„ž‚݃Xƒ^ƒbƒN
     338; ディスパッチャ本体
     339;
     340呼び出し条件:
     341;       ・すべてのタスクのコンテキストは保存されている.
     342;
     343;  dispatcher 呼出時のスタック:
     344;       ・__kernel_dispatch からきた場合                       : タスクスタック
     345;       ・exit_and_dispatch からきた場合:
     346;               exit_task からきた場合                                        : タスクスタック
     347;               カーネル起動時(__kernel_start_dispatch)        : 割込みスタック
     348;       ・ret_int からきた場合                                         : タスクスタック
     349;       ・dispatcher_idle_loop からきた場合                    : 割込みスタック
    355350;
    356351dispatcher:
    357352.if     LOG_DSP_ENTER == 1
    358353        push.l  r15
    359         mov.l   r14, r1                                         ; ˆø”(ƒfƒBƒXƒpƒbƒ`Œ³TCB)‚ðÝ’è
     354        mov.l   r14, r1                                         ; 引数(ディスパッチ元TCB)を設定
    360355        bsr             _kernel_log_dsp_enter
    361356        pop.l   r15
    362357.endif
    363358        mov.l   #__kernel_p_schedtsk, r5     
    364         mov.l   [r5], [r15]                                     ; p_schedtsk ‚ð p_runtsk ‚É
     359        mov.l   [r5], [r15]                                     ; p_schedtsk を p_runtsk に
    365360        mov.l   [r15], r14
    366361        cmp             #0, r14
    367         bz              dispatcher_pre_idle                     ; schedtsk ‚ª‚È‚¯‚ê‚΃AƒCƒhƒ‹ƒ‹[ƒv‚Ö
    368         ld_TCB_sp       r0, r14, r5                             ; ƒ^ƒXƒNƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚𕜋A
     362        bz              dispatcher_pre_idle                     ; schedtsk がなければアイドルループへ
     363        ld_TCB_sp       r0, r14, r5                             ; タスクスタックポインタを復帰
    369364.if     LOG_DSP_LEAVE == 1
    370365        push.l  r14
    371         mov.l   r14, r1                                         ; ˆø”(ƒfƒBƒXƒpƒbƒ`æTCB)‚ðÝ’è
     366        mov.l   r14, r1                                         ; 引数(ディスパッチ先TCB)を設定
    372367        bsr             _kernel_log_dsp_leave
    373368        pop.l   r14
    374369.endif
    375370        ld_TCB_pc       r5, r14, r4
    376         jmp             r5                                      ; ŽÀsÄŠJ”Ô’n‚ÖƒWƒƒƒ“ƒv
    377 
    378 ;
    379 ;  schdedtsk‚ªNULL‚̏ꍇ‚̓AƒCƒhƒ‹ƒ‹[ƒv‚É“ü‚é
    380 ƒAƒCƒhƒ‹ƒ‹[ƒv‚ÍŠ„ž‚ݏˆ—ƒ‚[ƒh‚Å“®ì‚³‚¹‚é
    381 ;
    382 ‚±‚±‚ÅŠ„ž‚݃‚[ƒh‚ɐ؂芷‚¦‚é‚̂́C‚±‚±‚Å”­¶‚·‚銄ž‚ݏˆ—‚É
    383 ‚ǂ̃Xƒ^ƒbƒN‚ðŽg‚¤‚©‚Æ‚¢‚¤–â‘è‚Ì‰ðŒˆ‚ÆCŠ„ž‚݃nƒ“ƒhƒ‰“à‚ł̃^
    384 ƒXƒNƒfƒBƒXƒpƒbƒ`‚Ì–hŽ~‚Æ‚¢‚¤2‚‚̈Ӗ¡‚ª‚ ‚éD
     371        jmp             r5                                      ; 実行再開番地へジャンプ
     372
     373;
     374;  schdedtskがNULLの場合はアイドルループに入る
     375アイドルループは割込み処理モードで動作させる
     376;
     377ここで割込みモードに切り換えるのは,ここで発生する割込み処理に
     378どのスタックを使うかという問題の解決と,割込みハンドラ内でのタ
     379スクディスパッチの防止という2つの意味がある.
    385380;
    386381dispatcher_pre_idle:
    387382        mov.l   #__kernel_istkpt,r5
    388         mov.l   [r5], r0                                        ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦
    389         mov.l   #__kernel_intnest, r5
    390         mov.w   #1, [r5]                                        ; ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     383        mov.l   [r5], r0                                        ; 割込み用のスタックへ切替え
     384        mov.l   #__kernel_intnest, r5
     385        mov.w   #1, [r5]                                        ; 非タスクコンテキストに切換え
    391386.if     TIPM_LOCK != -15
    392         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
     387        mov.l   #__kernel_lock_flag, r5         ; CPUロック解除状態へ
    393388        mov.l   #0, [r5]
    394         mvtc    #0, psw                                         ; —Dæ“x0‚ÌŠ„ž‚ݏˆ—’†‚ð‹U‘•
     389        mvtc    #0, psw                                         ; 優先度0の割込み処理中を偽装
    395390.endif
    396391
    397392dispatcher_idle_loop:
    398         setpsw  i                                                       ; ‘SŠ„ž‚Ý‹–‰Â
    399         clrpsw  i                                                       ; ‘SŠ„ž‚Ý‹ÖŽ~
    400 
    401         mov.l   #__kernel_reqflg, r5            ; reqflg ‚ª FALSE ‚È‚ç
     393        setpsw  i                                                       ; 全割込み許可
     394        clrpsw  i                                                       ; 全割込み禁止
     395
     396        mov.l   #__kernel_reqflg, r5            ; reqflg が FALSE なら
    402397        mov.l   [r5], r4
    403398        cmp             #0, r4
    404         bz      dispatcher_idle_loop            ; ƒAƒCƒhƒ‹ƒ‹[ƒv‚ðŒJ‚è•Ô‚·
    405         mov.l   #0, [r5]                                        ; reqflg‚ªtrue‚È‚çfalse‚É‚·‚é
    406         mov.l   #__kernel_intnest, r5
    407         mov.w   #0, [r5]                                        ; ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     399        bz      dispatcher_idle_loop            ; アイドルループを繰り返す
     400        mov.l   #0, [r5]                                        ; reqflgがtrueならfalseにする
     401        mov.l   #__kernel_intnest, r5
     402        mov.w   #0, [r5]                                        ; タスクコンテキストに切換え
    408403.if     TIPM_LOCK != -15
    409         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒNó‘Ô‚Ö
     404        mov.l   #__kernel_lock_flag, r5         ; CPUロック状態へ
    410405        mov.l   #1, [r5]
    411406        mov.l   #__kernel_saved_ipl, r5
    412407        mov.l   #0, [r5]
    413         mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô
    414                                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô
    415 .endif
    416         bra             dispatcher                                      ; dispatcher ‚Ö–ß‚é
    417 
    418 
    419 ;
    420 ; ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µ
    421 ;
    422 ; ƒ‚[ƒh‚ƃXƒ^ƒbƒN‚ð”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚ɐ؂è‘Ö‚¦D
     408        mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; 全割込みロック解除状態
     409                                                                                ; 割込み優先度マスク全解除でない状態
     410.endif
     411        bra             dispatcher                                      ; dispatcher へ戻る
     412
     413
     414;
     415; カーネルの終了処理の呼出し
     416;
     417; モードとスタックを非タスクコンテキスト用に切り替え.
    423418;
    424419        .glb    __kernel_call_exit_kernel
    425420__kernel_call_exit_kernel:
    426421.if     TIPM_LOCK != -15
    427         clrpsw  i                                                       ; ‘SŠ„ž‚Ý‹ÖŽ~
    428         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
     422        clrpsw  i                                                       ; 全割込み禁止
     423        mov.l   #__kernel_lock_flag, r5         ; CPUロック解除状態へ
    429424        mov.l   #0, [r5]
    430425.endif
    431426        mov.l   #__kernel_istkpt, r5
    432         mov.l   [r5], r0                                        ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦
    433         mov.l   #__kernel_intnest, r5
    434         mov.w   #1, [r5]                                        ; ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     427        mov.l   [r5], r0                                        ; 割込み用のスタックへ切替え
     428        mov.l   #__kernel_intnest, r5
     429        mov.w   #1, [r5]                                        ; 非タスクコンテキストに切換え
    435430        bsr             __kernel_exit_kernel
    436431        bra             __kernel_call_exit_kernel
     
    438433
    439434;
    440 Š„ž‚Ý(CPU—áŠO)‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    441 ;
    442 ;       ŒÄo‚µðŒ:
    443 ;       E‘SŠ„ž‚݃ƒbƒNó‘Ô(PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0)
    444 ;       EŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô(IPL != 0)
    445 ;       Eƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg(intnest=0)
    446 ;       EŽg—pƒXƒ^ƒbƒN‚̓^ƒXƒNƒXƒ^ƒbƒN
    447 ;       Ereqflg = true
    448 ;
    449 ‚±‚±‚Å‚Í, ƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh‚ɕύX‚µ, reqflg‚ðOFF‚É‚µ‚Ä‚©‚ç,
    450 ’x‰„ƒfƒBƒXƒpƒbƒ`‚Ì—L–³‚ð”»’f‚·‚é.
    451 ;
    452 
    453 ;
    454 ;  ret_intæ“ª‚ŃXƒ^ƒbƒN‚ɐς܂ê‚Ä‚¢‚éPSWƒŒƒWƒXƒ^‚ւ̃IƒtƒZƒbƒg
     435割込み(CPU例外)からのタスクディスパッチャ入口
     436;
     437;       呼出し条件:
     438;       ・全割込みロック状態(PSWレジスタIビット = 0)
     439;       ・割込み優先度マスク全解除でない状態(IPL != 0)
     440;       ・タスクコンテキスト(intnest=0)
     441;       ・使用スタックはタスクスタック
     442;       reqflg = true
     443;
     444ここでは, ディスパッチャモードに変更し, reqflgをOFFにしてから,
     445遅延ディスパッチの有無を判断する.
     446;
     447
     448;
     449;  ret_int先頭でスタックに積まれているPSWレジスタへのオフセット
    455450;  ACC + FPSW + R14--R15 + R1--R5 + PC
    456451;
     
    459454ret_int:
    460455.if     TIPM_LOCK == -15
    461         mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; Š„ž‚Ý/CPU—áŠO”­¶‘O‚ÌIPL’lŽæ“¾
     456        mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; 割込み/CPU例外発生前のIPL値取得
    462457        and             #PSW_IPL_MASK, r5
    463         mvtc    r5, psw                                         ; ‘SŠ„ž‚݃ƒbƒN(CPUƒƒbƒN)ó‘Ô
    464                                                                                 ; Š„ž‚Ý/CPU—áŠO”­¶‘O‚ÌŠ„ž‚Ý—Dæ“x
    465 .else
    466         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒNó‘Ô‚Ö
     458        mvtc    r5, psw                                         ; 全割込みロック(CPUロック)状態
     459                                                                                ; 割込み/CPU例外発生前の割込み優先度
     460.else
     461        mov.l   #__kernel_lock_flag, r5         ; CPUロック状態へ
    467462        mov.l   #1, [r5]
    468         mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; Š„ž‚Ý/CPU—áŠO”­¶‘O‚ÌIPL’lŽæ“¾
     463        mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; 割込み/CPU例外発生前のIPL値取得
    469464        and             #PSW_IPL_MASK, r5
    470465        mov.l   #__kernel_saved_ipl, r4
    471466        mov.l   r5, [r4]
    472         mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô
    473                                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô
     467        mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; 全割込みロック解除状態
     468                                                                                ; 割込み優先度マスク全解除でない状態
    474469.endif
    475470        mov.l   #__kernel_reqflg, r5
     
    477472        mov.l   #__kernel_p_runtsk, r15     
    478473        mov.l   [r15], r14
    479         mov.l   #__kernel_dspflg, r5            ; dspflg ‚ª FALSE ‚È‚ç ret_int_r ‚Ö
     474        mov.l   #__kernel_dspflg, r5            ; dspflg が FALSE なら ret_int_r へ
    480475        mov.l   [r5], r5
    481476        cmp             #0, r5
     
    483478        mov.l   #__kernel_p_schedtsk, r5
    484479        mov.l   [r5], r5
    485         cmp             r5, r14                                         ; p_schedtsk ‚Æ p_runtsk ‚ª“¯‚¶‚È‚ç
    486         beq     ret_int_r_call_tex                      ; ret_int_r_call_tex ‚Ö
    487         pushm   r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•Û‘¶
    488         st_TCB_sp       r0, r14, r5                             ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðTCB‚É•Û‘¶
    489         st_TCB_pc       #ret_int_r, r14, r5             ; ŽÀsÄŠJ”Ô’n‚ðTCB‚É•Û‘¶
     480        cmp             r5, r14                                         ; p_schedtsk と p_runtsk が同じなら
     481        beq     ret_int_r_call_tex                      ; ret_int_r_call_tex
     482        pushm   r6-r13                                          ; 非スクラッチレジスタ保存
     483        st_TCB_sp       r0, r14, r5                             ; スタックポインタをTCBに保存
     484        st_TCB_pc       #ret_int_r, r14, r5             ; 実行再開番地をTCBに保存
    490485        bra             dispatcher
    491486
    492487;
    493 Š„ž‚Ý(CPU—áŠO)‚ւ̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒoŒû
    494 ;
    495 ŒÄ‚яo‚µðŒ:
    496 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    497 ;
    498 ‚±‚±‚Å‚Í, ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µ‚Æ, Š„ž‚Ý(CPU—áŠO)ˆ—ƒ‚[ƒh‚Ö‚Ì
    499 •ÏX‚Æ, ƒRƒ“ƒeƒLƒXƒg‚Ì•œ‹A‚ðs‚¢, Š„ž‚Ý(CUP—áŠO)”­¶Œ³‚Ö–ß‚é.
    500 ;
    501 __kernel_break_wait:                                    ;ƒ^ƒXƒNƒ‚ƒjƒ^—pƒ‰ƒxƒ‹
     488割込み(CPU例外)へのタスクディスパッチャ出口
     489;
     490呼び出し条件:
     491;       ・ディスパッチャモード(ファイルヘッダ参照)
     492;
     493ここでは, タスク例外ハンドラ呼出しと, 割込み(CPU例外)処理モードへの
     494変更と, コンテキストの復帰を行い, 割込み(CUP例外)発生元へ戻る.
     495;
     496__kernel_break_wait:                                    ;タスクモニタ用ラベル
    502497ret_int_r:
    503         popm    r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•œ‹A
     498        popm    r6-r13                                          ; 非スクラッチレジスタ復帰
    504499ret_int_r_call_tex:
    505         btst    #TCB_enatex_bit, TCB_enatex[r14]        ; ƒ^ƒXƒN—áŠOˆ—‹–‰Â?
     500        btst    #TCB_enatex_bit, TCB_enatex[r14]        ; タスク例外処理許可?
    506501        bz      ret_int_r_rte
    507         ld_TCB_texptn   r5, r14, r4                     ; •Û—¯—áŠO—vˆö‚ª‚ ‚é‚©H
     502        ld_TCB_texptn   r5, r14, r4                     ; 保留例外要因があるか?
    508503        cmp             #0, r5
    509504        bz      ret_int_r_rte
    510         bsr             __kernel_call_texrtn            ; ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µˆ—ŽÀs
     505        bsr             __kernel_call_texrtn            ; タスク例外ハンドラ呼出し処理実行
    511506ret_int_r_rte:
    512507.if     TIPM_LOCK != -15
    513         clrpsw  i                                                       ; ‘SŠ„ž‚Ý‹ÖŽ~
    514         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
     508        clrpsw  i                                                       ; 全割込み禁止
     509        mov.l   #__kernel_lock_flag, r5         ; CPUロック解除状態へ
    515510        mov.l   #0, [r5]
    516511.endif
    517         popm    r4-r5                                           ; ƒAƒLƒ
    518 ƒ€ƒŒ[ƒ^•œ‹A
    519         mvtaclo r5                                                      ; ACCÅ‰ºˆÊ16bit‚Í0‚Å•œ‹A
     512        popm    r4-r5                                           ; アキュムレータ復帰
     513        mvtaclo r5                                                      ; ACC最下位16bitは0で復帰
    520514        mvtachi r4
    521         popc    fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^•œ‹A
    522         popm    r14-r15                                         ; ƒŒƒWƒXƒ^•œ‹A
     515        popc    fpsw                                            ; FPUステータスレジスタ復帰
     516        popm    r14-r15                                         ; レジスタ復帰
    523517        popm    r1-r5
    524         rte                                                                     ; Š„ž‚Ý‘O‚̏ˆ—‚É–ß‚é
    525 
    526 
    527 ;
    528 Š„ž‚݂̏o“üŒûˆ—(ƒAƒZƒ“ƒuƒŠŒ¾Œê‹Lq•”•ª)
    529 ;
    530 ŒÄo‚µðŒ:
    531 EŠ„ž‚Ý”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è, PSWƒŒƒWƒXƒ^‚ÌIƒrƒbƒg=0, IPL‚ÍŽó•t‚¯
    532 ;    ‚½Š„ž‚Ý‚ÌIPL.
    533 EƒXƒ^ƒbƒN‚Í‘½dŠ„‚荞‚݂Ȃ犄ž‚݃Xƒ^ƒbƒN, ‚»‚¤‚Å‚È‚¯‚ê‚Î
    534 ;    ƒ^ƒXƒNƒXƒ^ƒbƒN
    535 EŠ„ž‚Ý”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è,ƒXƒ^ƒbƒN‚ÉŠ„ž‚Ý‚©‚ç‚Ì•œ‹APC‚ÆPSW‚ª
    536 ;    •Û‘¶‚³‚ê‚Ä‚¢‚é.
    537 EƒxƒNƒ^ƒe[ƒuƒ‹‚É“o˜^‚³‚ꂽŒÂ•Ê‚Ì“ü‚èŒûˆ—‚É‚æ‚è, ƒXƒ^ƒbƒN‚É
    538 ;    ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^(R1-R5)‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é.
    539 ;
    540 ˆø”:
    541 Er1:Š„ž‚Ý—vˆö”ԍ†
    542 Er2:Š„ž‚݃nƒ“ƒhƒ‰‚̃AƒhƒŒƒX
    543 ;
    544 ƒŒƒWƒXƒ^‚ªƒXƒ^ƒbƒNã‚ɂǂ̂悤‚É•Û‘¶‚³‚ê‚Ä‚¢‚é‚©‚ðˆÈ‰º‚ÉŽ¦‚·.
    545 ‚±‚̐}‚ł͏オ’áˆÊ, ‰º‚ª‚ˆÊ‚̃AƒhƒŒƒX‚Å, ƒXƒ^ƒbƒN‚͉º‚©‚ç
    546 ã•ûŒü‚ÉŒü‚©‚Á‚Đςݏグ‚ç‚ê‚é‚à‚Ì‚Æ‚·‚é.
     518        rte                                                                     ; 割込み前の処理に戻る
     519
     520
     521;
     522割込みの出入口処理(アセンブリ言語記述部分)
     523;
     524呼出し条件:
     525・割込み発生時のH/W処理により, PSWレジスタのIビット=0, IPLは受付け
     526;    た割込みのIPL.
     527・スタックは多重割り込みなら割込みスタック, そうでなければ
     528;    タスクスタック
     529・割込み発生時のH/W処理により,スタックに割込みからの復帰PCとPSWが
     530;    保存されている.
     531・ベクタテーブルに登録された個別の入り口処理により, スタックに
     532;    スクラッチレジスタ(R1-R5)が保存されている.
     533;
     534引数:
     535・r1:割込み要因番号
     536・r2:割込みハンドラのアドレス
     537;
     538レジスタがスタック上にどのように保存されているかを以下に示す.
     539この図では上が低位, 下が高位のアドレスで, スタックは下から
     540上方向に向かって積み上げられるものとする.
    547541;
    548542;       -------------------------
     
    572566;       -------------------------(SP + 44)
    573567;
    574 ‚±‚±‚Å‚Í, Š„ž‚ݏˆ—ƒ‚[ƒh‚ɕύX‚µ‚ănƒ“ƒhƒ‰‚ðŽÀs‚·‚é.
    575 ;
    576 ƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚µ‚½Œã‚Í, ‘½dŠ„ž‚Ý‚Å‚È‚­, ‚©‚ reqflg ‚ª
    577 ;  TRUE ‚É‚È‚Á‚½Žž‚ɁCret_int ‚Ö•ªŠò(’x‰„ƒfƒBƒXƒpƒbƒ`)‚·‚éD
    578 ;
    579 ‘½dŠ„ž‚Ý‚©‚Ç‚¤‚©‚ÍŠ„ž‚݃lƒXƒgƒJƒEƒ“ƒ^‚Ì’l‚Å”»’è‚·‚é.
    580 ;  intnest != 0 ‚È‚ç‚Α½dŠ„ž‚Ý‚Å‚ ‚é‚Æ”»’è‚·‚é.
    581 ;
    582 ;  reqflg ‚ÍCPUƒƒbƒNó‘ԂŃ`ƒFƒbƒN‚·‚é. ‚»‚¤‚Å‚È‚¢‚ƁC
    583 ;  reqflg ƒ`ƒFƒbƒNŒã‚É‹N“®‚³‚ꂽŠ„ž‚݃nƒ“ƒhƒ‰“à‚Å
    584 ƒfƒBƒXƒpƒbƒ`‚ª—v‹‚³‚ꂽê‡‚ɁCƒfƒBƒXƒpƒbƒ`‚³‚ê‚È‚¢.
     568ここでは, 割込み処理モードに変更してハンドラを実行する.
     569;
     570ハンドラからリターンした後は, 多重割込みでなく, かつ reqflg が
     571;  TRUE になった時に,ret_int へ分岐(遅延ディスパッチ)する.
     572;
     573多重割込みかどうかは割込みネストカウンタの値で判定する.
     574;  intnest != 0 ならば多重割込みであると判定する.
     575;
     576;  reqflg はCPUロック状態でチェックする. そうでないと,
     577;  reqflg チェック後に起動された割込みハンドラ内で
     578ディスパッチが要求された場合に,ディスパッチされない.
    585579;
    586580_kernel_interrupt:
    587         pushm   r14-r15                                         ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ð‘Þ”ð
    588         pushc   fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^‘Þ”ð
     581        pushm   r14-r15                                         ; スクラッチレジスタを退避
     582        pushc   fpsw                                            ; FPUステータスレジスタ退避
    589583        mvfacmi r5
    590         shll    #16, r5                                         ; ACCÅ‰ºˆÊ16bit‚Í0‚Æ‚·‚é
     584        shll    #16, r5                                         ; ACC最下位16bitは0とする
    591585        mvfachi r4
    592         pushm   r4-r5                                           ; ƒAƒLƒ
    593 ƒ€ƒŒ[ƒ^‘Þ”ð
     586        pushm   r4-r5                                           ; アキュムレータ退避
    594587        mov.l   #__kernel_intnest, r5
    595588        mov.w   [r5], r4
    596         add             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒCƒ“ƒNƒŠƒƒ“ƒg
     589        add             #1, r4                                          ; ネスト回数をインクリメント
    597590        mov.w   r4, [r5]
    598         cmp             #1, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    599         bnz             interrupt_from_int                      ; ‰ÁŽZ‘O‚ª0‚Å‚È‚¯‚ê‚Α½dŠ„ž‚Ý
    600                                                 ; ‰’i‚ÌŠ„ž‚Ý
    601         mov.l   r0, r3                                          ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðŽæ‚èo‚µ
    602         mov.l   #__kernel_istkpt, r5            ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦‚é
     591        cmp             #1, r4                                          ; 多重割り込みかどうか
     592        bnz             interrupt_from_int                      ; 加算前が0でなければ多重割込み
     593                                                ; 初段の割込み
     594        mov.l   r0, r3                                          ; スタックポインタを取り出し
     595        mov.l   #__kernel_istkpt, r5            ; 割込み用のスタックへ切替える
    603596        mov.l   [r5], r0
    604         push.l  r3                                                      ; ƒ^ƒXƒNƒXƒ^ƒbƒN‚ð•ÛŽ
    605 interrupt_from_int:             ; ‘½dŠ„ž‚Ý
    606         setpsw  i                                                       ; Š„ž‚Ý‹–‰Â(CPUƒƒbƒN‰ðœó‘Ô)
     597        push.l  r3                                                      ; タスクスタックを保持
     598interrupt_from_int:             ; 多重割込み
     599        setpsw  i                                                       ; 割込み許可(CPUロック解除状態)
    607600
    608601.if     LOG_INH_LEAVE == 1
    609         push.l  r1                                                      ; ƒƒOƒgƒŒ[ƒX‚̈ø”‚ð•ÛŽ
     602        push.l  r1                                                      ; ログトレースの引数を保持
    610603.endif
    611604
    612605.if     LOG_INH_ENTER == 1
    613606        push.l  r2
    614         bsr             _kernel_log_inh_enter           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    615                                                         ; ˆø”‚ÌŠ„ž‚Ý—vˆö”ԍ†‚ÍŠù‚Ér1‚É“ü‚Á‚Ä‚¢‚é
     607        bsr             _kernel_log_inh_enter           ; ログトレース関数の呼出し
     608                                                        ; 引数の割込み要因番号は既にr1に入っている
    616609        pop             r2
    617610.endif
    618611
    619         jsr     r2                                                      ; Cƒ‹[ƒ`ƒ“ŒÄ‚яo‚µ
     612        jsr     r2                                                      ; Cルーチン呼び出し
    620613
    621614.if     LOG_INH_LEAVE == 1
    622         pop             r1                                                      ; ˆø”‚ÉŠ„ž‚Ý—vˆö”ԍ†‚ðÝ’è
    623         bsr             _kernel_log_inh_leave           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    624 .endif
    625 
    626         clrpsw  i                                                       ; Š„ž‚Ý‹ÖŽ~(CPUƒƒbƒNó‘Ô)
     615        pop             r1                                                      ; 引数に割込み要因番号を設定
     616        bsr             _kernel_log_inh_leave           ; ログトレース関数の呼出し
     617.endif
     618
     619        clrpsw  i                                                       ; 割込み禁止(CPUロック状態)
    627620        mov.l   #__kernel_intnest, r5
    628621        mov.w   [r5], r4
    629         sub             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒfƒNƒŠƒƒ“ƒg
     622        sub             #1, r4                                          ; ネスト回数をデクリメント
    630623        mov.w   r4, [r5]
    631         cmp             #0, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    632         bnz             interrupt_return                        ; ‘½dŠ„‚荞‚݂Ȃ烊ƒ^[ƒ“
    633         ; ‰’i‚ÌŠ„ž‚Ý
    634         pop             r0                                                      ; ƒ^ƒXƒN‚̃Xƒ^ƒbƒN‚É–ß‚·
    635         mov.l   #__kernel_reqflg, r5            ; ƒfƒBƒXƒpƒbƒ`—v‹‚ª‚È‚¢‚©?
     624        cmp             #0, r4                                          ; 多重割り込みかどうか
     625        bnz             interrupt_return                        ; 多重割り込みならリターン
     626        ; 初段の割込み
     627        pop             r0                                                      ; タスクのスタックに戻す
     628        mov.l   #__kernel_reqflg, r5            ; ディスパッチ要求がないか?
    636629        mov.l   [r5], r5
    637630        cmp             #1, r5
    638         bz              ret_int                                         ; ‚ ‚ê‚Î ret_int ‚ÖƒWƒƒƒ“ƒv
     631        bz              ret_int                                         ; あれば ret_int へジャンプ
    639632interrupt_return:
    640         popm    r4-r5                                           ; ƒAƒLƒ
    641 ƒ€ƒŒ[ƒ^•œ‹A
    642         mvtaclo r5                                                      ; ACCÅ‰ºˆÊ16bit‚Í0‚Å•œ‹A
     633        popm    r4-r5                                           ; アキュムレータ復帰
     634        mvtaclo r5                                                      ; ACC最下位16bitは0で復帰
    643635        mvtachi r4
    644         popc    fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^•œ‹A
    645         popm    r14-r15                                         ; ƒŒƒWƒXƒ^•œ‹A
     636        popc    fpsw                                            ; FPUステータスレジスタ復帰
     637        popm    r14-r15                                         ; レジスタ復帰
    646638        popm    r1-r5
    647         rte                                                                     ; Š„ž‚Ý‘O‚̏ˆ—‚É–ß‚é
    648 
    649 
    650 ;
    651 ;  CPU—áŠO‚̏o“üŒûˆ—(ƒAƒZƒ“ƒuƒŠŒ¾Œê‹Lq•”•ª)
    652 ;
    653 ŒÄo‚µðŒ:
    654 ECPU—áŠO”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è, PSWƒŒƒWƒXƒ^‚ÌIƒrƒbƒg=0, IPL=0.
    655 EƒXƒ^ƒbƒN‚Í‘½dŠ„‚荞‚݂Ȃ犄ž‚݃Xƒ^ƒbƒN, ‚»‚¤‚Å‚È‚¯‚ê‚Î
    656 ;    ƒ^ƒXƒNƒXƒ^ƒbƒN
    657 ECPU—áŠO”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è,ƒXƒ^ƒbƒN‚ÉCPU—áŠO‚©‚ç‚Ì•œ‹APC‚Æ
    658 ;    PSW‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é.
    659 EƒxƒNƒ^ƒe[ƒuƒ‹‚É“o˜^‚³‚ꂽŒÂ•Ê‚Ì“ü‚èŒûˆ—‚É‚æ‚è, ƒXƒ^ƒbƒN‚É
    660 ;    ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^(R1-R5)‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é.
    661 ;
    662 ˆø”:
    663 Er1:CPU—áŠO—vˆö”ԍ†
    664 Er2:CPU—áŠOƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX
    665 ;
    666 ƒŒƒWƒXƒ^‚ªƒXƒ^ƒbƒNã‚ɂǂ̂悤‚É•Û‘¶‚³‚ê‚Ä‚¢‚é‚©‚ðˆÈ‰º‚ÉŽ¦‚·.
    667 ‚±‚̐}‚ł͏オ’áˆÊ, ‰º‚ª‚ˆÊ‚̃AƒhƒŒƒX‚Å, ƒXƒ^ƒbƒN‚͉º‚©‚ç
    668 ã•ûŒü‚ÉŒü‚©‚Á‚Đςݏグ‚ç‚ê‚é‚à‚Ì‚Æ‚·‚é.
    669 ‚È‚¨, CPU—áŠO—vˆö”ԍ†‚ÆR6-R13‚ÍCPU—áŠOƒnƒ“ƒhƒ‰“à‚ŏî•ñ‚ðŽæ“¾
    670 ‚·‚é–Ú“I‚Å‘Þ”ð‚µ‚Ä‚¨‚è, oŒûˆ—‚Å‚Í•Û‘¶“à—e‚ð”jŠü‚·‚ê‚΂悢.
     639        rte                                                                     ; 割込み前の処理に戻る
     640
     641
     642;
     643;  CPU例外の出入口処理(アセンブリ言語記述部分)
     644;
     645呼出し条件:
     646・CPU例外発生時のH/W処理により, PSWレジスタのIビット=0, IPL=0.
     647・スタックは多重割り込みなら割込みスタック, そうでなければ
     648;    タスクスタック
     649・CPU例外発生時のH/W処理により,スタックにCPU例外からの復帰PCと
     650;    PSWが保存されている.
     651・ベクタテーブルに登録された個別の入り口処理により, スタックに
     652;    スクラッチレジスタ(R1-R5)が保存されている.
     653;
     654引数:
     655・r1:CPU例外要因番号
     656・r2:CPU例外ハンドラのアドレス
     657;
     658レジスタがスタック上にどのように保存されているかを以下に示す.
     659この図では上が低位, 下が高位のアドレスで, スタックは下から
     660上方向に向かって積み上げられるものとする.
     661なお, CPU例外要因番号とR6-R13はCPU例外ハンドラ内で情報を取得
     662する目的で退避しており, 出口処理では保存内容を破棄すればよい.
    671663;
    672664;       -------------------------
    673 ;       |    CPU—áŠO—vˆö”ԍ†    | <----- p_excinf
     665;       |    CPU例外要因番号    | <----- p_excinf
    674666;       ------------------------- (intptr_t)(p_excinf + 0)
    675667;       |       R6(4byte)       |
     
    714706;       ------------------------- (intptr_t)(p_excinf + 80)
    715707;
    716 ‚±‚±‚Å‚Í, Š„ž‚ݏˆ—ƒ‚[ƒh‚ɕύX‚µ‚ănƒ“ƒhƒ‰‚ðŽÀs‚·‚é.
    717 ;  CPU—áŠOƒnƒ“ƒhƒ‰‚É“n‚·VPŒ^‚̕ϐ” p_excinf ‚Æ‚µ‚ÄISP‚Ì’l“n‚·D
    718 ;
    719 ƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚µ‚½Œã‚Í, ‘½dŠ„ž‚Ý‚Å‚È‚­, ‚©‚ reqflg ‚ª
    720 ;  TRUE ‚É‚È‚Á‚½Žž‚ɁCret_int ‚Ö•ªŠò(’x‰„ƒfƒBƒXƒpƒbƒ`)‚·‚éD
    721 ;
    722 ‘½dŠ„ž‚Ý‚©‚Ç‚¤‚©‚ÍŠ„ž‚݃lƒXƒgƒJƒEƒ“ƒ^‚Ì’l‚Å”»’è‚·‚é.
    723 ;  intnest != 0 ‚È‚ç‚Α½dŠ„ž‚Ý‚Å‚ ‚é‚Æ”»’è‚·‚é.
    724 ;
    725 ;  reqflg ‚ÍCPUƒƒbƒNó‘ԂŃ`ƒFƒbƒN‚·‚é. ‚»‚¤‚Å‚È‚¢‚ƁC
    726 ;  reqflg ƒ`ƒFƒbƒNŒã‚É‹N“®‚³‚ꂽŠ„ž‚݃nƒ“ƒhƒ‰“à‚Å
    727 ƒfƒBƒXƒpƒbƒ`‚ª—v‹‚³‚ꂽê‡‚ɁCƒfƒBƒXƒpƒbƒ`‚³‚ê‚È‚¢.
    728 ;
    729 ;
    730 ;  CPU—áŠO“üŒûˆ—
    731 ;
    732 ‚±‚±‚Å‚Í, Š„ž‚ݏˆ—ƒ‚[ƒh‚ɕύX‚µ‚ănƒ“ƒhƒ‰‚ðŽÀs‚·‚é.
    733 ;
    734 
    735 ;
    736 ;  CPU—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µŒã‚É•s—v‚Æ‚È‚éƒXƒ^ƒbƒNî•ñ‚̃TƒCƒY
     708ここでは, 割込み処理モードに変更してハンドラを実行する.
     709;  CPU例外ハンドラに渡すVP型の変数 p_excinf としてISPの値渡す.
     710;
     711ハンドラからリターンした後は, 多重割込みでなく, かつ reqflg が
     712;  TRUE になった時に,ret_int へ分岐(遅延ディスパッチ)する.
     713;
     714多重割込みかどうかは割込みネストカウンタの値で判定する.
     715;  intnest != 0 ならば多重割込みであると判定する.
     716;
     717;  reqflg はCPUロック状態でチェックする. そうでないと,
     718;  reqflg チェック後に起動された割込みハンドラ内で
     719ディスパッチが要求された場合に,ディスパッチされない.
     720;
     721;
     722;  CPU例外入口処理
     723;
     724ここでは, 割込み処理モードに変更してハンドラを実行する.
     725;
     726
     727;
     728;  CPU例外ハンドラ呼出し後に不要となるスタック情報のサイズ
    737729;  EXCNO + R6--R13
    738730;
     
    740732
    741733_kernel_exception:
    742         pushm   r14-r15                                         ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ð‘Þ”ð
     734        pushm   r14-r15                                         ; スクラッチレジスタを退避
    743735        pushc   fpsw
    744736        mvfacmi r5
    745         shll    #16, r5                                         ; ACCÅ‰ºˆÊ16bit‚Í0‚Æ‚·‚é
     737        shll    #16, r5                                         ; ACC最下位16bitは0とする
    746738        mvfachi r4
    747         pushm   r4-r5                                           ; ƒAƒLƒ
    748 ƒ€ƒŒ[ƒ^‘Þ”ð
    749         pushm   r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•Û‘¶
    750         push.l  r1                                                      ; CPU—áŠO—vˆö”ԍ†‚ð•ÛŽ
    751         mov.l   r0, r3                                          ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðŽæ‚èo‚µ
     739        pushm   r4-r5                                           ; アキュムレータ退避
     740        pushm   r6-r13                                          ; 非スクラッチレジスタ保存
     741        push.l  r1                                                      ; CPU例外要因番号を保持
     742        mov.l   r0, r3                                          ; スタックポインタを取り出し
    752743        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    753744        and             #PSW_I_MASK, r5
    754         bz              exception_nonkernel                     ; ‘SŠ„ž‚Ý‹ÖŽ~(CPUƒƒbƒN)ó‘Ô‚È‚çŠÇ—ŠO
     745        bz              exception_nonkernel                     ; 全割込み禁止(CPUロック)状態なら管理外
    755746.if     TIPM_LOCK != -15
    756747        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    757748        and             #PSW_IPL_MASK, r5
    758749        cmp             #IPL_LOCK, r5
    759         bgt     exception_nonkernel                     ; IPL‚ªCPUƒƒbƒNƒŒƒxƒ‹ˆÈã‚È‚çŠÇ—ŠO
     750        bgt     exception_nonkernel                     ; IPLがCPUロックレベル以上なら管理外
    760751.endif
    761752        mov.l   #__kernel_intnest, r5
    762753        mov.w   [r5], r4
    763         add             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒCƒ“ƒNƒŠƒƒ“ƒg
     754        add             #1, r4                                          ; ネスト回数をインクリメント
    764755        mov.w   r4, [r5]
    765         cmp             #1, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    766         bnz             exception_from_int                      ; ‰ÁŽZ‘O‚ª0‚Å‚È‚¯‚ê‚Α½dŠ„ž‚Ý
    767                                                 ; ‰’i‚ÌŠ„ž‚Ý
    768         mov.l   #__kernel_istkpt, r5            ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦‚é
     756        cmp             #1, r4                                          ; 多重割り込みかどうか
     757        bnz             exception_from_int                      ; 加算前が0でなければ多重割込み
     758                                                ; 初段の割込み
     759        mov.l   #__kernel_istkpt, r5            ; 割込み用のスタックへ切替える
    769760        mov.l   [r5], r0
    770         push.l  r3                                                      ; ƒ^ƒXƒNƒXƒ^ƒbƒN‚ð•ÛŽ
    771 exception_from_int:             ; ‘½dŠ„ž‚Ý
     761        push.l  r3                                                      ; タスクスタックを保持
     762exception_from_int:             ; 多重割込み
    772763        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    773         mvtc    r5, psw                                         ; CPU—áŠO”­¶‘O‚̏ó‘Ô‚É–ß‚·
     764        mvtc    r5, psw                                         ; CPU例外発生前の状態に戻す
    774765.if     LOG_EXC_LEAVE == 1
    775         push.l  r1                                                      ; ƒƒOƒgƒŒ[ƒX‚̈ø”‚ð•ÛŽ
     766        push.l  r1                                                      ; ログトレースの引数を保持
    776767.endif
    777768
    778769.if     LOG_EXC_ENTER == 1
    779770        pushm   r2-r3
    780         bsr             _kernel_log_exc_enter           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    781                                                         ; ˆø”‚ÌŠ„ž‚Ý—vˆö”ԍ†‚ÍŠù‚Ér1‚É“ü‚Á‚Ä‚¢‚é
     771        bsr             _kernel_log_exc_enter           ; ログトレース関数の呼出し
     772                                                        ; 引数の割込み要因番号は既にr1に入っている
    782773        popm    r2-r3
    783774.endif
    784775
    785         mov.l   r3, r1                                          ; ˆø”‚Ìp_excinf‚ðÝ’è
    786         jsr     r2                                                      ; Cƒ‹[ƒ`ƒ“ŒÄ‚яo‚µ
     776        mov.l   r3, r1                                          ; 引数のp_excinfを設定
     777        jsr     r2                                                      ; Cルーチン呼び出し
    787778
    788779.if     LOG_EXC_LEAVE == 1
    789         pop             r1                                                      ; ˆø”‚ÉŠ„ž‚Ý—vˆö”ԍ†‚ðÝ’è
    790         bsr             _kernel_log_exc_leave           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    791 .endif
    792 
    793         clrpsw  i                                                       ; ‚±‚±‚©‚ç‚Í•K‚¸Š„ž‚Ý‹ÖŽ~
     780        pop             r1                                                      ; 引数に割込み要因番号を設定
     781        bsr             _kernel_log_exc_leave           ; ログトレース関数の呼出し
     782.endif
     783
     784        clrpsw  i                                                       ; ここからは必ず割込み禁止
    794785        mov.l   #__kernel_intnest, r5
    795786        mov.w   [r5], r4
    796         sub             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒfƒNƒŠƒƒ“ƒg
     787        sub             #1, r4                                          ; ネスト回数をデクリメント
    797788        mov.w   r4, [r5]
    798         cmp             #0, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    799         bnz             exception_return                        ; ‘½dŠ„‚荞‚݂Ȃ烊ƒ^[ƒ“
    800         ; ‰’i‚ÌŠ„ž‚Ý
    801         pop             r0                                                      ; ƒ^ƒXƒN‚̃Xƒ^ƒbƒN‚É–ß‚·
    802         mov.l   #__kernel_reqflg, r5            ; ƒfƒBƒXƒpƒbƒ`—v‹‚ª‚È‚¢‚©?
     789        cmp             #0, r4                                          ; 多重割り込みかどうか
     790        bnz             exception_return                        ; 多重割り込みならリターン
     791        ; 初段の割込み
     792        pop             r0                                                      ; タスクのスタックに戻す
     793        mov.l   #__kernel_reqflg, r5            ; ディスパッチ要求がないか?
    803794        mov.l   [r5], r5
    804795        cmp             #1, r5
    805         bnz             exception_return                        ; ‚È‚¯‚ê‚΃Šƒ^[ƒ“
    806         add             #EXCINF_REG_SIZE, r0            ; CPU—áŠOî•ñ‚Ì”jŠü
    807         bra             ret_int                                         ; ‚ ‚ê‚Î ret_int ‚ÖƒWƒƒƒ“ƒv
     796        bnz             exception_return                        ; なければリターン
     797        add             #EXCINF_REG_SIZE, r0            ; CPU例外情報の破棄
     798        bra             ret_int                                         ; あれば ret_int へジャンプ
    808799
    809800exception_nonkernel:
    810801        mov.l   #__kernel_intnest, r5
    811802        mov.w   [r5], r4
    812         add             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒCƒ“ƒNƒŠƒƒ“ƒg
     803        add             #1, r4                                          ; ネスト回数をインクリメント
    813804        mov.w   r4, [r5]
    814         cmp             #1, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    815         bnz             exception_from_nonkernelint     ; ‰ÁŽZ‘O‚ª0‚Å‚È‚¯‚ê‚Α½dŠ„ž‚Ý
    816                                                 ; ‰’i‚ÌŠ„ž‚Ý
    817         mov.l   #__kernel_istkpt, r5            ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦‚é
     805        cmp             #1, r4                                          ; 多重割り込みかどうか
     806        bnz             exception_from_nonkernelint     ; 加算前が0でなければ多重割込み
     807                                                ; 初段の割込み
     808        mov.l   #__kernel_istkpt, r5            ; 割込み用のスタックへ切替える
    818809        mov.l   [r5], r0
    819         push.l  r3                                                      ; ƒ^ƒXƒNƒXƒ^ƒbƒN‚ð•ÛŽ
    820 exception_from_nonkernelint:    ; ‘½dŠ„ž‚Ý
     810        push.l  r3                                                      ; タスクスタックを保持
     811exception_from_nonkernelint:    ; 多重割込み
    821812        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    822         mvtc    r5, psw                                         ; CPU—áŠO”­¶‘O‚̏ó‘Ô‚É–ß‚·
    823 
    824         mov.l   r3, r1                                          ; ˆø”‚Ìp_excinf‚ðÝ’è
    825         jsr     r2                                                      ; Cƒ‹[ƒ`ƒ“ŒÄ‚яo‚µ
    826 
    827         clrpsw  i                                                       ; ‚±‚±‚©‚ç‚Í•K‚¸Š„ž‚Ý‹ÖŽ~
     813        mvtc    r5, psw                                         ; CPU例外発生前の状態に戻す
     814
     815        mov.l   r3, r1                                          ; 引数のp_excinfを設定
     816        jsr     r2                                                      ; Cルーチン呼び出し
     817
     818        clrpsw  i                                                       ; ここからは必ず割込み禁止
    828819        mov.l   #__kernel_intnest, r5
    829820        mov.w   [r5], r4
    830         sub             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒfƒNƒŠƒƒ“ƒg
     821        sub             #1, r4                                          ; ネスト回数をデクリメント
    831822        mov.w   r4, [r5]
    832         cmp             #0, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    833         bnz             exception_return                        ; ‘½dŠ„‚荞‚݂Ȃ烊ƒ^[ƒ“
    834         ; ‰’i‚ÌŠ„ž‚Ý
    835         pop             r0                                                      ; ƒ^ƒXƒN‚̃Xƒ^ƒbƒN‚É–ß‚·
     823        cmp             #0, r4                                          ; 多重割り込みかどうか
     824        bnz             exception_return                        ; 多重割り込みならリターン
     825        ; 初段の割込み
     826        pop             r0                                                      ; タスクのスタックに戻す
    836827
    837828exception_return:
    838         add             #EXCINF_REG_SIZE, r0            ; CPU—áŠOî•ñ‚Ì”jŠü
    839         popm    r4-r5                                           ; ƒAƒLƒ
    840 ƒ€ƒŒ[ƒ^•œ‹A
    841         mvtaclo r5                                                      ; ACCÅ‰ºˆÊ16bit‚Í0‚Å•œ‹A
     829        add             #EXCINF_REG_SIZE, r0            ; CPU例外情報の破棄
     830        popm    r4-r5                                           ; アキュムレータ復帰
     831        mvtaclo r5                                                      ; ACC最下位16bitは0で復帰
    842832        mvtachi r4
    843         popc    fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^•œ‹A
    844         popm    r14-r15                                         ; ƒŒƒWƒXƒ^•œ‹A
     833        popc    fpsw                                            ; FPUステータスレジスタ復帰
     834        popm    r14-r15                                         ; レジスタ復帰
    845835        popm    r1-r5
    846         rte                                                                     ; Š„ž‚Ý‘O‚̏ˆ—‚É–ß‚é
    847 
    848 
    849 ;
    850 ”÷­ŽžŠÔ‘Ò‚¿
     836        rte                                                                     ; 割込み前の処理に戻る
     837
     838
     839;
     840微少時間待ち
    851841;
    852842_sil_dly_nse:
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_syssvc.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃^[ƒQƒbƒgˆË‘¶’è‹`iRX630—pj
     42 *              テストプログラムのターゲット依存定義(RX630用)
    4743 */
    4844
     
    5147
    5248/*
    53  *  ‹N“®ƒƒbƒZ[ƒW‚Ƀ^[ƒQƒbƒgˆË‘¶•”‚Ì’˜ìŒ •\Ž¦‚ð
    54  *  ’ljÁ‚·‚邽‚߂̃}ƒNƒD
     49 *  起動メッセージにターゲット依存部の著作権表示を
     50 *  追加するためのマクロ.
    5551 */
    5652#define PRC_COPYRIGHT                                                                           \
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_test.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    66 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃^[ƒQƒbƒgˆË‘¶’è‹`iRX630—pj
     41 *              テストプログラムのターゲット依存定義(RX630用)
    4642 */
    4743
     
    4945#define TOPPERS_PRC_TEST_H
    5046
    51 #define CPUEXC1                                 25              /* •‚“®¬”“_—áŠO */
     47#define CPUEXC1                                 25              /* 浮動小数点例外 */
    5248#define RAISE_CPU_EXCEPTION             trigger_cpu_exception()
    5349
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_test.src

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
    r164 r167  
    66;*  Copyright (C) 2010 by Witz Corporation, JAPAN
    77;*
    8 ;*  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9 ;*  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10 ;*  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11 ;*  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12 ;*      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13 ;*      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 ;*  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15 ;*      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17 ;*      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19 ;*      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20 ;*  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21 ;*      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22 ;*      ‚ƁD
    23 ;*    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26 ;*        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27 ;*    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28 ;*        •ñ‚·‚邱‚ƁD
    29 ;*  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30 ;*      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31 ;*      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32 ;*      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33 ;*      –Ɛӂ·‚邱‚ƁD
     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;*      免責すること.
    3430;*
    35 ;*  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36 ;*  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37 ;*  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38 ;*  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39 ;*  ‚̐ӔC‚𕉂í‚È‚¢D
     31;*  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32;*  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33;*  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34;*  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35;*  の責任を負わない.
    4036;*
    4137;*  @(#) $Id: prc_test.src 536 2014-10-09 23:11:40Z coas-nagasima $
     
    4844_trigger_cpu_exception:
    4945        ;
    50         ;  CPU—áŠO‚Ì”­¶
     46        ;  CPU例外の発生
    5147        ;
    52         ;  ƒ[ƒŠ„‚èŽZ‚ðs‚¤‚±‚Æ‚Å, •‚“®¬”“_—áŠO‚ð
    53         ;  ”­¶‚³‚¹‚é.
     48        ;  ゼロ割り算を行うことで, 浮動小数点例外を
     49        ;  発生させる.
    5450        ;
    5551        mvtc    #00001000H, fpsw
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_unrename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *  RX630‚Ɉˑ¶‚·‚é’è‹`
     42 *  RX630に依存する定義
    4743 */
    4844#ifndef TOPPERS_RX630_H
     
    5046
    5147/*
    52  *  CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Ì’è‹`(ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹)
     48 *  CPU例外ハンドラ番号の定義(固定ベクタテーブル)
    5349 *
    54  *  ”ԍ†‚͈̔͂Í0 - 31
    55  */
    56 #define INT_PRIVILEGED_INSTRUNCTION             20              /* “ÁŒ –½—ß—áŠO */
    57 #define INT_UNDEF_INSTRUNCTION                  23              /* –¢’è‹`–½—ß—áŠO */
    58 #define INT_FLOATINGPOINT_INSTRUCTION   25              /* •‚“®¬”“_—áŠO */
    59 #define INT_NMI                                                 30              /* ƒmƒ“ƒ}ƒXƒJƒuƒ‹Š„‚荞‚Ý */
    60 #define INT_RESET                                               31              /* ƒŠƒZƒbƒg */
    61 
    62 /*
    63  *  Š„ž‚ݔԍ†‚Ì’è‹`(‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹)
     50 *  番号の範囲は0 - 31
     51 */
     52#define INT_PRIVILEGED_INSTRUNCTION             20              /* 特権命令例外 */
     53#define INT_UNDEF_INSTRUNCTION                  23              /* 未定義命令例外 */
     54#define INT_FLOATINGPOINT_INSTRUCTION   25              /* 浮動小数点例外 */
     55#define INT_NMI                                                 30              /* ノンマスカブル割り込み */
     56#define INT_RESET                                               31              /* リセット */
     57
     58/*
     59 *  割込み番号の定義(可変ベクタテーブル)
    6460 */
    6561#define INT_BUSERR                      16
     
    250246
    251247/*
    252  *  Šeƒ‚ƒWƒ
    253 [ƒ‹‚̃ŒƒWƒXƒ^‹y‚ѐݒèƒrƒbƒgî•ñ
     248 *  各モジュールのレジスタ及び設定ビット情報
    254249 */
    255250
     
    257252
    258253/*
    259  * ƒ‚ƒWƒ
    260 [ƒ‹ƒXƒgƒbƒvƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^AiMSTPCRAj
     254 * モジュールストップコントロールレジスタA(MSTPCRA)
    261255 */
    262256#define SYSTEM_MSTPCRA_ADDR                     ( ( volatile uint32_t __evenaccess * )0x00080010 )
     
    296290
    297291/*
    298  * ƒ‚ƒWƒ
    299 [ƒ‹ƒXƒgƒbƒvƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^BiMSTPCRBj
     292 * モジュールストップコントロールレジスタB(MSTPCRB)
    300293 */
    301294#define SYSTEM_MSTPCRB_ADDR                     ( ( volatile uint32_t __evenaccess * )0x00080014 )
     
    334327
    335328/*
    336  * ƒ‚ƒWƒ
    337 [ƒ‹ƒXƒgƒbƒvƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^CiMSTPCRCj
     329 * モジュールストップコントロールレジスタC(MSTPCRC)
    338330 */
    339331#define SYSTEM_MSTPCRC_ADDR                     ( ( volatile uint32_t __evenaccess * )0x00080018 )
     
    372364
    373365/*
    374  * ƒNƒƒbƒN”­¶‰ñ˜H
     366 * クロック発生回路
    375367 */
    376368#define SYSTEM_SCKCR_ADDR                       ( ( volatile uint32_t __evenaccess * )0x00080020 )
     
    392384
    393385/*
    394  * ƒvƒƒeƒNƒgƒŒƒWƒXƒ^
     386 * プロテクトレジスタ
    395387 */
    396388#define SYSTEM_PRCR_ADDR                ( ( volatile uint16_t __evenaccess * )0x000803FE )
    397389
    398390/*
    399  * Š„‚荞‚Ý—v‹ƒŒƒWƒXƒ^
     391 * 割り込み要求レジスタ
    400392 */
    401393#define ICU_IR000_ADDR                  ( ( volatile uint8_t __evenaccess * )0x00087000 )
     
    658650
    659651/*
    660  * Š„‚荞‚Ý—v‹æÝ’背ƒWƒXƒ^
     652 * 割り込み要求先設定レジスタ
    661653 */
    662654#define ICU_ISELR000_ADDR               ( ( volatile uint8_t __evenaccess * )0x00087100 )
     
    919911
    920912/*
    921  * Š„‚荞‚Ý—v‹‹–‰ÂƒŒƒWƒXƒ^
     913 * 割り込み要求許可レジスタ
    922914 */
    923915#define ICU_IER02_ADDR                  ( ( volatile uint8_t __evenaccess * )0x00087202 )
     
    960952
    961953/*
    962  * Š„‚荞‚Ý—vˆöƒvƒ‰ƒCƒIƒŠƒeƒBƒŒƒWƒXƒ^i(i=0`253)‚̐ݒè
     954 * 割り込み要因プライオリティレジスタi(i=0〜253)の設定
    963955 */
    964956#define ICU_IPR000_ADDR                 ( ( volatile uint8_t __evenaccess * )0x00087300 )
     
    12221214
    12231215/*
    1224  *  IRQƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^
     1216 *  IRQコントロールレジスタ
    12251217 */
    12261218#define ICU_IRQ0_ADDR                   ( ( volatile uint8_t __evenaccess * )0x00087500 )
     
    12441236
    12451237/*
    1246  *  Šeƒ`ƒƒƒ“ƒlƒ‹‚̃ŒƒWƒXƒ^‹y‚ѐݒèƒrƒbƒgî•ñ
     1238 *  各チャンネルのレジスタ及び設定ビット情報
    12471239 */
    12481240#define CMT_CMSTR0_ADDR                 ( ( volatile uint16_t __evenaccess * )0x00088000 )
     
    13531345
    13541346/*
    1355  *  I/Oƒ|[ƒg‚̃ŒƒWƒXƒ^‹y‚ѐݒèƒrƒbƒgî•ñ
     1347 *  I/Oポートのレジスタ及び設定ビット情報
    13561348 */
    13571349#define PORT0_PDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008C000 )
     
    15231515
    15241516/*
    1525  *  ƒ}ƒ‹ƒ`ƒtƒ@ƒ“ƒNƒVƒ‡ƒ“ƒsƒ“ƒRƒ“ƒgƒ[ƒ‰‚̃ŒƒWƒXƒ^î•ñ
     1517 *  マルチファンクションピンコントローラのレジスタ情報
    15261518 */
    15271519#define MPC_PFUSB0_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008C114 )
     
    16621654
    16631655/*
    1664  * ƒŠƒAƒ‹ƒ^ƒCƒ€ƒNƒƒbƒN
     1656 * リアルタイムクロック
    16651657 */
    16661658#define RTC_R64CNT_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008C400 )
     
    16741666
    16751667/*
    1676  * 12 ƒrƒbƒgA/D ƒRƒ“ƒo[ƒ^
     1668 * 12 ビットA/D コンバータ
    16771669 */
    16781670#define S12AD_ADCSR_ADDR                ( ( volatile uint8_t __evenaccess * )0x00089000 )
     
    19031895
    19041896/*
    1905  *  UARTŠÖ˜A‚Ì’è‹`
     1897 *  UART関連の定義
    19061898 *
    1907  *  pdic‚Ìrx600/rx630_uart.c‚ÅŽg—p‚·‚éD
    1908  */
    1909 /*
    1910  *  ƒVƒŠƒAƒ‹I/O‚̌”
     1899 *  pdicのrx600/rx630_uart.cで使用する.
     1900 */
     1901/*
     1902 *  シリアルI/Oの個数
    19111903 */
    19121904#define TNUM_SIOP       ( 2 )
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $               ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
     2$               アーキテクチャ依存テンプレート(RX630用)
    33$
    44
     
    1111
    1212$
    13 Š„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Ì’è‹`
     13割込み番号と割込みハンドラ番号の定義
    1414$
    15 $  RX630‚Å‚ÍŠ„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ª1‘Î1‚őΉž‚·‚éD
     15$  RX630では割込み番号と割込みハンドラ番号が1対1で対応する.
    1616$
    1717
     
    2020
    2121$
    22 —áŠO”ԍ†‚Ì’è‹`
     22例外番号の定義
    2323$
    24 ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹‚̃xƒNƒ^ƒe[ƒuƒ‹ƒAƒhƒŒƒX‚̏¬‚³‚¢‡”Ô‚É—áŠO”ԍ†‚ðŠ„U‚éD
    25 $  (—\–ñ—̈æ‚àŠÜ‚Þ)
     24固定ベクタテーブルのベクタテーブルアドレスの小さい順番に例外番号を割振る.
     25$  (予約領域も含む)
    2626$
    2727
     
    2929
    3030$
    31 $  INTŠ„ž‚݂̔ԍ†
     31$  INT割込みの番号
    3232$
    3333
     
    3535
    3636$
    37 Š„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†C—áŠO”ԍ†‚͈̔Í
     37割込み番号,割込みハンドラ番号,例外番号の範囲
    3838$
    39 $ (—\–ñ—̈æ‚àŠÜ‚Þ)
     39$ (予約領域も含む)
    4040$
    4141
     
    4545
    4646$
    47 ƒvƒƒZƒbƒTˆË‘¶‚̃eƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     47プロセッサ依存のテンプレートファイルのインクルード
    4848$
    4949
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630_config.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013 by Mitsuhiro Matsuura
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    47 [ƒ‹iRX630—pj
     42 *              プロセッサ依存モジュール(RX630用)
    4843 */
    4944
     
    5247
    5348/*
    54  *  Š„ž‚Ý—vˆöƒvƒ‰ƒCƒIƒŠƒeƒBƒŒƒWƒXƒ^ƒAƒhƒŒƒXƒe[ƒuƒ‹
     49 *  割込み要因プライオリティレジスタアドレステーブル
    5550 */
    5651volatile uint8_t __evenaccess * const ipr_reg_addr[ INHNO_MAX ] = {
    57         NULL,                                                   /* No.0  —\–ñ */
    58         NULL,                                                   /* No.1  —\–ñ */
    59         NULL,                                                   /* No.2  —\–ñ */
    60         NULL,                                                   /* No.3  —\–ñ */
    61         NULL,                                                   /* No.4  —\–ñ */
    62         NULL,                                                   /* No.5  —\–ñ */
    63         NULL,                                                   /* No.6  —\–ñ */
    64         NULL,                                                   /* No.7  —\–ñ */
    65         NULL,                                                   /* No.8  —\–ñ */
    66         NULL,                                                   /* No.9  —\–ñ */
    67         NULL,                                                   /* No.10  —\–ñ */
    68         NULL,                                                   /* No.11  —\–ñ */
    69         NULL,                                                   /* No.12  —\–ñ */
    70         NULL,                                                   /* No.13  —\–ñ */
    71         NULL,                                                   /* No.14  —\–ñ */
    72         NULL,                                                   /* No.15  —\–ñ */
    73         ICU_IPR000_ADDR,                                /* No.16  ƒoƒXƒGƒ‰[ BUSERR */
    74         NULL,                                                   /* No.17  —\–ñ */
    75         NULL,                                                   /* No.18  —\–ñ */
    76         NULL,                                                   /* No.19  —\–ñ */
    77         NULL,                                                   /* No.20  —\–ñ */
     52        NULL,                                                   /* No.0  予約 */
     53        NULL,                                                   /* No.1  予約 */
     54        NULL,                                                   /* No.2  予約 */
     55        NULL,                                                   /* No.3  予約 */
     56        NULL,                                                   /* No.4  予約 */
     57        NULL,                                                   /* No.5  予約 */
     58        NULL,                                                   /* No.6  予約 */
     59        NULL,                                                   /* No.7  予約 */
     60        NULL,                                                   /* No.8  予約 */
     61        NULL,                                                   /* No.9  予約 */
     62        NULL,                                                   /* No.10  予約 */
     63        NULL,                                                   /* No.11  予約 */
     64        NULL,                                                   /* No.12  予約 */
     65        NULL,                                                   /* No.13  予約 */
     66        NULL,                                                   /* No.14  予約 */
     67        NULL,                                                   /* No.15  予約 */
     68        ICU_IPR000_ADDR,                                /* No.16  バスエラー BUSERR */
     69        NULL,                                                   /* No.17  予約 */
     70        NULL,                                                   /* No.18  予約 */
     71        NULL,                                                   /* No.19  予約 */
     72        NULL,                                                   /* No.20  予約 */
    7873        ICU_IPR001_ADDR,                                /* No.21  FCU FIFERR */
    79         NULL,                                                   /* No.22  —\–ñ */
     74        NULL,                                                   /* No.22  予約 */
    8075        ICU_IPR002_ADDR,                                /* No.23  FCU FRDYI */
    81         NULL,                                                   /* No.24  —\–ñ */
    82         NULL,                                                   /* No.25  —\–ñ */
    83         NULL,                                                   /* No.26  —\–ñ */
     76        NULL,                                                   /* No.24  予約 */
     77        NULL,                                                   /* No.25  予約 */
     78        NULL,                                                   /* No.26  予約 */
    8479        ICU_IPR003_ADDR,                                /* No.27  SWINT */
    85         ICU_IPR004_ADDR,                                /* No.28  CMTƒ†ƒjƒbƒg0 CMT0 */
    86         ICU_IPR005_ADDR,                                /* No.29  CMTƒ†ƒjƒbƒg0 CMT1 */
    87         ICU_IPR006_ADDR,                                /* No.30  CMTƒ†ƒjƒbƒg1 CMT2 */
    88         ICU_IPR007_ADDR,                                /* No.31  CMTƒ†ƒjƒbƒg1 CMT3 */
     80        ICU_IPR004_ADDR,                                /* No.28  CMTユニット0 CMT0 */
     81        ICU_IPR005_ADDR,                                /* No.29  CMTユニット0 CMT1 */
     82        ICU_IPR006_ADDR,                                /* No.30  CMTユニット1 CMT2 */
     83        ICU_IPR007_ADDR,                                /* No.31  CMTユニット1 CMT3 */
    8984        ICU_IPR032_ADDR,                                /* No.32  ETHER */
    9085        ICU_IPR033_ADDR,                                /* No.33  USB0 D0FIFO0 */
     
    115110        ICU_IPR056_ADDR,                                /* No.58  CAN RXM2 */
    116111        ICU_IPR056_ADDR,                                /* No.59  CAN TXM2 */
    117         NULL,                                                   /* No.60  —\–ñ */
    118         NULL,                                                   /* No.61  —\–ñ */
     112        NULL,                                                   /* No.60  予約 */
     113        NULL,                                                   /* No.61  予約 */
    119114        ICU_IPR062_ADDR,                                /* No.62  RTC PRD */
    120         NULL,                                                   /* No.63  —\–ñ */
    121         ICU_IPR064_ADDR,                                /* No.64  ŠO•”’[Žq IRQ0 */
    122         ICU_IPR065_ADDR,                                /* No.65  ŠO•”’[Žq IRQ1 */
    123         ICU_IPR066_ADDR,                                /* No.66  ŠO•”’[Žq IRQ2 */
    124         ICU_IPR067_ADDR,                                /* No.67  ŠO•”’[Žq IRQ3 */
    125         ICU_IPR068_ADDR,                                /* No.68  ŠO•”’[Žq IRQ4 */
    126         ICU_IPR069_ADDR,                                /* No.69  ŠO•”’[Žq IRQ5 */
    127         ICU_IPR070_ADDR,                                /* No.70  ŠO•”’[Žq IRQ6 */
    128         ICU_IPR071_ADDR,                                /* No.71  ŠO•”’[Žq IRQ7 */
    129         ICU_IPR072_ADDR,                                /* No.72  ŠO•”’[Žq IRQ8 */
    130         ICU_IPR073_ADDR,                                /* No.73  ŠO•”’[Žq IRQ9 */
    131         ICU_IPR074_ADDR,                                /* No.74  ŠO•”’[Žq IRQ10 */
    132         ICU_IPR075_ADDR,                                /* No.75  ŠO•”’[Žq IRQ11 */
    133         ICU_IPR076_ADDR,                                /* No.76  ŠO•”’[Žq IRQ12 */
    134         ICU_IPR077_ADDR,                                /* No.77  ŠO•”’[Žq IRQ13 */
    135         ICU_IPR078_ADDR,                                /* No.78  ŠO•”’[Žq IRQ14 */
    136         ICU_IPR079_ADDR,                                /* No.79  ŠO•”’[Žq IRQ15 */
    137         NULL,                                                   /* No.80  —\–ñ */
    138         NULL,                                                   /* No.81  —\–ñ */
    139         NULL,                                                   /* No.82  —\–ñ */
    140         NULL,                                                   /* No.83  —\–ñ */
    141         NULL,                                                   /* No.84  —\–ñ */
    142         NULL,                                                   /* No.85  —\–ñ */
    143         NULL,                                                   /* No.86  —\–ñ */
    144         NULL,                                                   /* No.87  —\–ñ */
    145         NULL,                                                   /* No.88  —\–ñ */
    146         NULL,                                                   /* No.89  —\–ñ */
     115        NULL,                                                   /* No.63  予約 */
     116        ICU_IPR064_ADDR,                                /* No.64  外部端子 IRQ0 */
     117        ICU_IPR065_ADDR,                                /* No.65  外部端子 IRQ1 */
     118        ICU_IPR066_ADDR,                                /* No.66  外部端子 IRQ2 */
     119        ICU_IPR067_ADDR,                                /* No.67  外部端子 IRQ3 */
     120        ICU_IPR068_ADDR,                                /* No.68  外部端子 IRQ4 */
     121        ICU_IPR069_ADDR,                                /* No.69  外部端子 IRQ5 */
     122        ICU_IPR070_ADDR,                                /* No.70  外部端子 IRQ6 */
     123        ICU_IPR071_ADDR,                                /* No.71  外部端子 IRQ7 */
     124        ICU_IPR072_ADDR,                                /* No.72  外部端子 IRQ8 */
     125        ICU_IPR073_ADDR,                                /* No.73  外部端子 IRQ9 */
     126        ICU_IPR074_ADDR,                                /* No.74  外部端子 IRQ10 */
     127        ICU_IPR075_ADDR,                                /* No.75  外部端子 IRQ11 */
     128        ICU_IPR076_ADDR,                                /* No.76  外部端子 IRQ12 */
     129        ICU_IPR077_ADDR,                                /* No.77  外部端子 IRQ13 */
     130        ICU_IPR078_ADDR,                                /* No.78  外部端子 IRQ14 */
     131        ICU_IPR079_ADDR,                                /* No.79  外部端子 IRQ15 */
     132        NULL,                                                   /* No.80  予約 */
     133        NULL,                                                   /* No.81  予約 */
     134        NULL,                                                   /* No.82  予約 */
     135        NULL,                                                   /* No.83  予約 */
     136        NULL,                                                   /* No.84  予約 */
     137        NULL,                                                   /* No.85  予約 */
     138        NULL,                                                   /* No.86  予約 */
     139        NULL,                                                   /* No.87  予約 */
     140        NULL,                                                   /* No.88  予約 */
     141        NULL,                                                   /* No.89  予約 */
    147142        ICU_IPR090_ADDR,                                /* No.90  USBR0 */
    148143        ICU_IPR091_ADDR,                                /* No.91  USBR1 */
    149144        ICU_IPR092_ADDR,                                /* No.92  RTC ALM */
    150145        ICU_IPR093_ADDR,                                /* No.93  RTC PRD */
    151         NULL,                                                   /* No.94  —\–ñ */
    152         NULL,                                                   /* No.95  —\–ñ */
    153         NULL,                                                   /* No.96  —\–ñ */
    154         NULL,                                                   /* No.97  —\–ñ */
     146        NULL,                                                   /* No.94  予約 */
     147        NULL,                                                   /* No.95  予約 */
     148        NULL,                                                   /* No.96  予約 */
     149        NULL,                                                   /* No.97  予約 */
    155150        ICU_IPR098_ADDR,                                /* No.98  AD ADI0 */
    156         NULL,                                                   /* No.99  —\–ñ */
    157         NULL,                                                   /* No.100  —\–ñ */
    158         NULL,                                                   /* No.101  —\–ñ */
     151        NULL,                                                   /* No.99  予約 */
     152        NULL,                                                   /* No.100  予約 */
     153        NULL,                                                   /* No.101  予約 */
    159154        ICU_IPR102_ADDR,                                /* No.102 S12AD S12ADIO */
    160         NULL,                                                   /* No.103  —\–ñ */
    161         NULL,                                                   /* No.104  —\–ñ */
    162         NULL,                                                   /* No.105  —\–ñ */
     155        NULL,                                                   /* No.103  予約 */
     156        NULL,                                                   /* No.104  予約 */
     157        NULL,                                                   /* No.105  予約 */
    163158        ICU_IPR106_ADDR,                                /* No.106 ICU GROUP0 */
    164159        ICU_IPR107_ADDR,                                /* No.107 ICU GROUP1 */
     
    168163        ICU_IPR111_ADDR,                                /* No.111 ICU GROUP5 */
    169164        ICU_IPR112_ADDR,                                /* No.112 ICU GROUP6 */
    170         NULL,                                                   /* No.113  —\–ñ */
     165        NULL,                                                   /* No.113  予約 */
    171166        ICU_IPR114_ADDR,                                /* No.114 ICU GROUP12 */
    172         NULL,                                                   /* No.115  —\–ñ */
    173         NULL,                                                   /* No.116  —\–ñ */
    174         NULL,                                                   /* No.117  —\–ñ */
    175         NULL,                                                   /* No.118  —\–ñ */
    176         NULL,                                                   /* No.119  —\–ñ */
    177         NULL,                                                   /* No.120  —\–ñ */
    178         NULL,                                                   /* No.121  —\–ñ */
     167        NULL,                                                   /* No.115  予約 */
     168        NULL,                                                   /* No.116  予約 */
     169        NULL,                                                   /* No.117  予約 */
     170        NULL,                                                   /* No.118  予約 */
     171        NULL,                                                   /* No.119  予約 */
     172        NULL,                                                   /* No.120  予約 */
     173        NULL,                                                   /* No.121  予約 */
    179174        ICU_IPR122_ADDR,                                /* No.122 SCI12 SCIX0 */
    180175        ICU_IPR123_ADDR,                                /* No.123 SCI12 SCIX1 */
     
    223218        ICU_IPR167_ADDR,                                /* No.166 POE OEI1 */
    224219        ICU_IPR167_ADDR,                                /* No.167 POE OEI2 */
    225         NULL,                                                   /* No.168  —\–ñ */
    226         NULL,                                                   /* No.169  —\–ñ */
     220        NULL,                                                   /* No.168  予約 */
     221        NULL,                                                   /* No.169  予約 */
    227222        ICU_IPR170_ADDR,                                /* No.170 TMR0 CMIA0 */
    228223        ICU_IPR170_ADDR,                                /* No.171 TMR0 CMIB0 */
     
    259254        ICU_IPR202_ADDR,                                /* No.202 EXDMAC EXDMACI0 */
    260255        ICU_IPR203_ADDR,                                /* No.203 EXDMAC EXDMACI1 */
    261         NULL,                                                   /* No.204  —\–ñ */
    262         NULL,                                                   /* No.205  —\–ñ */
    263         NULL,                                                   /* No.206  —\–ñ */
    264         NULL,                                                   /* No.207  —\–ñ */
    265         NULL,                                                   /* No.208  —\–ñ */
    266         NULL,                                                   /* No.209  —\–ñ */
    267         NULL,                                                   /* No.210  —\–ñ */
    268         NULL,                                                   /* No.211  —\–ñ */
    269         NULL,                                                   /* No.212  —\–ñ */
    270         NULL,                                                   /* No.213  —\–ñ */
     256        NULL,                                                   /* No.204  予約 */
     257        NULL,                                                   /* No.205  予約 */
     258        NULL,                                                   /* No.206  予約 */
     259        NULL,                                                   /* No.207  予約 */
     260        NULL,                                                   /* No.208  予約 */
     261        NULL,                                                   /* No.209  予約 */
     262        NULL,                                                   /* No.210  予約 */
     263        NULL,                                                   /* No.211  予約 */
     264        NULL,                                                   /* No.212  予約 */
     265        NULL,                                                   /* No.213  予約 */
    271266        ICU_IPR214_ADDR,                                /* No.214 SCI0 RXI0 */
    272267        ICU_IPR214_ADDR,                                /* No.215 SCI0 TXI0 */
     
    309304        ICU_IPR250_ADDR,                                /* No.252 SCI12 TEI12 */
    310305        ICU_IPR253_ADDR,                                /* No.253 IEB IEBINT */
    311         NULL,                                                   /* No.254  —\–ñ */
    312         NULL,                                                   /* No.255  —\–ñ */
     306        NULL,                                                   /* No.254  予約 */
     307        NULL,                                                   /* No.255  予約 */
    313308};
    314309
    315310
    316311/*
    317  *  Š„ž‚Ý—v‹‹–‰ÂƒŒƒWƒXƒ^ƒAƒhƒŒƒXƒe[ƒuƒ‹
     312 *  割込み要求許可レジスタアドレステーブル
    318313 */
    319314const IER_INFO ier_reg_addr[ INHNO_MAX ] = {
    320         { NULL, INVALID_OFFSET },                       /* No.0   —\–ñ */
    321         { NULL, INVALID_OFFSET },                       /* No.1   —\–ñ */
    322         { NULL, INVALID_OFFSET },                       /* No.2   —\–ñ */
    323         { NULL, INVALID_OFFSET },                       /* No.3   —\–ñ */
    324         { NULL, INVALID_OFFSET },                       /* No.4   —\–ñ */
    325         { NULL, INVALID_OFFSET },                       /* No.5   —\–ñ */
    326         { NULL, INVALID_OFFSET },                       /* No.6   —\–ñ */
    327         { NULL, INVALID_OFFSET },                       /* No.7   —\–ñ */
    328         { NULL, INVALID_OFFSET },                       /* No.8   —\–ñ */
    329         { NULL, INVALID_OFFSET },                       /* No.9   —\–ñ */
    330         { NULL, INVALID_OFFSET },                       /* No.10  —\–ñ */
    331         { NULL, INVALID_OFFSET },                       /* No.11  —\–ñ */
    332         { NULL, INVALID_OFFSET },                       /* No.12  —\–ñ */
    333         { NULL, INVALID_OFFSET },                       /* No.13  —\–ñ */
    334         { NULL, INVALID_OFFSET },                       /* No.14  —\–ñ */
    335         { NULL, INVALID_OFFSET },                       /* No.15  —\–ñ */
    336         { ICU_IER02_ADDR, ICU_IEN0_BIT },       /* No.16  ƒoƒXƒGƒ‰[ BUSERR */
    337         { NULL, INVALID_OFFSET },                       /* No.17  —\–ñ */
    338         { NULL, INVALID_OFFSET },                       /* No.18  —\–ñ */
    339         { NULL, INVALID_OFFSET },                       /* No.19  —\–ñ */
    340         { NULL, INVALID_OFFSET },                       /* No.20  —\–ñ */
     315        { NULL, INVALID_OFFSET },                       /* No.0   予約 */
     316        { NULL, INVALID_OFFSET },                       /* No.1   予約 */
     317        { NULL, INVALID_OFFSET },                       /* No.2   予約 */
     318        { NULL, INVALID_OFFSET },                       /* No.3   予約 */
     319        { NULL, INVALID_OFFSET },                       /* No.4   予約 */
     320        { NULL, INVALID_OFFSET },                       /* No.5   予約 */
     321        { NULL, INVALID_OFFSET },                       /* No.6   予約 */
     322        { NULL, INVALID_OFFSET },                       /* No.7   予約 */
     323        { NULL, INVALID_OFFSET },                       /* No.8   予約 */
     324        { NULL, INVALID_OFFSET },                       /* No.9   予約 */
     325        { NULL, INVALID_OFFSET },                       /* No.10  予約 */
     326        { NULL, INVALID_OFFSET },                       /* No.11  予約 */
     327        { NULL, INVALID_OFFSET },                       /* No.12  予約 */
     328        { NULL, INVALID_OFFSET },                       /* No.13  予約 */
     329        { NULL, INVALID_OFFSET },                       /* No.14  予約 */
     330        { NULL, INVALID_OFFSET },                       /* No.15  予約 */
     331        { ICU_IER02_ADDR, ICU_IEN0_BIT },       /* No.16  バスエラー BUSERR */
     332        { NULL, INVALID_OFFSET },                       /* No.17  予約 */
     333        { NULL, INVALID_OFFSET },                       /* No.18  予約 */
     334        { NULL, INVALID_OFFSET },                       /* No.19  予約 */
     335        { NULL, INVALID_OFFSET },                       /* No.20  予約 */
    341336        { ICU_IER02_ADDR, ICU_IEN5_BIT },       /* No.21  FCU FIFERR */
    342         { NULL, INVALID_OFFSET },                       /* No.22  —\–ñ */
     337        { NULL, INVALID_OFFSET },                       /* No.22  予約 */
    343338        { ICU_IER02_ADDR, ICU_IEN7_BIT },       /* No.23  FCU FRDYI */
    344         { NULL, INVALID_OFFSET },                       /* No.24  —\–ñ */
    345         { NULL, INVALID_OFFSET },                       /* No.25  —\–ñ */
    346         { NULL, INVALID_OFFSET },                       /* No.26  —\–ñ */
     339        { NULL, INVALID_OFFSET },                       /* No.24  予約 */
     340        { NULL, INVALID_OFFSET },                       /* No.25  予約 */
     341        { NULL, INVALID_OFFSET },                       /* No.26  予約 */
    347342        { ICU_IER03_ADDR, ICU_IEN3_BIT },       /* No.27  SWINT */
    348         { ICU_IER03_ADDR, ICU_IEN4_BIT },       /* No.28  CMTƒ†ƒjƒbƒg0 CMT0 */
    349         { ICU_IER03_ADDR, ICU_IEN5_BIT },       /* No.29  CMTƒ†ƒjƒbƒg0 CMT1 */
    350         { ICU_IER03_ADDR, ICU_IEN6_BIT },       /* No.30  CMTƒ†ƒjƒbƒg1 CMT2 */
    351         { ICU_IER03_ADDR, ICU_IEN7_BIT },       /* No.31  CMTƒ†ƒjƒbƒg1 CMT3 */
     343        { ICU_IER03_ADDR, ICU_IEN4_BIT },       /* No.28  CMTユニット0 CMT0 */
     344        { ICU_IER03_ADDR, ICU_IEN5_BIT },       /* No.29  CMTユニット0 CMT1 */
     345        { ICU_IER03_ADDR, ICU_IEN6_BIT },       /* No.30  CMTユニット1 CMT2 */
     346        { ICU_IER03_ADDR, ICU_IEN7_BIT },       /* No.31  CMTユニット1 CMT3 */
    352347        { ICU_IER04_ADDR, ICU_IEN0_BIT },       /* No.32  ETHER */
    353348        { ICU_IER04_ADDR, ICU_IEN1_BIT },       /* No.33  USB0 D0FIFO0 */
     
    378373        { ICU_IER07_ADDR, ICU_IEN2_BIT },       /* No.58  CAN2 RXM2 */
    379374        { ICU_IER07_ADDR, ICU_IEN3_BIT },       /* No.59  CAN2 TXM2 */
    380         { NULL, INVALID_OFFSET },                       /* No.60  —\–ñ */
    381         { NULL, INVALID_OFFSET },                       /* No.61  —\–ñ */
     375        { NULL, INVALID_OFFSET },                       /* No.60  予約 */
     376        { NULL, INVALID_OFFSET },                       /* No.61  予約 */
    382377        { ICU_IER07_ADDR, ICU_IEN6_BIT },       /* No.62  RTC PRD */
    383         { NULL, INVALID_OFFSET },                       /* No.63  —\–ñ */
    384         { ICU_IER08_ADDR, ICU_IEN0_BIT },       /* No.64  ŠO•”’[Žq IRQ0 */
    385         { ICU_IER08_ADDR, ICU_IEN1_BIT },       /* No.65  ŠO•”’[Žq IRQ1 */
    386         { ICU_IER08_ADDR, ICU_IEN2_BIT },       /* No.66  ŠO•”’[Žq IRQ2 */
    387         { ICU_IER08_ADDR, ICU_IEN3_BIT },       /* No.67  ŠO•”’[Žq IRQ3 */
    388         { ICU_IER08_ADDR, ICU_IEN4_BIT },       /* No.68  ŠO•”’[Žq IRQ4 */
    389         { ICU_IER08_ADDR, ICU_IEN5_BIT },       /* No.69  ŠO•”’[Žq IRQ5 */
    390         { ICU_IER08_ADDR, ICU_IEN6_BIT },       /* No.70  ŠO•”’[Žq IRQ6 */
    391         { ICU_IER08_ADDR, ICU_IEN7_BIT },       /* No.71  ŠO•”’[Žq IRQ7 */
    392         { ICU_IER09_ADDR, ICU_IEN0_BIT },       /* No.72  ŠO•”’[Žq IRQ8 */
    393         { ICU_IER09_ADDR, ICU_IEN1_BIT },       /* No.73  ŠO•”’[Žq IRQ9 */
    394         { ICU_IER09_ADDR, ICU_IEN2_BIT },       /* No.74  ŠO•”’[Žq IRQ10 */
    395         { ICU_IER09_ADDR, ICU_IEN3_BIT },       /* No.75  ŠO•”’[Žq IRQ11 */
    396         { ICU_IER09_ADDR, ICU_IEN4_BIT },       /* No.76  ŠO•”’[Žq IRQ12 */
    397         { ICU_IER09_ADDR, ICU_IEN5_BIT },       /* No.77  ŠO•”’[Žq IRQ13 */
    398         { ICU_IER09_ADDR, ICU_IEN6_BIT },       /* No.78  ŠO•”’[Žq IRQ14 */
    399         { ICU_IER09_ADDR, ICU_IEN7_BIT },       /* No.79  ŠO•”’[Žq IRQ15 */
    400         { NULL, INVALID_OFFSET },                       /* No.80  —\–ñ */
    401         { NULL, INVALID_OFFSET },                       /* No.81  —\–ñ */
    402         { NULL, INVALID_OFFSET },                       /* No.82  —\–ñ */
    403         { NULL, INVALID_OFFSET },                       /* No.83  —\–ñ */
    404         { NULL, INVALID_OFFSET },                       /* No.84  —\–ñ */
    405         { NULL, INVALID_OFFSET },                       /* No.85  —\–ñ */
    406         { NULL, INVALID_OFFSET },                       /* No.86  —\–ñ */
    407         { NULL, INVALID_OFFSET },                       /* No.87  —\–ñ */
    408         { NULL, INVALID_OFFSET },                       /* No.88  —\–ñ */
    409         { NULL, INVALID_OFFSET },                       /* No.89  —\–ñ */
     378        { NULL, INVALID_OFFSET },                       /* No.63  予約 */
     379        { ICU_IER08_ADDR, ICU_IEN0_BIT },       /* No.64  外部端子 IRQ0 */
     380        { ICU_IER08_ADDR, ICU_IEN1_BIT },       /* No.65  外部端子 IRQ1 */
     381        { ICU_IER08_ADDR, ICU_IEN2_BIT },       /* No.66  外部端子 IRQ2 */
     382        { ICU_IER08_ADDR, ICU_IEN3_BIT },       /* No.67  外部端子 IRQ3 */
     383        { ICU_IER08_ADDR, ICU_IEN4_BIT },       /* No.68  外部端子 IRQ4 */
     384        { ICU_IER08_ADDR, ICU_IEN5_BIT },       /* No.69  外部端子 IRQ5 */
     385        { ICU_IER08_ADDR, ICU_IEN6_BIT },       /* No.70  外部端子 IRQ6 */
     386        { ICU_IER08_ADDR, ICU_IEN7_BIT },       /* No.71  外部端子 IRQ7 */
     387        { ICU_IER09_ADDR, ICU_IEN0_BIT },       /* No.72  外部端子 IRQ8 */
     388        { ICU_IER09_ADDR, ICU_IEN1_BIT },       /* No.73  外部端子 IRQ9 */
     389        { ICU_IER09_ADDR, ICU_IEN2_BIT },       /* No.74  外部端子 IRQ10 */
     390        { ICU_IER09_ADDR, ICU_IEN3_BIT },       /* No.75  外部端子 IRQ11 */
     391        { ICU_IER09_ADDR, ICU_IEN4_BIT },       /* No.76  外部端子 IRQ12 */
     392        { ICU_IER09_ADDR, ICU_IEN5_BIT },       /* No.77  外部端子 IRQ13 */
     393        { ICU_IER09_ADDR, ICU_IEN6_BIT },       /* No.78  外部端子 IRQ14 */
     394        { ICU_IER09_ADDR, ICU_IEN7_BIT },       /* No.79  外部端子 IRQ15 */
     395        { NULL, INVALID_OFFSET },                       /* No.80  予約 */
     396        { NULL, INVALID_OFFSET },                       /* No.81  予約 */
     397        { NULL, INVALID_OFFSET },                       /* No.82  予約 */
     398        { NULL, INVALID_OFFSET },                       /* No.83  予約 */
     399        { NULL, INVALID_OFFSET },                       /* No.84  予約 */
     400        { NULL, INVALID_OFFSET },                       /* No.85  予約 */
     401        { NULL, INVALID_OFFSET },                       /* No.86  予約 */
     402        { NULL, INVALID_OFFSET },                       /* No.87  予約 */
     403        { NULL, INVALID_OFFSET },                       /* No.88  予約 */
     404        { NULL, INVALID_OFFSET },                       /* No.89  予約 */
    410405        { ICU_IER0B_ADDR, ICU_IEN2_BIT },       /* No.90  USBR0 */
    411406        { ICU_IER0B_ADDR, ICU_IEN3_BIT },       /* No.91  USBR1 */
    412407        { ICU_IER0B_ADDR, ICU_IEN4_BIT },       /* No.92  RTC ALM */
    413408        { ICU_IER0B_ADDR, ICU_IEN5_BIT },       /* No.92  RTC PRD */
    414         { NULL, INVALID_OFFSET },                       /* No.94  —\–ñ */
    415         { NULL, INVALID_OFFSET },                       /* No.95  —\–ñ */
    416         { NULL, INVALID_OFFSET },                       /* No.96  —\–ñ */
    417         { NULL, INVALID_OFFSET },                       /* No.97  —\–ñ */
     409        { NULL, INVALID_OFFSET },                       /* No.94  予約 */
     410        { NULL, INVALID_OFFSET },                       /* No.95  予約 */
     411        { NULL, INVALID_OFFSET },                       /* No.96  予約 */
     412        { NULL, INVALID_OFFSET },                       /* No.97  予約 */
    418413        { ICU_IER0C_ADDR, ICU_IEN2_BIT },       /* No.98  AD0 ADI0 */
    419         { NULL, INVALID_OFFSET },                       /* No.99  —\–ñ */
    420         { NULL, INVALID_OFFSET },                       /* No.100 —\–ñ */
    421         { NULL, INVALID_OFFSET },                       /* No.101 —\–ñ */
     414        { NULL, INVALID_OFFSET },                       /* No.99  予約 */
     415        { NULL, INVALID_OFFSET },                       /* No.100 予約 */
     416        { NULL, INVALID_OFFSET },                       /* No.101 予約 */
    422417        { ICU_IER0C_ADDR, ICU_IEN6_BIT },       /* No.102 S12AD S12ADI00 */
    423         { NULL, INVALID_OFFSET },                       /* No.103 —\–ñ */
    424         { NULL, INVALID_OFFSET },                       /* No.104 —\–ñ */
    425         { NULL, INVALID_OFFSET },                       /* No.105 —\–ñ */
     418        { NULL, INVALID_OFFSET },                       /* No.103 予約 */
     419        { NULL, INVALID_OFFSET },                       /* No.104 予約 */
     420        { NULL, INVALID_OFFSET },                       /* No.105 予約 */
    426421        { ICU_IER0D_ADDR, ICU_IEN2_BIT },       /* No.106 ICU GROUP0 */
    427422        { ICU_IER0D_ADDR, ICU_IEN3_BIT },       /* No.107 ICU GROUP1 */
     
    431426        { ICU_IER0D_ADDR, ICU_IEN7_BIT },       /* No.111 ICU GROUP5 */
    432427        { ICU_IER0E_ADDR, ICU_IEN0_BIT },       /* No.112 ICU GROUP6 */
    433         { NULL, INVALID_OFFSET },                       /* No.113 —\–ñ */
     428        { NULL, INVALID_OFFSET },                       /* No.113 予約 */
    434429        { ICU_IER0E_ADDR, ICU_IEN1_BIT },       /* No.114 ICU GROUP12 */
    435         { NULL, INVALID_OFFSET },                       /* No.115 —\–ñ */
    436         { NULL, INVALID_OFFSET },                       /* No.116 —\–ñ */
    437         { NULL, INVALID_OFFSET },                       /* No.117 —\–ñ */
    438         { NULL, INVALID_OFFSET },                       /* No.118 —\–ñ */
    439         { NULL, INVALID_OFFSET },                       /* No.119 —\–ñ */
    440         { NULL, INVALID_OFFSET },                       /* No.120 —\–ñ */
    441         { NULL, INVALID_OFFSET },                       /* No.121 —\–ñ */
     430        { NULL, INVALID_OFFSET },                       /* No.115 予約 */
     431        { NULL, INVALID_OFFSET },                       /* No.116 予約 */
     432        { NULL, INVALID_OFFSET },                       /* No.117 予約 */
     433        { NULL, INVALID_OFFSET },                       /* No.118 予約 */
     434        { NULL, INVALID_OFFSET },                       /* No.119 予約 */
     435        { NULL, INVALID_OFFSET },                       /* No.120 予約 */
     436        { NULL, INVALID_OFFSET },                       /* No.121 予約 */
    442437        { ICU_IER0F_ADDR, ICU_IEN2_BIT },       /* No.122 SCI12 SCIX0 */
    443438        { ICU_IER0F_ADDR, ICU_IEN3_BIT },       /* No.123 SCI12 SCIX1 */
     
    486481        { ICU_IER14_ADDR, ICU_IEN6_BIT },       /* No.166 POE OEI1 */
    487482        { ICU_IER14_ADDR, ICU_IEN7_BIT },       /* No.167 POE OEI2 */
    488         { NULL, INVALID_OFFSET },                       /* No.168 —\–ñ */
    489         { NULL, INVALID_OFFSET },                       /* No.169 —\–ñ */
     483        { NULL, INVALID_OFFSET },                       /* No.168 予約 */
     484        { NULL, INVALID_OFFSET },                       /* No.169 予約 */
    490485        { ICU_IER15_ADDR, ICU_IEN2_BIT },       /* No.170 TMR0 CMIA0 */
    491486        { ICU_IER15_ADDR, ICU_IEN3_BIT },       /* No.171 TMR0 CMIB0 */
     
    522517        { ICU_IER19_ADDR, ICU_IEN2_BIT },       /* No.202 EXDMAC EXDMAC0I */
    523518        { ICU_IER19_ADDR, ICU_IEN3_BIT },       /* No.203 EXDMAC EXDMAC1I */
    524         { NULL, INVALID_OFFSET },                       /* No.204 —\–ñ */
    525         { NULL, INVALID_OFFSET },                       /* No.205 —\–ñ */
    526         { NULL, INVALID_OFFSET },                       /* No.206 —\–ñ */
    527         { NULL, INVALID_OFFSET },                       /* No.207 —\–ñ */
    528         { NULL, INVALID_OFFSET },                       /* No.208 —\–ñ */
    529         { NULL, INVALID_OFFSET },                       /* No.209 —\–ñ */
    530         { NULL, INVALID_OFFSET },                       /* No.210 —\–ñ */
    531         { NULL, INVALID_OFFSET },                       /* No.211 —\–ñ */
    532         { NULL, INVALID_OFFSET },                       /* No.212 —\–ñ */
    533         { NULL, INVALID_OFFSET },                       /* No.213 —\–ñ */
     519        { NULL, INVALID_OFFSET },                       /* No.204 予約 */
     520        { NULL, INVALID_OFFSET },                       /* No.205 予約 */
     521        { NULL, INVALID_OFFSET },                       /* No.206 予約 */
     522        { NULL, INVALID_OFFSET },                       /* No.207 予約 */
     523        { NULL, INVALID_OFFSET },                       /* No.208 予約 */
     524        { NULL, INVALID_OFFSET },                       /* No.209 予約 */
     525        { NULL, INVALID_OFFSET },                       /* No.210 予約 */
     526        { NULL, INVALID_OFFSET },                       /* No.211 予約 */
     527        { NULL, INVALID_OFFSET },                       /* No.212 予約 */
     528        { NULL, INVALID_OFFSET },                       /* No.213 予約 */
    534529        { ICU_IER1A_ADDR, ICU_IEN6_BIT },       /* No.214 SCI0 RXI0 */
    535530        { ICU_IER1A_ADDR, ICU_IEN7_BIT },       /* No.215 SCI0 TXI0 */
     
    572567        { ICU_IER1F_ADDR, ICU_IEN4_BIT },       /* No.252 SCI12 TEI12 */
    573568        { ICU_IER1F_ADDR, ICU_IEN5_BIT },       /* No.253 IEB IEBINT */
    574         { NULL, INVALID_OFFSET },                       /* No.254 —\–ñ */
    575         { NULL, INVALID_OFFSET },                       /* No.255 —\–ñ */
     569        { NULL, INVALID_OFFSET },                       /* No.254 予約 */
     570        { NULL, INVALID_OFFSET },                       /* No.255 予約 */
    576571};
    577572
    578573
    579574/*
    580  *  IRQƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^ƒAƒhƒŒƒXƒe[ƒuƒ‹
     575 *  IRQコントロールレジスタアドレステーブル
    581576 */
    582577volatile uint8_t __evenaccess * const irqcr_reg_addr[ IRQ_MAX ] = {
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630_config.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    47 [ƒ‹iRX630—pj
     42 *              プロセッサ依存モジュール(RX630用)
    4843 *
    49  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_config.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    50  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    51  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     44 *  このインクルードファイルは,target_config.h(または,そこからインク
     45 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     46 *  直接インクルードしてはならない.
    5247 */
    5348
     
    5853
    5954/*
    60  *  Š„ž‚Ý—vˆö”
     55 *  割込み要因数
    6156 */
    6257#define INHNO_MAX       UINT_C( 256 )
     
    6459
    6560/*
    66  *  Š„ž‚ݐ§Œä—pŒ^’è‹`
     61 *  割込み制御用型定義
    6762 */
    6863typedef struct ier_info {
     
    7368
    7469/*
    75  *  Š„ž‚ݐ§Œä—p’è‹`
     70 *  割込み制御用定義
    7671 */
    7772#define INVALID_OFFSET                          ( 0xFFU )
     
    8479
    8580/*
    86  *  Š„ž‚ݐ§Œä—pƒe[ƒuƒ‹
     81 *  割込み制御用テーブル
    8782 */
    8883
    89 /* Š„ž‚Ý—vˆöƒvƒ‰ƒCƒIƒŠƒeƒBƒŒƒWƒXƒ^ƒAƒhƒŒƒX */
     84/* 割込み要因プライオリティレジスタアドレス */
    9085extern volatile uint8_t __evenaccess * const ipr_reg_addr[];
    91 /* Š„ž‚Ý—v‹‹–‰ÂƒŒƒWƒXƒ^ƒAƒhƒŒƒX */
     86/* 割込み要求許可レジスタアドレス */
    9287extern const IER_INFO ier_reg_addr[];
    93 /* Š„ž‚Ý—v‹ƒŒƒWƒXƒ^ƒAƒhƒŒƒX */
     88/* 割込み要求レジスタアドレス */
    9489extern volatile uint8_t __evenaccess * const ir_reg_addr[];
    95 /* IRQƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^ƒAƒhƒŒƒX */
     90/* IRQコントロールレジスタアドレス */
    9691extern volatile uint8_t __evenaccess * const irqcr_reg_addr[];
    9792
    9893
    9994/*
    100  *  ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    101 [ƒ‹iRX630—pj
     95 *  プロセッサ依存モジュール(RX630用)
    10296 */
    10397#include "rx630_ccrx/prc_config.h"
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/start.src

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
    r164 r167  
    1010;*  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1111;*
    12 ;*  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13 ;*  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    14 ;*  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15 ;*  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    16 ;*      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    17 ;*      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18 ;*  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19 ;*      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—p
    21 ;*      ŽÒƒ}ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    23 ;*      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24 ;*  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    25 ;*      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    26 ;*      ‚ƁD
    27 ;*    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    30 ;*        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31 ;*    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    32 ;*        •ñ‚·‚邱‚ƁD
    33 ;*  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    34 ;*      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    35 ;*      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    36 ;*      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    37 ;*      –Ɛӂ·‚邱‚ƁD
     12;*  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13;*  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14;*  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15;*  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16;*      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17;*      スコード中に含まれていること.
     18;*  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19;*      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20;*      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21;*      の無保証規定を掲載すること.
     22;*  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23;*      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24;*      と.
     25;*    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26;*        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27;*    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28;*        報告すること.
     29;*  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30;*      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31;*      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32;*      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33;*      免責すること.
    3834;*
    39 ;*  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    40 ;*  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    41 ;*  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    42 ;*  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    43 ;*  ‚̐ӔC‚𕉂í‚È‚¢D
     35;*  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36;*  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37;*  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38;*  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39;*  の責任を負わない.
    4440;*
    4541;*  @(#) $Id: start.src 536 2014-10-09 23:11:40Z coas-nagasima $
     
    4945
    5046        ;
    51         ;  ƒƒ‚ƒŠƒ}ƒbƒv‚Ì’è‹`(ƒ^[ƒQƒbƒgˆË‘¶•”)
     47        ;  メモリマップの定義(ターゲット依存部)
    5248        ;
    5349
    54 DFLRE                           .equ    007FC440H               ; DFLREƒŒƒWƒXƒ^
     50DFLRE                           .equ    007FC440H               ; DFLREレジスタ
    5551
    5652DB_BLOCK_ENABLE         .equ    02D0FH
    5753
    5854;
    59 ‰Šú‰»ƒ‹[ƒ`ƒ“
     55初期化ルーチン
    6056;
    6157        .section        P, CODE
     
    6965_start:
    7066        ;
    71         ;  “dŒ¹“Š“üŒã‚̓Œƒxƒ‹0, ‘SŠ„ž‚Ý‹ÖŽ~ó‘Ô‚Å‚ ‚é.
    72         ;  ƒJ[ƒlƒ‹‚ł͍‚‘¬Š„ž‚Ý‚ðŽg—p‚µ‚È‚¢‚½‚߁ABPC, BPSW‹y‚ÑFINTV
    73         ;  ‚̏‰Šú‰»‚͍s‚í‚È‚¢.
     67        ;  電源投入後はレベル0, 全割込み禁止状態である.
     68        ;  カーネルでは高速割込みを使用しないため、BPC, BPSW及びFINTV
     69        ;  の初期化は行わない.
    7470        ;
    7571
    7672        ;
    77         ;  “à‘ ROMiƒf[ƒ^ƒtƒ‰ƒbƒVƒ
    78 j—̈æ‚̐ݒè
     73        ;  内蔵ROM(データフラッシュ)領域の設定
    7974        ;
    80         ;  ƒŠƒZƒbƒgŒã, ƒf[ƒ^ƒtƒ‰ƒbƒVƒ
    81 —̈æ‚͓ǂݏo‚µ‹ÖŽ~‚Æ‚È‚Á‚Ä‚¢‚é
    82         ;  ‚½‚ß, “ǂݏo‚µ‹–‰Â‚ɐݒ肷‚é.
     75        ;  リセット後, データフラッシュ領域は読み出し禁止となっている
     76        ;  ため, 読み出し許可に設定する.
    8377        ;
    8478        mov.l   #DFLRE, r5
     
    8680       
    8781        ;
    88         ;  ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚̐ݒè
     82        ;  スタックポインタの設定
    8983        ;
    90         ;  ƒ†[ƒU‚É‚Ä”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pƒXƒ^ƒbƒN—̈æ‚ð—pˆÓ‚µ‚½ê‡,
    91         ;  ƒ†[ƒU—̈æ‚ðÝ’è‚·‚é.
    92         ;  kernel_cfg.c‚É‚Ä"_kernel_istkpt"‚Ì’l‚ðŒˆ’è‚·‚é.
     84        ;  ユーザにて非タスクコンテキスト用スタック領域を用意した場合,
     85        ;  ユーザ領域を設定する.
     86        ;  kernel_cfg.cにて"_kernel_istkpt"の値を決定する.
    9387        ;
    9488        mov.l   #__kernel_istkpt, r5
    95         mov.l   [r5], r0                        ; ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pƒXƒ^ƒbƒN—̈æ‚ðÝ’è
     89        mov.l   [r5], r0                        ; 非タスクコンテキスト用スタック領域を設定
    9690
    9791        ;
    98         ;  ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹‚̐ݒè
     92        ;  可変ベクタテーブルの設定
    9993        ;
    100         mvtc    #(topof C$VECT), intb                   ; ƒxƒNƒ^ƒe[ƒuƒ‹‚̐ݒè
     94        mvtc    #(topof C$VECT), intb                   ; ベクタテーブルの設定
    10195
    10296        ;
    103         ;  ƒn[ƒhƒEƒFƒAŒÅ—L‚̏‰Šú‰»ƒ‹[ƒ`ƒ“‚̌ďo‚µ
     97        ;  ハードウェア固有の初期化ルーチンの呼出し
    10498        ;
    10599        mov.l   #_hardware_init_hook, r5
     
    109103
    110104        ;
    111         ;  ‰Šú’l‚ ‚è•Ï”—̈æ‚̏‰Šú‰»
     105        ;  初期値あり変数領域の初期化
    112106        ;
    113107init_D:
    114108        mov.l   #(sizeof R), r3
    115109        cmp             #0, r3
    116         beq.b   init_D_2                                        ; ƒTƒCƒY0‚Ȃ珉Šú‰»•K—v‚È‚µ
     110        beq.b   init_D_2                                        ; サイズ0なら初期化必要なし
    117111        mov.l   #(topof R), r1
    118112        mov.l   #(topof D), r2
     
    122116        mov.l   #(sizeof R_2), r3
    123117        cmp             #0, r3
    124         beq.b   init_D_1                                        ; ƒTƒCƒY0‚Ȃ珉Šú‰»•K—v‚È‚µ
     118        beq.b   init_D_1                                        ; サイズ0なら初期化必要なし
    125119        mov.l   #(topof R_2), r1
    126120        mov.l   #(topof D_2), r2
     
    130124        mov.l   #(sizeof R_1), r3
    131125        cmp             #0, r3
    132         beq.b   clear_B                                         ; ƒTƒCƒY0‚Ȃ珉Šú‰»•K—v‚È‚µ
     126        beq.b   clear_B                                         ; サイズ0なら初期化必要なし
    133127        mov.l   #(topof R_1), r1
    134128        mov.l   #(topof D_1), r2
     
    136130
    137131        ;
    138         ;  ‰Šú’l‚È‚µ•Ï”—̈æ‚̏‰Šú‰»
     132        ;  初期値なし変数領域の初期化
    139133        ;
    140134clear_B:
     
    157151
    158152        ;
    159         ;  software_init_hook ‚ðŒÄo‚µi0 ‚Å‚È‚¢ê‡j
     153        ;  software_init_hook を呼出し(0 でない場合)
    160154        ;
    161         ;  ƒ\ƒtƒgƒEƒFƒAŠÂ‹«i“Á‚Ƀ‰ƒCƒuƒ‰ƒŠj‚Ɉˑ¶‚µ‚Ä•K—v‚ȏ‰Šú‰»ˆ—
    162         ;  ‚ª‚ ‚éê‡‚́Csoftware_init_hook ‚Æ‚¢‚¤ŠÖ”‚ð—pˆÓ‚·‚ê‚΂悢.
     155        ;  ソフトウェア環境(特にライブラリ)に依存して必要な初期化処理
     156        ;  がある場合は,software_init_hook という関数を用意すればよい.
    163157        ;
    164158        mov.l   #_software_init_hook, r5
     
    168162
    169163        ;
    170         ;  ƒJ[ƒlƒ‹ƒXƒ^[ƒg
     164        ;  カーネルスタート
    171165        ;
    172166kernel_link:
  • UsbWattMeter/trunk/asp_dcre/include/histogram.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              ŽÀsŽžŠÔ•ª•zWŒvƒ‚ƒWƒ
    46 [ƒ‹
     41 *              実行時間分布集計モジュール
    4742 */
    4843
     
    5550
    5651/*
    57  *  ŽÀsŽžŠÔ•ª•zŒv‘ª‚̏‰Šú‰»
     52 *  実行時間分布計測の初期化
    5853 */
    5954extern void     init_hist(ID histid, uint_t maxval, uint_t histarea[]);
    6055
    6156/*
    62  *  ŽÀsŽžŠÔŒv‘ª‚ÌŠJŽn
     57 *  実行時間計測の開始
    6358 */
    6459extern void     begin_measure(ID histid);
    6560
    6661/*
    67  *  ŽÀsŽžŠÔŒv‘ª‚̏I—¹
     62 *  実行時間計測の終了
    6863 */
    6964extern void     end_measure(ID histid);
    7065
    7166/*
    72  *  ŽÀsŽžŠÔ•ª•zŒv‘ª‚Ì•\Ž¦
     67 *  実行時間分布計測の表示
    7368 */
    7469extern void     print_hist(ID histid);
  • UsbWattMeter/trunk/asp_dcre/include/itron.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  $Id$
     
    4541
    4642/*
    47  *              ITRONŽd—l‹¤’Ê‹K’è‚̃f[ƒ^Œ^E’萔Eƒ}ƒNƒ
     43 *              ITRON仕様共通規定のデータ型・定数・マクロ
    4844 *
    49  *  ‚±‚̃wƒbƒ_ƒtƒ@ƒCƒ‹‚́CITRONŽd—l‹¤’Ê‹K’è‚̃f[ƒ^Œ^E’萔Eƒ}ƒNƒ‚Ì’†
    50  *  ‚ŁCTOPPERS‹¤’ʃwƒbƒ_ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚È‚¢‚à‚Ì‚Ì’è‹`‚ðŠÜ‚ށDITRONŽd
    51  *  —l‚Ƃ̌݊·«‚ð•K—v‚Æ‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚Æ‚ð‘z
    52  *  ’肵‚Ä‚¢‚éD
     45 *  このヘッダファイルは,ITRON仕様共通規定のデータ型・定数・マクロの中
     46 *  で,TOPPERS共通ヘッダファイルに含まれないものの定義を含む.ITRON仕
     47 *  様との互換性を必要とするアプリケーションがインクルードすることを想
     48 *  定している.
    5349 *
    54  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
    55  *  ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­D‚±‚ê‚É‚æ‚èCƒ}ƒNƒ’è‹`ˆÈŠO‚ð
    56  *  œ‚­‚悤‚É‚È‚Á‚Ä‚¢‚éD
     50 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     51 *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
     52 *  除くようになっている.
    5753 */
    5854
     
    6561
    6662/*
    67  *  TOPPERS‹¤’ʃwƒbƒ_ƒtƒ@ƒCƒ‹
     63 *  TOPPERS共通ヘッダファイル
    6864 */
    6965#include "t_stddef.h"
    7066
    7167/*
    72  *  ITRONŽd—l‹¤’ʃf[ƒ^Œ^
     68 *  ITRON仕様共通データ型
    7369 */
    7470#ifndef TOPPERS_MACRO_ONLY
    7571
    7672#ifdef INT8_MAX
    77 typedef int8_t                  B;                      /* •„†•t‚«8ƒrƒbƒg®” */
     73typedef int8_t                  B;                      /* 符号付き8ビット整数 */
    7874#endif /* INT8_MAX */
    7975
    8076#ifdef UINT8_MAX
    81 typedef uint8_t                 UB;                     /* •„†–³‚µ8ƒrƒbƒg®” */
    82 typedef uint8_t                 VB;                     /* Œ^‚ª’è‚Ü‚ç‚È‚¢8ƒrƒbƒg‚Ì’l */
     77typedef uint8_t                 UB;                     /* 符号無し8ビット整数 */
     78typedef uint8_t                 VB;                     /* 型が定まらない8ビットの値 */
    8379#endif /* UINT8_MAX */
    8480
    85 typedef int16_t                 H;                      /* •„†•t‚«16ƒrƒbƒg®” */
    86 typedef uint16_t                UH;                     /* •„†–³‚µ16ƒrƒbƒg®” */
    87 typedef uint16_t                VH;                     /* Œ^‚ª’è‚Ü‚ç‚È‚¢16ƒrƒbƒg‚Ì’l */
     81typedef int16_t                 H;                      /* 符号付き16ビット整数 */
     82typedef uint16_t                UH;                     /* 符号無し16ビット整数 */
     83typedef uint16_t                VH;                     /* 型が定まらない16ビットの値 */
    8884
    89 typedef int32_t                 W;                      /* •„†•t‚«32ƒrƒbƒg®” */
    90 typedef uint32_t                UW;                     /* •„†–³‚µ32ƒrƒbƒg®” */
    91 typedef uint32_t                VW;                     /* Œ^‚ª’è‚Ü‚ç‚È‚¢32ƒrƒbƒg‚Ì’l */
     85typedef int32_t                 W;                      /* 符号付き32ビット整数 */
     86typedef uint32_t                UW;                     /* 符号無し32ビット整数 */
     87typedef uint32_t                VW;                     /* 型が定まらない32ビットの値 */
    9288
    9389#ifdef INT64_MAX
    94 typedef int64_t                 D;                      /* •„†•t‚«64ƒrƒbƒg®” */
     90typedef int64_t                 D;                      /* 符号付き64ビット整数 */
    9591#endif /* INT64_MAX */
    9692
    9793#ifdef UINT64_MAX
    98 typedef uint64_t                UD;                     /* •„†–³‚µ64ƒrƒbƒg®” */
    99 typedef uint64_t                VD;                     /* Œ^‚ª’è‚Ü‚ç‚È‚¢64ƒrƒbƒg‚Ì’l */
     94typedef uint64_t                UD;                     /* 符号無し64ビット整数 */
     95typedef uint64_t                VD;                     /* 型が定まらない64ビットの値 */
    10096#endif /* UINT64_MAX */
    10197
    102 typedef void                    *VP;            /* Œ^‚ª’è‚Ü‚ç‚È‚¢‚à‚̂ւ̃|ƒCƒ“ƒ^ */
     98typedef void                    *VP;            /* 型が定まらないものへのポインタ */
    10399
    104 typedef int_t                   INT;            /* Ž©‘R‚ȃTƒCƒY‚Ì•„†•t‚«®” */
    105 typedef uint_t                  UINT;           /* Ž©‘R‚ȃTƒCƒY‚Ì•„†–³‚µ®” */
     100typedef int_t                   INT;            /* 自然なサイズの符号付き整数 */
     101typedef uint_t                  UINT;           /* 自然なサイズの符号無し整数 */
    106102
    107 typedef bool_t                  BOOL;           /* ^‹U’l */
     103typedef bool_t                  BOOL;           /* 真偽値 */
    108104
    109 typedef intptr_t                VP_INT;         /* ƒ|ƒCƒ“ƒ^‚Ü‚½‚Í•„†•t‚«®” */
     105typedef intptr_t                VP_INT;         /* ポインタまたは符号付き整数 */
    110106
    111107#endif /* TOPPERS_MACRO_ONLY */
    112108
    113109/*
    114  *  ITRONŽd—l‹¤’ʒ萔
     110 *  ITRON仕様共通定数
    115111 */
    116 #define TRUE            true                    /* ^ */
    117 #define FALSE           false                   /* ‹U */
     112#define TRUE            true                    /* */
     113#define FALSE           false                   /* */
    118114
    119115/*
    120  *  ƒIƒuƒWƒFƒNƒg‘®«‚Ì’è‹`
     116 *  オブジェクト属性の定義
    121117 */
    122 #define TA_HLNG                 UINT_C(0x00)    /* ‚‹‰Œ¾Œê—pƒCƒ“ƒ^ƒtƒF[ƒX */
    123 #define TA_TFIFO                UINT_C(0x00)    /* ƒ^ƒXƒN‚Ì‘Ò‚¿s—ñ‚ðFIFO‡‚É */
    124 #define TA_MFIFO                UINT_C(0x00)    /* ƒƒbƒZ[ƒWƒLƒ
    125 [‚ðFIFO‡‚É */
    126 #define TA_WSGL                 UINT_C(0x00)    /* ‘Ò‚¿ƒ^ƒXƒN‚Í1‚Â‚Ì‚Ý */
     118#define TA_HLNG                 UINT_C(0x00)    /* 高級言語用インタフェース */
     119#define TA_TFIFO                UINT_C(0x00)    /* タスクの待ち行列をFIFO順に */
     120#define TA_MFIFO                UINT_C(0x00)    /* メッセージキューをFIFO順に */
     121#define TA_WSGL                 UINT_C(0x00)    /* 待ちタスクは1つのみ */
    127122
    128123/*
    129  *  ƒlƒXƒg‰ñ”‚̍őå’l
     124 *  ネスト回数の最大値
    130125 */
    131 #define TMAX_SUSCNT             UINT_C(1)               /* ‹­§‘Ò‚¿—v‹ƒlƒXƒg”‚̍őå’l */
     126#define TMAX_SUSCNT             UINT_C(1)               /* 強制待ち要求ネスト数の最大値 */
    132127
    133128/*
    134  *  ‹­§‘Ò‚¿ó‘Ô‚©‚ç‚Ì‹­§ÄŠJ
     129 *  強制待ち状態からの強制再開
    135130 */
    136131#define frsm_tsk(tskid)         rsm_tsk(tskid)
  • UsbWattMeter/trunk/asp_dcre/include/kernel.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              TOPPERS/ASPƒJ[ƒlƒ‹ •W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹
     44 *              TOPPERS/ASPカーネル 標準ヘッダファイル
    4945 *
    50  *  TOPPERS/ASPƒJ[ƒlƒ‹‚ªƒTƒ|[ƒg‚·‚éƒT[ƒrƒXƒR[ƒ‹‚̐錾‚ƁC•K—v‚ȃf[
    51  *  ƒ^Œ^C’萔Cƒ}ƒNƒ‚Ì’è‹`‚ðŠÜ‚Þƒwƒbƒ_ƒtƒ@ƒCƒ‹D
     46 *  TOPPERS/ASPカーネルがサポートするサービスコールの宣言と,必要なデー
     47 *  タ型,定数,マクロの定義を含むヘッダファイル.
    5248 *
    53  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
    54  *  ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­D‚±‚ê‚É‚æ‚èCƒ}ƒNƒ’è‹`ˆÈŠO‚ð
    55  *  œ‚­‚悤‚É‚È‚Á‚Ä‚¢‚éD
     49 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     50 *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
     51 *  除くようになっている.
    5652 *
    57  *  ‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é‘O‚ɃCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚¨‚­‚ׂ«ƒtƒ@ƒCƒ‹
    58  *  ‚Í‚È‚¢D
     53 *  このファイルをインクルードする前にインクルードしておくべきファイル
     54 *  はない.
    5955 */
    6056
     
    6763
    6864/*
    69  *      TOPPERS‹¤’ʂ̃f[ƒ^Œ^E’萔Eƒ}ƒNƒ
     65 *      TOPPERS共通のデータ型・定数・マクロ
    7066 */
    7167#include <t_stddef.h>
    7268
    7369/*
    74  *  ƒ^[ƒQƒbƒgˆË‘¶•”
     70 *  ターゲット依存部
    7571 */
    7672#include "target_kernel.h"
     
    7975
    8076/*
    81  *  ƒf[ƒ^Œ^‚Ì’è‹`
    82  */
    83 
    84 /*
    85  *  ƒrƒbƒgƒpƒ^[ƒ“‚âƒIƒuƒWƒFƒNƒg”ԍ†‚ÌŒ^’è‹`
    86  */
    87 typedef uint_t          TEXPTN;         /* ƒ^ƒXƒN—áŠO—vˆö‚̃rƒbƒgƒpƒ^[ƒ“ */
    88 typedef uint_t          FLGPTN;         /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃rƒbƒgƒpƒ^[ƒ“ */
    89 typedef uint_t          INTNO;          /* Š„ž‚ݔԍ† */
    90 typedef uint_t          INHNO;          /* Š„ž‚݃nƒ“ƒhƒ‰”ԍ† */
    91 typedef uint_t          EXCNO;          /* CPU—áŠOƒnƒ“ƒhƒ‰”ԍ† */
    92 
    93 /*
    94  *  ˆ—’PˆÊ‚ÌŒ^’è‹`
     77 *  データ型の定義
     78 */
     79
     80/*
     81 *  ビットパターンやオブジェクト番号の型定義
     82 */
     83typedef uint_t          TEXPTN;         /* タスク例外要因のビットパターン */
     84typedef uint_t          FLGPTN;         /* イベントフラグのビットパターン */
     85typedef uint_t          INTNO;          /* 割込み番号 */
     86typedef uint_t          INHNO;          /* 割込みハンドラ番号 */
     87typedef uint_t          EXCNO;          /* CPU例外ハンドラ番号 */
     88
     89/*
     90 *  処理単位の型定義
    9591 */
    9692typedef void    (*TASK)(intptr_t exinf);
     
    105101
    106102/*
    107  *  ƒƒ‚ƒŠ—̈æŠm•Û‚Ì‚½‚ß‚ÌŒ^’è‹`
     103 *  メモリ領域確保のための型定義
    108104 */
    109105#ifndef TOPPERS_STK_T
    110106#define TOPPERS_STK_T   intptr_t
    111107#endif /* TOPPERS_STK_T */
    112 typedef TOPPERS_STK_T   STK_T;  /* ƒXƒ^ƒbƒN—̈æ‚ðŠm•Û‚·‚邽‚ß‚ÌŒ^ */
     108typedef TOPPERS_STK_T   STK_T;  /* スタック領域を確保するための型 */
    113109
    114110#ifndef TOPPERS_MPF_T
    115111#define TOPPERS_MPF_T   intptr_t
    116112#endif /* TOPPERS_MPF_T */
    117 typedef TOPPERS_MPF_T   MPF_T;  /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚ðŠm•Û‚·‚邽‚ß‚ÌŒ^ */
    118 
    119 /*
    120  *  ƒƒbƒZ[ƒWƒwƒbƒ_‚ÌŒ^’è‹`
    121  */
    122 typedef struct t_msg {                  /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚̃ƒbƒZ[ƒWƒwƒbƒ_ */
     113typedef TOPPERS_MPF_T   MPF_T;  /* 固定長メモリプール領域を確保するための型 */
     114
     115/*
     116 *  メッセージヘッダの型定義
     117 */
     118typedef struct t_msg {                  /* メールボックスのメッセージヘッダ */
    123119        struct t_msg    *pk_next;
    124120} T_MSG;
    125121
    126 typedef struct t_msg_pri {              /* —Dæ“x•t‚«ƒƒbƒZ[ƒWƒwƒbƒ_ */
    127         T_MSG   msgque;                         /* ƒƒbƒZ[ƒWƒwƒbƒ_ */
    128         PRI             msgpri;                         /* ƒƒbƒZ[ƒW—Dæ“x */
     122typedef struct t_msg_pri {              /* 優先度付きメッセージヘッダ */
     123        T_MSG   msgque;                         /* メッセージヘッダ */
     124        PRI             msgpri;                         /* メッセージ優先度 */
    129125} T_MSG_PRI;
    130126
    131127/*
    132  *  ƒpƒPƒbƒgŒ`Ž®‚Ì’è‹`
     128 *  パケット形式の定義
    133129 */
    134130typedef struct t_ctsk {
    135         ATR                     tskatr;         /* ƒ^ƒXƒN‘®« */
    136         intptr_t        exinf;          /* ƒ^ƒXƒN‚ÌŠg’£î•ñ */
    137         TASK            task;           /* ƒ^ƒXƒN‚̃ƒCƒ“ƒ‹[ƒ`ƒ“‚̐擪”Ô’n */
    138         PRI                     itskpri;        /* ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x */
    139         SIZE            stksz;          /* ƒ^ƒXƒN‚̃Xƒ^ƒbƒN—̈æ‚̃TƒCƒY */
    140         STK_T           *stk;           /* ƒ^ƒXƒN‚̃Xƒ^ƒbƒN—̈æ‚̐擪”Ô’n */
     131        ATR                     tskatr;         /* タスク属性 */
     132        intptr_t        exinf;          /* タスクの拡張情報 */
     133        TASK            task;           /* タスクのメインルーチンの先頭番地 */
     134        PRI                     itskpri;        /* タスクの起動時優先度 */
     135        SIZE            stksz;          /* タスクのスタック領域のサイズ */
     136        STK_T           *stk;           /* タスクのスタック領域の先頭番地 */
    141137} T_CTSK;
    142138
    143139typedef struct t_rtsk {
    144         STAT    tskstat;        /* ƒ^ƒXƒNó‘Ô */
    145         PRI             tskpri;         /* ƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x */
    146         PRI             tskbpri;        /* ƒ^ƒXƒN‚̃x[ƒX—Dæ“x */
    147         STAT    tskwait;        /* ‘Ò‚¿—vˆö */
    148         ID              wobjid;         /* ‘Ò‚¿‘Ώۂ̃IƒuƒWƒFƒNƒg‚ÌID */
    149         TMO             lefttmo;        /* ƒ^ƒCƒ€ƒAƒEƒg‚·‚é‚Ü‚Å‚ÌŽžŠÔ */
    150         uint_t  actcnt;         /* ‹N“®—v‹ƒLƒ
    151 [ƒCƒ“ƒO” */
    152         uint_t  wupcnt;         /* ‹N°—v‹ƒLƒ
    153 [ƒCƒ“ƒO” */
     140        STAT    tskstat;        /* タスク状態 */
     141        PRI             tskpri;         /* タスクの現在優先度 */
     142        PRI             tskbpri;        /* タスクのベース優先度 */
     143        STAT    tskwait;        /* 待ち要因 */
     144        ID              wobjid;         /* 待ち対象のオブジェクトのID */
     145        TMO             lefttmo;        /* タイムアウトするまでの時間 */
     146        uint_t  actcnt;         /* 起動要求キューイング数 */
     147        uint_t  wupcnt;         /* 起床要求キューイング数 */
    154148} T_RTSK;
    155149
    156150typedef struct t_dtex {
    157         ATR             texatr;         /* ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‘®« */
    158         TEXRTN  texrtn;         /* ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚̐擪”Ô’n */
     151        ATR             texatr;         /* タスク例外処理ルーチン属性 */
     152        TEXRTN  texrtn;         /* タスク例外処理ルーチンの先頭番地 */
    159153} T_DTEX;
    160154
    161155typedef struct t_rtex {
    162         STAT    texstat;        /* ƒ^ƒXƒN—áŠOˆ—‚̏ó‘Ô */
    163         TEXPTN  pndptn;         /* •Û—¯—áŠO—vˆö */
     156        STAT    texstat;        /* タスク例外処理の状態 */
     157        TEXPTN  pndptn;         /* 保留例外要因 */
    164158} T_RTEX;
    165159
    166160typedef struct t_csem {
    167         ATR             sematr;         /* ƒZƒ}ƒtƒH‘®« */
    168         uint_t  isemcnt;        /* ƒZƒ}ƒtƒH‚̏‰ŠúŽ‘Œ¹” */
    169         uint_t  maxsem;         /* ƒZƒ}ƒtƒH‚̍ő厑Œ¹” */
     161        ATR             sematr;         /* セマフォ属性 */
     162        uint_t  isemcnt;        /* セマフォの初期資源数 */
     163        uint_t  maxsem;         /* セマフォの最大資源数 */
    170164} T_CSEM;
    171165
    172166typedef struct t_rsem {
    173         ID              wtskid;         /* ƒZƒ}ƒtƒH‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
    174         uint_t  semcnt;         /* ƒZƒ}ƒtƒH‚ÌŒ»Ý‚ÌŽ‘Œ¹” */
     167        ID              wtskid;         /* セマフォの待ち行列の先頭のタスクのID番号 */
     168        uint_t  semcnt;         /* セマフォの現在の資源数 */
    175169} T_RSEM;
    176170
    177171typedef struct t_cflg {
    178         ATR             flgatr;         /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‘®« */
    179         FLGPTN  iflgptn;        /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̏‰Šúƒrƒbƒgƒpƒ^[ƒ“ */
     172        ATR             flgatr;         /* イベントフラグ属性 */
     173        FLGPTN  iflgptn;        /* イベントフラグの初期ビットパターン */
    180174} T_CFLG;
    181175
    182176typedef struct t_rflg {
    183         ID              wtskid;         /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
    184         FLGPTN  flgptn;         /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌŒ»Ý‚̃rƒbƒgƒpƒ^[ƒ“ */
     177        ID              wtskid;         /* イベントフラグの待ち行列の先頭のタスクのID番号 */
     178        FLGPTN  flgptn;         /* イベントフラグの現在のビットパターン */
    185179} T_RFLG;
    186180
    187181typedef struct t_cdtq {
    188         ATR             dtqatr;         /* ƒf[ƒ^ƒLƒ
    189 [‘®« */
    190         uint_t  dtqcnt;         /* ƒf[ƒ^ƒLƒ
    191 [ŠÇ——̈æ‚ÉŠi”[‚Å‚«‚éƒf[ƒ^” */
    192         void    *dtqmb;         /* ƒf[ƒ^ƒLƒ
    193 [ŠÇ——̈æ‚̐擪”Ô’n */
     182        ATR             dtqatr;         /* データキュー属性 */
     183        uint_t  dtqcnt;         /* データキュー管理領域に格納できるデータ数 */
     184        void    *dtqmb;         /* データキュー管理領域の先頭番地 */
    194185} T_CDTQ;
    195186
    196187typedef struct t_rdtq {
    197         ID              stskid;         /* ƒf[ƒ^ƒLƒ
    198 [‚Ì‘—M‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
    199         ID              rtskid;         /* ƒf[ƒ^ƒLƒ
    200 [‚ÌŽóM‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
    201         uint_t  sdtqcnt;        /* ƒf[ƒ^ƒLƒ
    202 [ŠÇ——̈æ‚ÉŠi”[‚³‚ê‚Ä‚¢‚éƒf[ƒ^‚̐” */
     188        ID              stskid;         /* データキューの送信待ち行列の先頭のタスクのID番号 */
     189        ID              rtskid;         /* データキューの受信待ち行列の先頭のタスクのID番号 */
     190        uint_t  sdtqcnt;        /* データキュー管理領域に格納されているデータの数 */
    203191} T_RDTQ;
    204192
    205193typedef struct t_cpdq {
    206         ATR             pdqatr;         /* —Dæ“xƒf[ƒ^ƒLƒ
    207 [‘®« */
    208         uint_t  pdqcnt;         /* —Dæ“xƒf[ƒ^ƒLƒ
    209 [ŠÇ——̈æ‚ÉŠi”[‚Å‚«‚éƒf[ƒ^” */
    210         PRI             maxdpri;        /* —Dæ“xƒf[ƒ^ƒLƒ
    211 [‚É‘—M‚Å‚«‚éƒf[ƒ^—Dæ“x‚̍Å
    212                                                    ‘å’l */
    213         void    *pdqmb;         /* —Dæ“xƒf[ƒ^ƒLƒ
    214 [ŠÇ——̈æ‚̐擪”Ô’n */
     194        ATR             pdqatr;         /* 優先度データキュー属性 */
     195        uint_t  pdqcnt;         /* 優先度データキュー管理領域に格納できるデータ数 */
     196        PRI             maxdpri;        /* 優先度データキューに送信できるデータ優先度の最
     197                                                   大値 */
     198        void    *pdqmb;         /* 優先度データキュー管理領域の先頭番地 */
    215199} T_CPDQ;
    216200
    217201typedef struct t_rpdq {
    218         ID              stskid;         /* —Dæ“xƒf[ƒ^ƒLƒ
    219 [‚Ì‘—M‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN
    220                                                    ‚ÌID”ԍ† */
    221         ID              rtskid;         /* —Dæ“xƒf[ƒ^ƒLƒ
    222 [‚ÌŽóM‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN
    223                                                    ‚ÌID”ԍ† */
    224         uint_t  spdqcnt;        /* —Dæ“xƒf[ƒ^ƒLƒ
    225 [ŠÇ——̈æ‚ÉŠi”[‚³‚ê‚Ä‚¢‚éƒf[
    226                                                    ƒ^‚̐” */
     202        ID              stskid;         /* 優先度データキューの送信待ち行列の先頭のタスク
     203                                                   のID番号 */
     204        ID              rtskid;         /* 優先度データキューの受信待ち行列の先頭のタスク
     205                                                   のID番号 */
     206        uint_t  spdqcnt;        /* 優先度データキュー管理領域に格納されているデー
     207                                                   タの数 */
    227208} T_RPDQ;
    228209
    229210typedef struct t_cmbx {
    230         ATR             mbxatr;         /* ƒ[ƒ‹ƒ{ƒbƒNƒX‘®« */
    231         PRI             maxmpri;        /* —Dæ“xƒ[ƒ‹ƒ{ƒbƒNƒX‚É‘—M‚Å‚«‚郁ƒbƒZ[ƒW—Dæ
    232                                                    “x‚̍őå’l */
    233         void    *mprihd;        /* —Dæ“x•Ê‚̃ƒbƒZ[ƒWƒLƒ
    234 [ƒwƒbƒ_—̈æ‚̐擪”Ô’n */
     211        ATR             mbxatr;         /* メールボックス属性 */
     212        PRI             maxmpri;        /* 優先度メールボックスに送信できるメッセージ優先
     213                                                   度の最大値 */
     214        void    *mprihd;        /* 優先度別のメッセージキューヘッダ領域の先頭番地 */
    235215} T_CMBX;
    236216
    237217typedef struct t_rmbx {
    238         ID              wtskid;         /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
    239         T_MSG   *pk_msg;        /* ƒƒbƒZ[ƒWƒLƒ
    240 [‚̐擪‚ɂ‚Ȃª‚ꂽƒƒbƒZ[ƒW
    241                                                    ‚̐擪”Ô’n */
     218        ID              wtskid;         /* メールボックスの待ち行列の先頭のタスクのID番号 */
     219        T_MSG   *pk_msg;        /* メッセージキューの先頭につながれたメッセージ
     220                                                   の先頭番地 */
    242221} T_RMBX;
    243222
    244223typedef struct t_cmpf {
    245         ATR             mpfatr;         /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‘®« */
    246         uint_t  blkcnt;         /* Šl“¾‚Å‚«‚éŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚̐” */
    247         uint_t  blksz;          /* ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚̃TƒCƒY */
    248         MPF_T   *mpf;           /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̐擪”Ô’n */
    249         void    *mpfmb;         /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ——̈æ‚̐擪”Ô’n */
     224        ATR             mpfatr;         /* 固定長メモリプール属性 */
     225        uint_t  blkcnt;         /* 獲得できる固定長メモリブロックの数 */
     226        uint_t  blksz;          /* 固定長メモリブロックのサイズ */
     227        MPF_T   *mpf;           /* 固定長メモリプール領域の先頭番地 */
     228        void    *mpfmb;         /* 固定長メモリプール管理領域の先頭番地 */
    250229} T_CMPF;
    251230
    252231typedef struct t_rmpf {
    253         ID              wtskid;         /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚Ì
    254                                                    ID”ԍ† */
    255         uint_t  fblkcnt;        /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̋󂫃ƒ‚ƒŠ—̈æ‚ÉŠ„‚è
    256                                                    •t‚¯‚邱‚Æ‚ª‚Å‚«‚éŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚̐” */
     232        ID              wtskid;         /* 固定長メモリプールの待ち行列の先頭のタスクの
     233                                                   ID番号 */
     234        uint_t  fblkcnt;        /* 固定長メモリプール領域の空きメモリ領域に割り
     235                                                   付けることができる固定長メモリブロックの数 */
    257236} T_RMPF;
    258237
    259238typedef struct t_ccyc {
    260         ATR                     cycatr;         /* ŽüŠúƒnƒ“ƒhƒ‰‘®« */
    261         intptr_t        exinf;          /* ŽüŠúƒnƒ“ƒhƒ‰‚ÌŠg’£î•ñ */
    262         CYCHDR          cychdr;         /* ŽüŠúƒnƒ“ƒhƒ‰‚̐擪”Ô’n */
    263         RELTIM          cyctim;         /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì‹N“®ŽüŠú */
    264         RELTIM          cycphs;         /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì‹N“®ˆÊ‘Š */
     239        ATR                     cycatr;         /* 周期ハンドラ属性 */
     240        intptr_t        exinf;          /* 周期ハンドラの拡張情報 */
     241        CYCHDR          cychdr;         /* 周期ハンドラの先頭番地 */
     242        RELTIM          cyctim;         /* 周期ハンドラの起動周期 */
     243        RELTIM          cycphs;         /* 周期ハンドラの起動位相 */
    265244} T_CCYC;
    266245
    267246typedef struct t_rcyc {
    268         STAT    cycstat;        /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
    269         RELTIM  lefttim;        /* ŽŸ‚ÉŽüŠúƒnƒ“ƒhƒ‰‚ð‹N“®‚·‚鎞‚Ü‚Å‚Ì‘Š‘ÎŽžŠÔ */
     247        STAT    cycstat;        /* 周期ハンドラの動作状態 */
     248        RELTIM  lefttim;        /* 次に周期ハンドラを起動する時刻までの相対時間 */
    270249} T_RCYC;
    271250
    272251typedef struct t_calm {
    273         ATR                     almatr;         /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‘®« */
    274         intptr_t        exinf;          /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ÌŠg’£î•ñ */
    275         ALMHDR          almhdr;         /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̐擪”Ô’n */
     252        ATR                     almatr;         /* アラームハンドラ属性 */
     253        intptr_t        exinf;          /* アラームハンドラの拡張情報 */
     254        ALMHDR          almhdr;         /* アラームハンドラの先頭番地 */
    276255} T_CALM;
    277256
    278257typedef struct t_ralm {
    279         STAT    almstat;        /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
    280         RELTIM  lefttim;        /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ð‹N“®‚·‚鎞‚Ü‚Å‚Ì‘Š‘ÎŽžŠÔ */
     258        STAT    almstat;        /* アラームハンドラの動作状態 */
     259        RELTIM  lefttim;        /* アラームハンドラを起動する時刻までの相対時間 */
    281260} T_RALM;
    282261
    283262typedef struct t_cisr {
    284         ATR                     isratr;         /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‘®« */
    285         intptr_t        exinf;          /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚ÌŠg’£î•ñ */
    286         INTNO           intno;          /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚ð“o˜^‚·‚銄ž‚ݔԍ† */
    287         ISR                     isr;            /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐擪”Ô’n */
    288         PRI                     isrpri;         /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x */
     263        ATR                     isratr;         /* 割込みサービスルーチン属性 */
     264        intptr_t        exinf;          /* 割込みサービスルーチンの拡張情報 */
     265        INTNO           intno;          /* 割込みサービスルーチンを登録する割込み番号 */
     266        ISR                     isr;            /* 割込みサービスルーチンの先頭番地 */
     267        PRI                     isrpri;         /* 割込みサービスルーチン優先度 */
    289268} T_CISR;
    290269
    291270/*
    292  *  ƒT[ƒrƒXƒR[ƒ‹‚̐錾
    293  */
    294 
    295 /*
    296  *  ƒ^ƒXƒNŠÇ—‹@”\
     271 *  サービスコールの宣言
     272 */
     273
     274/*
     275 *  タスク管理機能
    297276 */
    298277extern ER_UINT  acre_tsk(const T_CTSK *pk_ctsk) throw();
     
    309288
    310289/*
    311  *  ƒ^ƒXƒN•t‘®“¯Šú‹@”\
     290 *  タスク付属同期機能
    312291 */
    313292extern ER               slp_tsk(void) throw();
     
    323302
    324303/*
    325  *  ƒ^ƒXƒN—áŠOˆ—‹@”\
     304 *  タスク例外処理機能
    326305 */
    327306extern ER               def_tex(ID tskid, const T_DTEX *pk_dtex) throw();
     
    334313
    335314/*
    336  *  “¯ŠúE’ʐM‹@”\
     315 *  同期・通信機能
    337316 */
    338317extern ER_ID    acre_sem(const T_CSEM *pk_csem) throw();
     
    398377
    399378/*
    400  *  ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—‹@”\
     379 *  メモリプール管理機能
    401380 */
    402381extern ER_ID    acre_mpf(const T_CMPF *pk_cmpf) throw();
     
    410389
    411390/*
    412  *  ŽžŠÔŠÇ—‹@”\
     391 *  時間管理機能
    413392 */
    414393extern ER               get_tim(SYSTIM *p_systim) throw();
     
    430409
    431410/*
    432  *  ƒVƒXƒeƒ€ó‘ÔŠÇ—‹@”\
     411 *  システム状態管理機能
    433412 */
    434413extern ER               rot_rdq(PRI tskpri) throw();
     
    450429
    451430/*
    452  *  Š„ž‚ÝŠÇ—‹@”\
     431 *  割込み管理機能
    453432 */
    454433extern ER_ID    acre_isr(const T_CISR *pk_cisr) throw();
     
    460439
    461440/*
    462  *  CPU—áŠOŠÇ—‹@”\
     441 *  CPU例外管理機能
    463442 */
    464443extern bool_t   xsns_dpn(void *p_excinf) throw();
     
    468447
    469448/*
    470  *  ƒIƒuƒWƒFƒNƒg‘®«‚Ì’è‹`
    471  */
    472 #define TA_ACT                  UINT_C(0x02)    /* ƒ^ƒXƒN‚ð‹N“®‚³‚ꂽó‘ԂŐ¶¬ */
    473 
    474 #define TA_TPRI                 UINT_C(0x01)    /* ƒ^ƒXƒN‚Ì‘Ò‚¿s—ñ‚ð—Dæ“x‡‚É */
    475 #define TA_MPRI                 UINT_C(0x02)    /* ƒƒbƒZ[ƒWƒLƒ
    476 [‚ð—Dæ“x‡‚É */
    477 
    478 #define TA_WMUL                 UINT_C(0x02)    /* •¡”‚Ì‘Ò‚¿ƒ^ƒXƒN */
    479 #define TA_CLR                  UINT_C(0x04)    /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃NƒŠƒAŽw’è */
    480 
    481 #define TA_STA                  UINT_C(0x02)    /* ŽüŠúƒnƒ“ƒhƒ‰‚𓮍ìó‘ԂŐ¶¬ */
    482 
    483 #define TA_NONKERNEL    UINT_C(0x02)    /* ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý */
    484 
    485 #define TA_ENAINT               UINT_C(0x01)    /* Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚ðƒNƒŠƒA */
    486 #define TA_EDGE                 UINT_C(0x02)    /* ƒGƒbƒWƒgƒŠƒK */
    487 
    488 /*
    489  *  ƒT[ƒrƒXƒR[ƒ‹‚Ì“®ìƒ‚[ƒh‚Ì’è‹`
    490  */
    491 #define TWF_ORW                 UINT_C(0x01)    /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌOR‘Ò‚¿ */
    492 #define TWF_ANDW                UINT_C(0x02)    /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌAND‘Ò‚¿ */
    493 
    494 /*
    495  *  ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô‚Ì’è‹`
    496  */
    497 #define TTS_RUN                 UINT_C(0x01)    /* ŽÀsó‘Ô */
    498 #define TTS_RDY                 UINT_C(0x02)    /* ŽÀs‰Â”\ó‘Ô */
    499 #define TTS_WAI                 UINT_C(0x04)    /* ‘Ò‚¿ó‘Ô */
    500 #define TTS_SUS                 UINT_C(0x08)    /* ‹­§‘Ò‚¿ó‘Ô */
    501 #define TTS_WAS                 UINT_C(0x0c)    /* “ñd‘Ò‚¿ó‘Ô */
    502 #define TTS_DMT                 UINT_C(0x10)    /* ‹xŽ~ó‘Ô */
    503 
    504 #define TTW_SLP                 UINT_C(0x0001)  /* ‹N°‘Ò‚¿ */
    505 #define TTW_DLY                 UINT_C(0x0002)  /* ŽžŠÔŒo‰ß‘Ò‚¿ */
    506 #define TTW_SEM                 UINT_C(0x0004)  /* ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹Šl“¾‘Ò‚¿ */
    507 #define TTW_FLG                 UINT_C(0x0008)  /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿ */
    508 #define TTW_SDTQ                UINT_C(0x0010)  /* ƒf[ƒ^ƒLƒ
    509 [‚Ö‚Ì‘—M‘Ò‚¿ */
    510 #define TTW_RDTQ                UINT_C(0x0020)  /* ƒf[ƒ^ƒLƒ
    511 [‚©‚ç‚ÌŽóM‘Ò‚¿ */
    512 #define TTW_SPDQ                UINT_C(0x0100)  /* —Dæ“xƒf[ƒ^ƒLƒ
    513 [‚Ö‚Ì‘—M‘Ò‚¿ */
    514 #define TTW_RPDQ                UINT_C(0x0200)  /* —Dæ“xƒf[ƒ^ƒLƒ
    515 [‚©‚ç‚ÌŽóM‘Ò‚¿ */
    516 #define TTW_MBX                 UINT_C(0x0040)  /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚©‚ç‚ÌŽóM‘Ò‚¿ */
    517 #define TTW_MPF                 UINT_C(0x2000)  /* ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚ÌŠl“¾‘Ò‚¿ */
    518 
    519 #define TTEX_ENA                UINT_C(0x01)    /* ƒ^ƒXƒN—áŠOˆ—‹–‰Âó‘Ô */
    520 #define TTEX_DIS                UINT_C(0x02)    /* ƒ^ƒXƒN—áŠOˆ—‹ÖŽ~ó‘Ô */
    521 
    522 #define TCYC_STP                UINT_C(0x01)    /* ŽüŠúƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚È‚¢ */
    523 #define TCYC_STA                UINT_C(0x02)    /* ŽüŠúƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚é */
    524 
    525 #define TALM_STP                UINT_C(0x01)    /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚È‚¢ */
    526 #define TALM_STA                UINT_C(0x02)    /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚é */
    527 
    528 /*
    529  *  ‚»‚Ì‘¼‚̒萔‚Ì’è‹`
    530  */
    531 #define TSK_SELF                0                       /* Ž©ƒ^ƒXƒNŽw’è */
    532 #define TSK_NONE                0                       /* ŠY“–‚·‚éƒ^ƒXƒN‚ª‚È‚¢ */
    533 
    534 #define TPRI_SELF               0                       /* Ž©ƒ^ƒXƒN‚̃x[ƒX—Dæ“x */
    535 #define TPRI_INI                0                       /* ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x */
    536 
    537 #define TIPM_ENAALL             0                       /* Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ */
    538 
    539 /*
    540  *  \¬’萔‚ƃ}ƒNƒ
    541  */
    542 
    543 /*
    544  *  ƒTƒ|[ƒg‚·‚é‹@”\
     449 *  オブジェクト属性の定義
     450 */
     451#define TA_ACT                  UINT_C(0x02)    /* タスクを起動された状態で生成 */
     452
     453#define TA_TPRI                 UINT_C(0x01)    /* タスクの待ち行列を優先度順に */
     454#define TA_MPRI                 UINT_C(0x02)    /* メッセージキューを優先度順に */
     455
     456#define TA_WMUL                 UINT_C(0x02)    /* 複数の待ちタスク */
     457#define TA_CLR                  UINT_C(0x04)    /* イベントフラグのクリア指定 */
     458
     459#define TA_STA                  UINT_C(0x02)    /* 周期ハンドラを動作状態で生成 */
     460
     461#define TA_NONKERNEL    UINT_C(0x02)    /* カーネル管理外の割込み */
     462
     463#define TA_ENAINT               UINT_C(0x01)    /* 割込み要求禁止フラグをクリア */
     464#define TA_EDGE                 UINT_C(0x02)    /* エッジトリガ */
     465
     466/*
     467 *  サービスコールの動作モードの定義
     468 */
     469#define TWF_ORW                 UINT_C(0x01)    /* イベントフラグのOR待ち */
     470#define TWF_ANDW                UINT_C(0x02)    /* イベントフラグのAND待ち */
     471
     472/*
     473 *  オブジェクトの状態の定義
     474 */
     475#define TTS_RUN                 UINT_C(0x01)    /* 実行状態 */
     476#define TTS_RDY                 UINT_C(0x02)    /* 実行可能状態 */
     477#define TTS_WAI                 UINT_C(0x04)    /* 待ち状態 */
     478#define TTS_SUS                 UINT_C(0x08)    /* 強制待ち状態 */
     479#define TTS_WAS                 UINT_C(0x0c)    /* 二重待ち状態 */
     480#define TTS_DMT                 UINT_C(0x10)    /* 休止状態 */
     481
     482#define TTW_SLP                 UINT_C(0x0001)  /* 起床待ち */
     483#define TTW_DLY                 UINT_C(0x0002)  /* 時間経過待ち */
     484#define TTW_SEM                 UINT_C(0x0004)  /* セマフォの資源獲得待ち */
     485#define TTW_FLG                 UINT_C(0x0008)  /* イベントフラグ待ち */
     486#define TTW_SDTQ                UINT_C(0x0010)  /* データキューへの送信待ち */
     487#define TTW_RDTQ                UINT_C(0x0020)  /* データキューからの受信待ち */
     488#define TTW_SPDQ                UINT_C(0x0100)  /* 優先度データキューへの送信待ち */
     489#define TTW_RPDQ                UINT_C(0x0200)  /* 優先度データキューからの受信待ち */
     490#define TTW_MBX                 UINT_C(0x0040)  /* メールボックスからの受信待ち */
     491#define TTW_MPF                 UINT_C(0x2000)  /* 固定長メモリブロックの獲得待ち */
     492
     493#define TTEX_ENA                UINT_C(0x01)    /* タスク例外処理許可状態 */
     494#define TTEX_DIS                UINT_C(0x02)    /* タスク例外処理禁止状態 */
     495
     496#define TCYC_STP                UINT_C(0x01)    /* 周期ハンドラが動作していない */
     497#define TCYC_STA                UINT_C(0x02)    /* 周期ハンドラが動作している */
     498
     499#define TALM_STP                UINT_C(0x01)    /* アラームハンドラが動作していない */
     500#define TALM_STA                UINT_C(0x02)    /* アラームハンドラが動作している */
     501
     502/*
     503 *  その他の定数の定義
     504 */
     505#define TSK_SELF                0                       /* 自タスク指定 */
     506#define TSK_NONE                0                       /* 該当するタスクがない */
     507
     508#define TPRI_SELF               0                       /* 自タスクのベース優先度 */
     509#define TPRI_INI                0                       /* タスクの起動時優先度 */
     510
     511#define TIPM_ENAALL             0                       /* 割込み優先度マスク全解除 */
     512
     513/*
     514 *  構成定数とマクロ
     515 */
     516
     517/*
     518 *  サポートする機能
    545519 */
    546520#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
    547 #define TOPPERS_SUPPORT_DIS_INT                 /* dis_int‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚é */
     521#define TOPPERS_SUPPORT_DIS_INT                 /* dis_intがサポートされている */
    548522#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
    549523
    550524#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
    551 #define TOPPERS_SUPPORT_ENA_INT                 /* ena_int‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚é */
     525#define TOPPERS_SUPPORT_ENA_INT                 /* ena_intがサポートされている */
    552526#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
    553527
    554528#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
    555 #define TOPPERS_SUPPORT_GET_UTM                 /* get_utm‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚é */
     529#define TOPPERS_SUPPORT_GET_UTM                 /* get_utmがサポートされている */
    556530#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
    557531
    558 #define TOPPERS_SUPPORT_DYNAMIC_CRE             /* “®“I¶¬‹@”\Šg’£ */
    559 
    560 /*
    561  *  —Dæ“x‚͈̔Í
    562  */
    563 #define TMIN_TPRI               1                       /* ƒ^ƒXƒN—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
    564 #define TMAX_TPRI               16                      /* ƒ^ƒXƒN—Dæ“x‚̍őå’liÅ’á’lj*/
    565 #define TMIN_DPRI               1                       /* ƒf[ƒ^—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
    566 #define TMAX_DPRI               16                      /* ƒf[ƒ^—Dæ“x‚̍őå’liÅ’á’lj*/
    567 #define TMIN_MPRI               1                       /* ƒƒbƒZ[ƒW—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
    568 #define TMAX_MPRI               16                      /* ƒƒbƒZ[ƒW—Dæ“x‚̍őå’liÅ’á’lj*/
    569 #define TMIN_ISRPRI             1                       /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x‚̍ŏ¬’l */
    570 #define TMAX_ISRPRI             16                      /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x‚̍őå’l */
    571 
    572 /*
    573  *  ƒo[ƒWƒ‡ƒ“î•ñ
    574  */
    575 #define TKERNEL_MAKER   UINT_C(0x0118)  /* ƒJ[ƒlƒ‹‚̃[ƒJ[ƒR[ƒh */
    576 #define TKERNEL_PRID    UINT_C(0x0007)  /* ƒJ[ƒlƒ‹‚ÌŽ¯•Ê”ԍ† */
    577 #define TKERNEL_SPVER   UINT_C(0xf517)  /* ƒJ[ƒlƒ‹Žd—l‚̃o[ƒWƒ‡ƒ“”ԍ† */
    578 #define TKERNEL_PRVER   UINT_C(0x1092)  /* ƒJ[ƒlƒ‹‚̃o[ƒWƒ‡ƒ“”ԍ† */
    579 
    580 /*
    581  *  ƒLƒ
    582 [ƒCƒ“ƒO‰ñ”‚̍őå’l
    583  */
    584 #define TMAX_ACTCNT             UINT_C(1)               /* ‹N“®—v‹ƒLƒ
    585 [ƒCƒ“ƒO”‚̍őå’l */
    586 #define TMAX_WUPCNT             UINT_C(1)               /* ‹N°—v‹ƒLƒ
    587 [ƒCƒ“ƒO”‚̍őå’l */
    588 
    589 /*
    590  *  ƒrƒbƒgƒpƒ^[ƒ“‚̃rƒbƒg”
    591  */
    592 #ifndef TBIT_TEXPTN                                     /* ƒ^ƒXƒN—áŠO—vˆö‚̃rƒbƒg” */
     532#define TOPPERS_SUPPORT_DYNAMIC_CRE             /* 動的生成機能拡張 */
     533
     534/*
     535 *  優先度の範囲
     536 */
     537#define TMIN_TPRI               1                       /* タスク優先度の最小値(最高値)*/
     538#define TMAX_TPRI               16                      /* タスク優先度の最大値(最低値)*/
     539#define TMIN_DPRI               1                       /* データ優先度の最小値(最高値)*/
     540#define TMAX_DPRI               16                      /* データ優先度の最大値(最低値)*/
     541#define TMIN_MPRI               1                       /* メッセージ優先度の最小値(最高値)*/
     542#define TMAX_MPRI               16                      /* メッセージ優先度の最大値(最低値)*/
     543#define TMIN_ISRPRI             1                       /* 割込みサービスルーチン優先度の最小値 */
     544#define TMAX_ISRPRI             16                      /* 割込みサービスルーチン優先度の最大値 */
     545
     546/*
     547 *  バージョン情報
     548 */
     549#define TKERNEL_MAKER   UINT_C(0x0118)  /* カーネルのメーカーコード */
     550#define TKERNEL_PRID    UINT_C(0x0007)  /* カーネルの識別番号 */
     551#define TKERNEL_SPVER   UINT_C(0xf517)  /* カーネル仕様のバージョン番号 */
     552#define TKERNEL_PRVER   UINT_C(0x1092)  /* カーネルのバージョン番号 */
     553
     554/*
     555 *  キューイング回数の最大値
     556 */
     557#define TMAX_ACTCNT             UINT_C(1)               /* 起動要求キューイング数の最大値 */
     558#define TMAX_WUPCNT             UINT_C(1)               /* 起床要求キューイング数の最大値 */
     559
     560/*
     561 *  ビットパターンのビット数
     562 */
     563#ifndef TBIT_TEXPTN                                     /* タスク例外要因のビット数 */
    593564#define TBIT_TEXPTN             (sizeof(TEXPTN) * CHAR_BIT)
    594565#endif /* TBIT_TEXPTN */
    595566
    596 #ifndef TBIT_FLGPTN                                     /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃rƒbƒg” */
     567#ifndef TBIT_FLGPTN                                     /* イベントフラグのビット数 */
    597568#define TBIT_FLGPTN             (sizeof(FLGPTN) * CHAR_BIT)
    598569#endif /* TBIT_FLGPTN */
    599570
    600571/*
    601  *  ƒƒ‚ƒŠ—̈æŠm•Û‚Ì‚½‚߂̃}ƒNƒ
     572 *  メモリ領域確保のためのマクロ
    602573 *
    603  *  ˆÈ‰º‚ÌTOPPERS_COUNT_SZ‚ÆTOPPERS_ROUND_SZ‚Ì’è‹`‚́Cunit‚ª2‚̋Џæ‚Å‚ 
    604  *  ‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD
     574 *  以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ
     575 *  ることを仮定している.
    605576 */
    606577#ifndef TOPPERS_COUNT_SZ
     
    629600
    630601/*
    631  *  ‚»‚Ì‘¼‚̍\¬’萔
    632  */
    633 #define TMAX_MAXSEM             UINT_MAX        /* ƒZƒ}ƒtƒH‚̍ő厑Œ¹”‚̍őå’l */
     602 *  その他の構成定数
     603 */
     604#define TMAX_MAXSEM             UINT_MAX        /* セマフォの最大資源数の最大値 */
    634605
    635606#ifdef __cplusplus
  • UsbWattMeter/trunk/asp_dcre/include/log_output.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ƒVƒXƒeƒ€ƒƒO‚̃tƒH[ƒ}ƒbƒgo—Í
     43 *              システムログのフォーマット出力
    4844 */
    4945
     
    5854
    5955/*
    60  *  •¶Žš—ñ®Œ`o—Í
     56 *  文字列整形出力
    6157 *
    62  *  format‚ÅŽw’肳‚ê‚éƒtƒH[ƒ}ƒbƒg‹Lq‚Æp_args‚ÅŽw’肳‚ê‚éˆø”—ñ‚©‚çì
    63  *  ¬‚µ‚½ƒƒbƒZ[ƒW‚ðC1•¶Žšo—͊֐”putc‚ð—p‚¢‚ďo—Í‚·‚éD
     58 *  formatで指定されるフォーマット記述とp_argsで指定される引数列から作
     59 *  成したメッセージを,1文字出力関数putcを用いて出力する.
    6460 */
    6561extern void     syslog_printf(const char *format, const intptr_t *p_args,
     
    6763
    6864/*
    69  *  ƒƒOî•ñ‚̏o—Í
     65 *  ログ情報の出力
    7066 *
    71  *  p_syslog‚ÅŽw’肳‚ê‚郍ƒOî•ñ‚𕶎š—ñ‚ɐ®Œ`‚µC1•¶Žšo—͊֐”putc‚ð—p
    72  *  ‚¢‚ďo—Í‚·‚éD
     67 *  p_syslogで指定されるログ情報を文字列に整形し,1文字出力関数putcを用
     68 *  いて出力する.
    7369 */
    7470extern void     syslog_print(const SYSLOG *p_syslog, void (*putc)(char)) throw();
    7571
    7672/*
    77  *  ƒƒOî•ñ‘rŽ¸ƒƒbƒZ[ƒW•¶Žš—ñ
     73 *  ログ情報喪失メッセージ文字列
    7874 *
    79  *  lostlogŒÂ‚̃ƒOî•ñ‚ªŽ¸‚í‚ꂽŽ|‚̃ƒbƒZ[ƒW‚ðC1•¶Žšo—͊֐”putc‚ð
    80  *  —p‚¢‚ďo—Í‚·‚éD
     75 *  lostlog個のログ情報が失われた旨のメッセージを,1文字出力関数putcを
     76 *  用いて出力する.
    8177 */
    8278extern void     syslog_lostmsg(uint_t lostlog, void (*putc)(char)) throw();
  • UsbWattMeter/trunk/asp_dcre/include/queue.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ƒLƒ
    48 [‘€ìƒ‰ƒCƒuƒ‰ƒŠ
    49  *
    50  *  ‚±‚̃Lƒ
    51 [‘€ìƒ‰ƒCƒuƒ‰ƒŠ‚ł́CƒLƒ
    52 [ƒwƒbƒ_‚ðŠÜ‚ÞƒŠƒ“ƒO\‘¢‚̃_ƒuƒ‹
    53  *  ƒŠƒ“ƒNƒLƒ
    54 [‚ðˆµ‚¤D‹ï‘Ì“I‚ɂ́CƒLƒ
    55 [ƒwƒbƒ_‚ÌŽŸƒGƒ“ƒgƒŠ‚̓Lƒ
    56 [‚Ì
    57  *  æ“ª‚̃Gƒ“ƒgƒŠC‘OƒGƒ“ƒgƒŠ‚̓Lƒ
    58 [‚Ì––”ö‚̃Gƒ“ƒgƒŠ‚Æ‚·‚éD‚Ü‚½CƒL
    59  *  ƒ
    60 [‚̐擪‚̃Gƒ“ƒgƒŠ‚Ì‘OƒGƒ“ƒgƒŠ‚ƁCƒLƒ
    61 [‚Ì––”ö‚̃Gƒ“ƒgƒŠ‚ÌŽŸƒGƒ“
    62  *  ƒgƒŠ‚́CƒLƒ
    63 [ƒwƒbƒ_‚Æ‚·‚éD‹ó‚̃Lƒ
    64 [‚́CŽŸƒGƒ“ƒgƒŠC‘OƒGƒ“ƒgƒŠ‚Æ
    65  *  ‚àŽ©•ªŽ©g‚ðŽw‚·ƒLƒ
    66 [ƒwƒbƒ_‚Å‚ ‚ç‚í‚·D
     43 *              キュー操作ライブラリ
     44 *
     45 *  このキュー操作ライブラリでは,キューヘッダを含むリング構造のダブル
     46 *  リンクキューを扱う.具体的には,キューヘッダの次エントリはキューの
     47 *  先頭のエントリ,前エントリはキューの末尾のエントリとする.また,キ
     48 *  ューの先頭のエントリの前エントリと,キューの末尾のエントリの次エン
     49 *  トリは,キューヘッダとする.空のキューは,次エントリ,前エントリと
     50 *  も自分自身を指すキューヘッダであらわす.
    6751 */
    6852
     
    7559
    7660/*
    77  *  ƒLƒ
    78 [‚̃f[ƒ^\‘¢‚Ì’è‹`
     61 *  キューのデータ構造の定義
    7962 */
    8063typedef struct queue {
    81         struct queue *p_next;           /* ŽŸƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
    82         struct queue *p_prev;           /* ‘OƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
     64        struct queue *p_next;           /* 次エントリへのポインタ */
     65        struct queue *p_prev;           /* 前エントリへのポインタ */
    8366} QUEUE;
    8467
    8568/*
    86  *  ƒLƒ
    87 [‚̏‰Šú‰»
    88  *
    89  *  p_queue‚ɂ̓Lƒ
    90 [ƒwƒbƒ_‚ðŽw’è‚·‚éD
     69 *  キューの初期化
     70 *
     71 *  p_queueにはキューヘッダを指定する.
    9172 */
    9273Inline void
     
    9879
    9980/*
    100  *  ƒLƒ
    101 [‚Ì‘OƒGƒ“ƒgƒŠ‚Ö‚Ì‘}“ü
    102  *
    103  *  p_queue‚Ì‘O‚Ép_entry‚ð‘}“ü‚·‚éDp_queue‚ɃLƒ
    104 [ƒwƒbƒ_‚ðŽw’肵‚½ê
    105  *  ‡‚ɂ́CƒLƒ
    106 [‚Ì––”ö‚Ép_entry‚ð‘}“ü‚·‚邱‚Æ‚É‚È‚éD
     81 *  キューの前エントリへの挿入
     82 *
     83 *  p_queueの前にp_entryを挿入する.p_queueにキューヘッダを指定した場
     84 *  合には,キューの末尾にp_entryを挿入することになる.
    10785 */
    10886Inline void
     
    11694
    11795/*
    118  *  ƒLƒ
    119 [‚ÌŽŸƒGƒ“ƒgƒŠ‚Ö‚Ì‘}“ü
    120  *
    121  *  p_queue‚ÌŽŸ‚Ép_entry‚ð‘}“ü‚·‚éDp_queue‚ɃLƒ
    122 [ƒwƒbƒ_‚ðŽw’肵‚½ê
    123  *  ‡‚ɂ́CƒLƒ
    124 [‚̐擪‚Ép_entry‚ð‘}“ü‚·‚邱‚Æ‚É‚È‚éD
     96 *  キューの次エントリへの挿入
     97 *
     98 *  p_queueの次にp_entryを挿入する.p_queueにキューヘッダを指定した場
     99 *  合には,キューの先頭にp_entryを挿入することになる.
    125100 */
    126101Inline void
     
    134109
    135110/*
    136  *  ƒGƒ“ƒgƒŠ‚̍폜
    137  *
    138  *  p_entry‚ðƒLƒ
    139 [‚©‚çíœ‚·‚éD
     111 *  エントリの削除
     112 *
     113 *  p_entryをキューから削除する.
    140114 */
    141115Inline void
     
    147121
    148122/*
    149  *  ƒLƒ
    150 [‚Ì—ñ‹“
    151  *
    152  *  ˆø”p_top‚ðƒLƒ
    153 [‚Æ‚·‚éƒGƒ“ƒgƒŠ‚ðæ“ª‚©‚ç—ñ‹“‚·‚éB
    154  *  Å‰‚̌ďo‚µ‚ł́Ap_entry‚ÉNULL‚ð“n‚·B•Ô’l‚Íp_top‚ÌŽŸ‚̃Gƒ“ƒgƒŠ(‚‚܂èæ“ª)‚Å‚ ‚éB
    155  *  ŽŸ‰ñˆÈ~‚Í‘O‰ñ‚É“¾‚½ƒGƒ“ƒgƒŠ‚ðp_entry‚É“n‚·B•Ô’l‚Íp_entry‚ÌŽŸ‚̃Gƒ“ƒgƒŠ‚Æ‚È‚éB
    156  *  p_entry‚ÌŽŸ‚̃Gƒ“ƒgƒŠ‚ªp_top‚¾‚Á‚½‚Æ‚«ANULL‚ð•Ô’l‚Æ‚µ‚āAƒLƒ
    157 [‚̏I’[‚ð‚ ‚ç‚í‚·B
    158  *  p_top‚ÌNULLƒ`ƒFƒbƒN‚âp_entry‚̑Ó–«ŒŸØ‚͍s‚Á‚Ä‚¢‚È‚¢BŒÄo‚µ‘¤‚̐ӔC‚ōs‚¤‚±‚ƁB
    159  *  ‚Ü‚½AŒ¾‚¤‚Ü‚Å‚à‚È‚¢‚ªAƒXƒŒƒbƒhƒZ[ƒt‚ɂ͂Ȃ肦‚È‚¢B—ñ‹“ƒ‹[ƒv’†‚Í”r‘¼‚Í
    160  *  ŒÄo‚µ‘¤‚̐ӔC‚ōs‚¤‚±‚ƁB
     123 *  キューの列挙
     124 *
     125 *  引数p_topをキューとするエントリを先頭から列挙する。
     126 *  最初の呼出しでは、p_entryにNULLを渡す。返値はp_topの次のエントリ(つまり先頭)である。
     127 *  次回以降は前回に得たエントリをp_entryに渡す。返値はp_entryの次のエントリとなる。
     128 *  p_entryの次のエントリがp_topだったとき、NULLを返値として、キューの終端をあらわす。
     129 *  p_topのNULLチェックやp_entryの妥当性検証は行っていない。呼出し側の責任で行うこと。
     130 *  また、言うまでもないが、スレッドセーフにはなりえない。列挙ループ中は排他は
     131 *  呼出し側の責任で行うこと。
    161132 */
    162133Inline QUEUE *
     
    176147
    177148/*
    178  *  ƒLƒ
    179 [‚ÌŽŸƒGƒ“ƒgƒŠ‚ÌŽæo‚µ
    180  *
    181  *  p_queue‚ÌŽŸƒGƒ“ƒgƒŠ‚ðƒLƒ
    182 [‚©‚çíœ‚µCíœ‚µ‚½ƒGƒ“ƒgƒŠ‚ð•Ô‚·D
    183  *  p_queue‚ɃLƒ
    184 [ƒwƒbƒ_‚ðŽw’肵‚½ê‡‚ɂ́CƒLƒ
    185 [‚̐擪‚̃Gƒ“ƒgƒŠ‚ð
    186  *  Žæ‚èo‚·‚±‚Æ‚É‚È‚éDp_queue‚É‹ó‚̃Lƒ
    187 [‚ðŽw’肵‚ČĂяo‚µ‚Ä‚Í‚È‚ç
    188  *  ‚È‚¢D
     149 *  キューの次エントリの取出し
     150 *
     151 *  p_queueの次エントリをキューから削除し,削除したエントリを返す.
     152 *  p_queueにキューヘッダを指定した場合には,キューの先頭のエントリを
     153 *  取り出すことになる.p_queueに空のキューを指定して呼び出してはなら
     154 *  ない.
    189155 */
    190156Inline QUEUE *
     
    201167
    202168/*
    203  *  ƒLƒ
    204 [‚ÌŽŸƒGƒ“ƒgƒŠ‚̃|ƒCƒ“ƒ^‚ðŽæ“¾
    205  *
    206  *  p_queue ‚ÌŽŸƒGƒ“ƒgƒŠ‚ð•Ô‚·Dp_queue ‚ɃLƒ
    207 [ƒwƒbƒ_‚ðŽw’肵‚½ê‡‚ɂ́C
    208  *  ƒLƒ
    209 [‚̐擪‚̃Gƒ“ƒgƒŠ‚ðŽæ‚èo‚·‚±‚Æ‚É‚È‚éDp_queue ‚É‹ó‚̃Lƒ
    210 [‚ð
    211  *  Žw’肵‚ČĂяo‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     169 *  キューの次エントリのポインタを取得
     170 *
     171 *  p_queue の次エントリを返す.p_queue にキューヘッダを指定した場合には,
     172 *  キューの先頭のエントリを取り出すことになる.p_queue に空のキューを
     173 *  指定して呼び出してはならない.
    212174 */
    213175Inline QUEUE *
     
    220182
    221183/*
    222  *  ƒLƒ
    223 [‚ª‹ó‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
    224  *
    225  *  p_queue‚ɂ̓Lƒ
    226 [ƒwƒbƒ_‚ðŽw’è‚·‚éD
     184 *  キューが空かどうかのチェック
     185 *
     186 *  p_queueにはキューヘッダを指定する.
    227187 */
    228188Inline bool_t
  • UsbWattMeter/trunk/asp_dcre/include/sil.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ƒVƒXƒeƒ€ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒCƒ„
    48  *
    49  *  ƒVƒXƒeƒ€ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒCƒ„‚̃T[ƒrƒXƒR[ƒ‹‚Ì’è‹`EéŒ¾‚ƃ}ƒNƒ‚È
    50  *  ‚Ç‚Ì’è‹`‚ðŠÜ‚Þƒwƒbƒ_ƒtƒ@ƒCƒ‹D
    51  *
    52  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
    53  *  ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­‚±‚ƂŁCƒ}ƒNƒ’è‹`ˆÈŠO‚Ì‹Lq‚ð
    54  *  œ‚­‚±‚Æ‚ª‚Å‚«‚éD
    55  *
    56  *  ‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é‘O‚ɃCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚¨‚­‚ׂ«ƒtƒ@ƒCƒ‹
    57  *  ‚Í‚È‚¢D
     43 *              システムインタフェースレイヤ
     44 *
     45 *  システムインタフェースレイヤのサービスコールの定義・宣言とマクロな
     46 *  どの定義を含むヘッダファイル.
     47 *
     48 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     49 *  は,TOPPERS_MACRO_ONLYを定義しておくことで,マクロ定義以外の記述を
     50 *  除くことができる.
     51 *
     52 *  このファイルをインクルードする前にインクルードしておくべきファイル
     53 *  はない.
    5854 */
    5955
     
    6662
    6763/*
    68  *      TOPPERS‹¤’ʂ̃f[ƒ^Œ^E’萔Eƒ}ƒNƒ
     64 *      TOPPERS共通のデータ型・定数・マクロ
    6965 */
    7066#include <t_stddef.h>
    7167
    7268/*
    73  *  ƒ^[ƒQƒbƒgˆË‘¶•”
     69 *  ターゲット依存部
    7470 */
    7571#include "target_sil.h"
     
    7874
    7975/*
    80  *  ‘SŠ„ž‚݃ƒbƒNó‘Ԃ̐§Œä
    81  *
    82  *  SIL_PRE_LOCCSIL_LOC_INT()CSIL_UNL_INT()‚́Cƒ^[ƒQƒbƒgˆË‘¶•”‚Å—p
    83  *  ˆÓ‚·‚éDƒfƒtƒHƒ‹ƒg‚Ì’è‹`‚Í—pˆÓ‚µ‚Ä‚¢‚È‚¢D
    84  */
    85 
    86 /*
    87  *  ”÷­ŽžŠÔ‘Ò‚¿
     76 *  全割込みロック状態の制御
     77 *
     78 *  SIL_PRE_LOC,SIL_LOC_INT(),SIL_UNL_INT()は,ターゲット依存部で用
     79 *  意する.デフォルトの定義は用意していない.
     80 */
     81
     82/*
     83 *  微少時間待ち
    8884 */
    8985extern void     sil_dly_nse(ulong_t dlytim) throw();
    9086
    9187/*
    92  *  ƒGƒ“ƒfƒBƒAƒ“‚Ì”½“]
     88 *  エンディアンの反転
    9389 */
    9490#ifndef TOPPERS_SIL_REV_ENDIAN_UINT16
     
    104100
    105101/*
    106  *  ƒƒ‚ƒŠ‹óŠÔƒAƒNƒZƒXŠÖ”
     102 *  メモリ空間アクセス関数
    107103 */
    108104#ifndef TOPPERS_OMIT_SIL_ACCESS
    109105
    110106/*
    111  *  8ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     107 *  8ビット単位の読出し/書込み
    112108 */
    113109#ifdef UINT8_MAX
     
    131127
    132128/*
    133  *  16ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     129 *  16ビット単位の読出し/書込み
    134130 */
    135131
     
    149145}
    150146
    151 #ifdef SIL_ENDIAN_BIG                   /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     147#ifdef SIL_ENDIAN_BIG                   /* ビッグエンディアンプロセッサ */
    152148
    153149#define sil_reh_bem(mem)                sil_reh_mem(mem)
     
    176172#endif /* TOPPERS_OMIT_SIL_WRH_LEM */
    177173#else /* SIL_ENDIAN_BIG */
    178 #ifdef SIL_ENDIAN_LITTLE                /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     174#ifdef SIL_ENDIAN_LITTLE                /* リトルエンディアンプロセッサ */
    179175
    180176#define sil_reh_lem(mem)                sil_reh_mem(mem)
     
    210206
    211207/*
    212  *  32ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     208 *  32ビット単位の読出し/書込み
    213209 */
    214210
     
    228224}
    229225
    230 #ifdef SIL_ENDIAN_BIG                   /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     226#ifdef SIL_ENDIAN_BIG                   /* ビッグエンディアンプロセッサ */
    231227
    232228#define sil_rew_bem(mem)                sil_rew_mem(mem)
     
    254250
    255251#endif /* TOPPERS_OMIT_SIL_WRW_LEM */
    256 #else /* SIL_ENDIAN_BIG */              /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     252#else /* SIL_ENDIAN_BIG */              /* リトルエンディアンプロセッサ */
    257253
    258254#define sil_rew_lem(mem)                sil_rew_mem(mem)
  • UsbWattMeter/trunk/asp_dcre/include/t_stddef.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              TOPPERS‹¤’ʃwƒbƒ_ƒtƒ@ƒCƒ‹
    48  *
    49  *  TOPPERSŠÖ˜A‚Ì‚·‚ׂẴ\[ƒXƒtƒ@ƒCƒ‹‚ŃCƒ“ƒNƒ‹[ƒh‚·‚ׂ«ƒwƒbƒ_ƒtƒ@ƒC
    50  *  ƒ‹DŠeŽí‚̃J[ƒlƒ‹‚âƒ\ƒtƒgƒEƒFƒA•”•i‚Å‹¤’Ê‚É—p‚¢‚邱‚Æ‚ð‘z’肵‚Ä‚¢
    51  *  ‚éDTOPPERS‚ÌŠeŽí‚̃J[ƒlƒ‹‚âƒ\ƒtƒgƒEƒFƒA•”•i‚Å‹¤’Ê‚É—p‚¢‚éƒf[ƒ^Œ^C
    52  *  ’萔Cƒ}ƒNƒ‚Ì’è‹`‚È‚Ç‚ðŠÜ‚ށD
    53  *
    54  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
    55  *  ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­D‚±‚ê‚É‚æ‚èCƒ}ƒNƒ’è‹`ˆÈŠO‚ð
    56  *  œ‚­‚悤‚É‚È‚Á‚Ä‚¢‚éD
    57  *
    58  *  ‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é‘O‚ɃCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚¨‚­‚ׂ«ƒtƒ@ƒCƒ‹
    59  *  ‚Í‚È‚¢D
     43 *              TOPPERS共通ヘッダファイル
     44 *
     45 *  TOPPERS関連のすべてのソースファイルでインクルードすべきヘッダファイ
     46 *  ル.各種のカーネルやソフトウェア部品で共通に用いることを想定してい
     47 *  る.TOPPERSの各種のカーネルやソフトウェア部品で共通に用いるデータ型,
     48 *  定数,マクロの定義などを含む.
     49 *
     50 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     51 *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
     52 *  除くようになっている.
     53 *
     54 *  このファイルをインクルードする前にインクルードしておくべきファイル
     55 *  はない.
    6056 */
    6157
     
    6864
    6965/*
    70  *  ƒ^[ƒQƒbƒgˆË‘¶•”
     66 *  ターゲット依存部
    7167 */
    7268#include "target_stddef.h"
    7369
    7470/*
    75  *  CŒ¾Œê/EC++‚Åthrow()‚ɑΏˆ‚·‚邽‚ß‚Ì’è‹`
     71 *  C言語/EC++でthrow()に対処するための定義
    7672 */
    7773#if !defined(__cplusplus) || defined(__embedded_cplusplus)
     
    8278
    8379/*
    84  *  ƒ^[ƒQƒbƒgˆË‘¶‚̃f[ƒ^Œ^‚̃}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     80 *  ターゲット依存のデータ型のマクロのデフォルト定義
    8581 */
    8682#ifndef TOPPERS_bool
    87 #define TOPPERS_bool    int                             /* ƒu[ƒ‹Œ^ */
     83#define TOPPERS_bool    int                             /* ブール型 */
    8884#endif /* TOPPERS_bool */
    8985
    9086#ifndef TOPPERS_size
    91 #define TOPPERS_size    uintptr_t               /* ƒTƒCƒYŒ^ */
     87#define TOPPERS_size    uintptr_t               /* サイズ型 */
    9288#endif /* TOPPERS_size */
    9389
     
    9591struct TOPPERS_dummy_t { int TOPPERS_dummy_field; };
    9692typedef void                    (*TOPPERS_fp_t)(struct TOPPERS_dummy_t);
    97 #define TOPPERS_fp              TOPPERS_fp_t    /* ƒvƒƒOƒ‰ƒ€‚Ì‹N“®”Ô’n */
     93#define TOPPERS_fp              TOPPERS_fp_t    /* プログラムの起動番地 */
    9894#endif /* TOPPERS_fp */
    9995
    10096/*
    101  *  ‹¤’ʃf[ƒ^Œ^
    102  */
    103 typedef TOPPERS_bool    bool_t;         /* ^‹U’l */
    104 
    105 typedef signed int              int_t;          /* Ž©‘R‚ȃTƒCƒY‚Ì•„†•t‚«®” */
    106 typedef unsigned int    uint_t;         /* Ž©‘R‚ȃTƒCƒY‚Ì•„†–³‚µ®” */
    107 
    108 typedef signed long             long_t;         /* ’·‚߂̃TƒCƒY‚Ì•„†•t‚«®” */
    109 typedef unsigned long   ulong_t;        /* ’·‚߂̃TƒCƒY‚Ì•„†–³‚µ®” */
    110 
    111 typedef int_t                   FN;                     /* ‹@”\ƒR[ƒh */
    112 typedef int_t                   ER;                     /* ƒGƒ‰[ƒR[ƒh */
    113 typedef int_t                   ID;                     /* ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ† */
    114 typedef uint_t                  ATR;            /* ƒIƒuƒWƒFƒNƒg‚Ì‘®« */
    115 typedef uint_t                  STAT;           /* ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô */
    116 typedef uint_t                  MODE;           /* ƒT[ƒrƒXƒR[ƒ‹‚Ì“®ìƒ‚[ƒh */
    117 typedef int_t                   PRI;            /* —Dæ“x */
    118 typedef TOPPERS_size    SIZE;           /* ƒƒ‚ƒŠ—̈æ‚̃TƒCƒY */
    119 
    120 typedef int_t                   TMO;            /* ƒ^ƒCƒ€ƒAƒEƒgŽw’è */
    121 typedef uint_t                  RELTIM;         /* ‘Š‘ÎŽžŠÔ */
    122 typedef ulong_t                 SYSTIM;         /* ƒVƒXƒeƒ€Žž */
    123 typedef ulong_t                 SYSUTM;         /* «”\•]‰¿—pƒVƒXƒeƒ€Žž */
    124 
    125 typedef TOPPERS_fp              FP;                     /* ƒvƒƒOƒ‰ƒ€‚Ì‹N“®”Ô’n */
    126 
    127 typedef int_t                   ER_BOOL;        /* ƒGƒ‰[ƒR[ƒh‚Ü‚½‚͐^‹U’l */
    128 typedef int_t                   ER_ID;          /* ƒGƒ‰[ƒR[ƒh‚Ü‚½‚ÍID”ԍ† */
    129 typedef int_t                   ER_UINT;        /* ƒGƒ‰[ƒR[ƒh‚Ü‚½‚Í•„†–³‚µ®” */
    130 
    131 typedef uintptr_t               MB_T;           /* ŠÇ——̈æ‚ðŠm•Û‚·‚邽‚߂̃f[ƒ^Œ^ */
    132 
    133 typedef uint32_t                ACPTN;          /* ƒAƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
    134 typedef struct acvct {                          /* ƒAƒNƒZƒX‹–‰ÂƒxƒNƒ^ */
    135         ACPTN           acptn1;                         /* ’ʏ푀ì1‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
    136         ACPTN           acptn2;                         /* ’ʏ푀ì2‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
    137         ACPTN           acptn3;                         /* ŠÇ—‘€ì‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
    138         ACPTN           acptn4;                         /* ŽQÆ‘€ì‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
     97 *  共通データ型
     98 */
     99typedef TOPPERS_bool    bool_t;         /* 真偽値 */
     100
     101typedef signed int              int_t;          /* 自然なサイズの符号付き整数 */
     102typedef unsigned int    uint_t;         /* 自然なサイズの符号無し整数 */
     103
     104typedef signed long             long_t;         /* 長めのサイズの符号付き整数 */
     105typedef unsigned long   ulong_t;        /* 長めのサイズの符号無し整数 */
     106
     107typedef int_t                   FN;                     /* 機能コード */
     108typedef int_t                   ER;                     /* エラーコード */
     109typedef int_t                   ID;                     /* オブジェクトのID番号 */
     110typedef uint_t                  ATR;            /* オブジェクトの属性 */
     111typedef uint_t                  STAT;           /* オブジェクトの状態 */
     112typedef uint_t                  MODE;           /* サービスコールの動作モード */
     113typedef int_t                   PRI;            /* 優先度 */
     114typedef TOPPERS_size    SIZE;           /* メモリ領域のサイズ */
     115
     116typedef int_t                   TMO;            /* タイムアウト指定 */
     117typedef uint_t                  RELTIM;         /* 相対時間 */
     118typedef ulong_t                 SYSTIM;         /* システム時刻 */
     119typedef ulong_t                 SYSUTM;         /* 性能評価用システム時刻 */
     120
     121typedef TOPPERS_fp              FP;                     /* プログラムの起動番地 */
     122
     123typedef int_t                   ER_BOOL;        /* エラーコードまたは真偽値 */
     124typedef int_t                   ER_ID;          /* エラーコードまたはID番号 */
     125typedef int_t                   ER_UINT;        /* エラーコードまたは符号無し整数 */
     126
     127typedef uintptr_t               MB_T;           /* 管理領域を確保するためのデータ型 */
     128
     129typedef uint32_t                ACPTN;          /* アクセス許可パターン */
     130typedef struct acvct {                          /* アクセス許可ベクタ */
     131        ACPTN           acptn1;                         /* 通常操作1のアクセス許可パターン */
     132        ACPTN           acptn2;                         /* 通常操作2のアクセス許可パターン */
     133        ACPTN           acptn3;                         /* 管理操作のアクセス許可パターン */
     134        ACPTN           acptn4;                         /* 参照操作のアクセス許可パターン */
    139135} ACVCT;
    140136
     
    142138
    143139/*
    144  *  ®”’萔‚ðì‚éƒ}ƒNƒ
     140 *  整数定数を作るマクロ
    145141 */
    146142#ifndef UINT_C
    147 #define UINT_C(val)             (val ## U)              /* uint_tŒ^‚̒萔‚ðì‚éƒ}ƒNƒ */
     143#define UINT_C(val)             (val ## U)              /* uint_t型の定数を作るマクロ */
    148144#endif /* UINT_C */
    149145
    150146#ifndef ULONG_C
    151 #define ULONG_C(val)    (val ## UL)             /* ulong_tŒ^‚̒萔‚ðì‚éƒ}ƒNƒ */
     147#define ULONG_C(val)    (val ## UL)             /* ulong_t型の定数を作るマクロ */
    152148#endif /* ULONG_C */
    153149
    154150/*
    155  *  ˆê”ʒ萔
     151 *  一般定数
    156152 */
    157153#ifndef NULL
    158 #define NULL            0                       /* –³Œøƒ|ƒCƒ“ƒ^ */
     154#define NULL            0                       /* 無効ポインタ */
    159155#endif /* NULL */
    160156
    161157#ifndef true
    162 #define true            1                       /* ^ */
     158#define true            1                       /* */
    163159#endif /* true */
    164160
    165161#ifndef false
    166 #define false           0                       /* ‹U */
     162#define false           0                       /* */
    167163#endif /* false */
    168164
    169 #define E_OK            0                       /* ³íI—¹ */
    170 
    171 /*
    172  *  ƒƒCƒ“ƒGƒ‰[ƒR[ƒh
    173  */
    174 #define E_SYS           (-5)            /* ƒVƒXƒeƒ€ƒGƒ‰[ */
    175 #define E_NOSPT         (-9)            /* –¢ƒTƒ|[ƒg‹@”\ */
    176 #define E_RSFN          (-10)           /* —\–ñ‹@”\ƒR[ƒh */
    177 #define E_RSATR         (-11)           /* —\–ñ‘®« */
    178 #define E_PAR           (-17)           /* ƒpƒ‰ƒ[ƒ^ƒGƒ‰[ */
    179 #define E_ID            (-18)           /* •s³ID”ԍ† */
    180 #define E_CTX           (-25)           /* ƒRƒ“ƒeƒLƒXƒgƒGƒ‰[ */
    181 #define E_MACV          (-26)           /* ƒƒ‚ƒŠƒAƒNƒZƒXˆá”½ */
    182 #define E_OACV          (-27)           /* ƒIƒuƒWƒFƒNƒgƒAƒNƒZƒXˆá”½ */
    183 #define E_ILUSE         (-28)           /* ƒT[ƒrƒXƒR[ƒ‹•s³Žg—p */
    184 #define E_NOMEM         (-33)           /* ƒƒ‚ƒŠ•s‘« */
    185 #define E_NOID          (-34)           /* ID”ԍ†•s‘« */
    186 #define E_NORES         (-35)           /* Ž‘Œ¹•s‘« */
    187 #define E_OBJ           (-41)           /* ƒIƒuƒWƒFƒNƒgó‘ÔƒGƒ‰[ */
    188 #define E_NOEXS         (-42)           /* ƒIƒuƒWƒFƒNƒg–¢¶¬ */
    189 #define E_QOVR          (-43)           /* ƒLƒ
    190 [ƒCƒ“ƒOƒI[ƒo[ƒtƒ[ */
    191 #define E_RLWAI         (-49)           /* ‘Ò‚¿ó‘Ô‚Ì‹­§‰ðœ */
    192 #define E_TMOUT         (-50)           /* ƒ|[ƒŠƒ“ƒOŽ¸”s‚Ü‚½‚̓^ƒCƒ€ƒAƒEƒg */
    193 #define E_DLT           (-51)           /* ‘Ò‚¿ƒIƒuƒWƒFƒNƒg‚̍폜 */
    194 #define E_CLS           (-52)           /* ‘Ò‚¿ƒIƒuƒWƒFƒNƒg‚̏ó‘ԕω» */
    195 #define E_WBLK          (-57)           /* ƒmƒ“ƒuƒƒbƒLƒ“ƒOŽó•t‚¯ */
    196 #define E_BOVR          (-58)           /* ƒoƒbƒtƒ@ƒI[ƒo[ƒtƒ[ */
    197 
    198 /*
    199  *  ƒIƒuƒWƒFƒNƒg‘®«
    200  */
    201 #define TA_NULL         UINT_C(0)       /* ƒIƒuƒWƒFƒNƒg‘®«‚ðŽw’肵‚È‚¢ */
    202 
    203 /*
    204  *  ƒ^ƒCƒ€ƒAƒEƒgŽw’è
    205  */
    206 #define TMO_POL         0                       /* ƒ|[ƒŠƒ“ƒO */
    207 #define TMO_FEVR        (-1)            /* ‰i‹v‘Ò‚¿ */
    208 #define TMO_NBLK        (-2)            /* ƒmƒ“ƒuƒƒbƒLƒ“ƒO */
    209 
    210 /*
    211  *  ƒAƒNƒZƒX‹–‰Âƒpƒ^[ƒ“
    212  */
    213 #define TACP_KERNEL             (0U)    /* ƒJ[ƒlƒ‹ƒhƒƒCƒ“‚¾‚¯‚ɃAƒNƒZƒX‚ð‹–‰Â */
    214 #define TACP_SHARED             (~0U)   /* ‚·‚ׂẴhƒƒCƒ“‚©‚çƒAƒNƒZƒX‚ð‹–‰Â */
    215 
    216 /*
    217  *  Œ^‚ÉŠÖ‚·‚éî•ñ‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
    218  *
    219  *  ˆÈ‰º‚ÌALIGN_TYPE‚Ì’è‹`‚́CƒAƒ‰ƒCƒ“ƒƒ“ƒg‚Ì’PˆÊ‚ª2‚̋Џæ‚Å‚ ‚邱‚Æ‚ð
    220  *  ‰¼’肵‚Ä‚¢‚éD
     165#define E_OK            0                       /* 正常終了 */
     166
     167/*
     168 *  メインエラーコード
     169 */
     170#define E_SYS           (-5)            /* システムエラー */
     171#define E_NOSPT         (-9)            /* 未サポート機能 */
     172#define E_RSFN          (-10)           /* 予約機能コード */
     173#define E_RSATR         (-11)           /* 予約属性 */
     174#define E_PAR           (-17)           /* パラメータエラー */
     175#define E_ID            (-18)           /* 不正ID番号 */
     176#define E_CTX           (-25)           /* コンテキストエラー */
     177#define E_MACV          (-26)           /* メモリアクセス違反 */
     178#define E_OACV          (-27)           /* オブジェクトアクセス違反 */
     179#define E_ILUSE         (-28)           /* サービスコール不正使用 */
     180#define E_NOMEM         (-33)           /* メモリ不足 */
     181#define E_NOID          (-34)           /* ID番号不足 */
     182#define E_NORES         (-35)           /* 資源不足 */
     183#define E_OBJ           (-41)           /* オブジェクト状態エラー */
     184#define E_NOEXS         (-42)           /* オブジェクト未生成 */
     185#define E_QOVR          (-43)           /* キューイングオーバーフロー */
     186#define E_RLWAI         (-49)           /* 待ち状態の強制解除 */
     187#define E_TMOUT         (-50)           /* ポーリング失敗またはタイムアウト */
     188#define E_DLT           (-51)           /* 待ちオブジェクトの削除 */
     189#define E_CLS           (-52)           /* 待ちオブジェクトの状態変化 */
     190#define E_WBLK          (-57)           /* ノンブロッキング受付け */
     191#define E_BOVR          (-58)           /* バッファオーバーフロー */
     192
     193/*
     194 *  オブジェクト属性
     195 */
     196#define TA_NULL         UINT_C(0)       /* オブジェクト属性を指定しない */
     197
     198/*
     199 *  タイムアウト指定
     200 */
     201#define TMO_POL         0                       /* ポーリング */
     202#define TMO_FEVR        (-1)            /* 永久待ち */
     203#define TMO_NBLK        (-2)            /* ノンブロッキング */
     204
     205/*
     206 *  アクセス許可パターン
     207 */
     208#define TACP_KERNEL             (0U)    /* カーネルドメインだけにアクセスを許可 */
     209#define TACP_SHARED             (~0U)   /* すべてのドメインからアクセスを許可 */
     210
     211/*
     212 *  型に関する情報を取り出すためのマクロ
     213 *
     214 *  以下のALIGN_TYPEの定義は,アラインメントの単位が2の巾乗であることを
     215 *  仮定している.
    221216 */
    222217#ifndef offsetof
     
    228223#endif /* alignof */
    229224
    230 #ifndef ALIGN_TYPE                              /* ƒAƒ‰ƒCƒ“ƒƒ“ƒg‚̃`ƒFƒbƒN */
     225#ifndef ALIGN_TYPE                              /* アラインメントのチェック */
    231226#define ALIGN_TYPE(addr, type) \
    232227                                                ((((uintptr_t)(addr)) & (alignof(type) - 1)) == 0U)
     
    234229
    235230/*
    236  *  assertƒ}ƒNƒ
     231 *  assertマクロ
    237232 */
    238233#undef assert
     
    249244
    250245/*
    251  *  ƒGƒ‰[ƒR[ƒh¶¬E•ª‰ðƒ}ƒNƒ
    252  *
    253  *  ˆÈ‰º‚̃}ƒNƒ’è‹`‚́C•„†•t‚«®”‚ª2‚̕␔‚Å•\Œ»‚³‚ê‚Ä‚¨‚èC‰EƒVƒtƒg
    254  *  ‰‰ŽZŽqi>>j‚ªŽZpƒVƒtƒg‚³‚ê‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD‚»‚¤‚Å‚È‚¢ŠJ”­ŠÂ
    255  *  ‹«‚ł́Ctarget_stddef.h‚Å‚±‚ê‚ç‚Ì’è‹`‚ðã‘‚«‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢D
    256  *
    257  *  MERCDƒ}ƒNƒ‚Ì’è‹`‚́CƒƒCƒ“ƒGƒ‰[ƒR[ƒh‚ª•‰‚Å‚ ‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD
    258  *  ‚»‚¤‚Å‚È‚¢ê‡C2‚‚̒è‹`‚ªˆê’v‚µ‚È‚­‚È‚éD
     246 *  エラーコード生成・分解マクロ
     247 *
     248 *  以下のマクロ定義は,符号付き整数が2の補数で表現されており,右シフト
     249 *  演算子(>>)が算術シフトされることを仮定している.そうでない開発環
     250 *  境では,target_stddef.hでこれらの定義を上書きしなければならない.
     251 *
     252 *  MERCDマクロの定義は,メインエラーコードが負であることを仮定している.
     253 *  そうでない場合,2つの定義が一致しなくなる.
    259254 */
    260255#ifndef ERCD
     
    276271
    277272/*
    278  *  ƒAƒNƒZƒX‹–‰Âƒpƒ^[ƒ“¶¬ƒ}ƒNƒ
    279  */
    280 #define TACP(domid)             (1U << ((domid) - 1))   /* domid‚¾‚¯‚ɃAƒNƒZƒX‚ð‹–‰Â */
    281 
    282 /*
    283  *  ‘Š‘ÎŽžŠÔiRELTIMj‚ÉŽw’è‚Å‚«‚éÅ‘å’l
     273 *  アクセス許可パターン生成マクロ
     274 */
     275#define TACP(domid)             (1U << ((domid) - 1))   /* domidだけにアクセスを許可 */
     276
     277/*
     278 *  相対時間(RELTIM)に指定できる最大値
    284279 */
    285280#if UINT_MAX < LONG_MAX
  • UsbWattMeter/trunk/asp_dcre/include/t_stdlib.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              Šî–{“I‚ȃ‰ƒCƒuƒ‰ƒŠŠÖ”
     43 *              基本的なライブラリ関数
    4844 */
    4945
     
    5652
    5753/*
    58  *  ƒGƒ‰[ƒƒbƒZ[ƒW•¶Žš—ñ‚ð•Ô‚·ŠÖ”
     54 *  エラーメッセージ文字列を返す関数
    5955 *
    60  *  ercd‚ÅŽw’肳‚ꂽƒGƒ‰[ƒR[ƒh‚̃ƒCƒ“ƒGƒ‰[ƒR[ƒh‚Ì–¼ÌiE_PARC
    61  *  E_OBJ‚Ȃǁj‚Ì•¶Žš—ñ‚ð•Ô‚·ŠÖ”D
     56 *  ercdで指定されたエラーコードのメインエラーコードの名称(E_PAR,
     57 *  E_OBJなど)の文字列を返す関数.
    6258 */
    6359extern const char       *itron_strerror(ER ercd) throw();
    6460
    6561/*
    66  *  ƒGƒ‰[ƒƒbƒZ[ƒW‚̃ƒOo—Í
     62 *  エラーメッセージのログ出力
    6763 *
    68  *  ƒT[ƒrƒXƒR[ƒ‹‚ªƒGƒ‰[‚ð•Ô‚µ‚½ê‡‚ɁC‚»‚̃tƒ@ƒCƒ‹–¼Cs”ԍ†CƒƒC
    69  *  ƒ“ƒGƒ‰[ƒR[ƒh“™‚ð•\Ž¦‚·‚邽‚߂̊֐”D
     64 *  サービスコールがエラーを返した場合に,そのファイル名,行番号,メイ
     65 *  ンエラーコード等を表示するための関数.
    7066 */
    7167extern void             t_perror(uint_t prio, const char *file, int_t line,
  • UsbWattMeter/trunk/asp_dcre/include/t_syslog.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒVƒXƒeƒ€ƒƒOo—Í‚ðs‚¤‚½‚ß‚Ì’è‹`
    49  *
    50  *  ƒVƒXƒeƒ€ƒƒOƒT[ƒrƒX‚́CƒVƒXƒeƒ€‚̃ƒOî•ñ‚ðo—Í‚·‚邽‚߂̃T[ƒrƒX
    51  *  ‚Å‚ ‚éDƒJ[ƒlƒ‹‚©‚ç‚̃ƒOî•ñ‚̏o—Í‚É‚à—p‚¢‚邽‚߁C“à•”‚Å‘Ò‚¿ó‘Ô
    52  *  ‚É‚Í‚¢‚邱‚Æ‚Í‚È‚¢D
    53  *
    54  *  ƒƒOî•ñ‚́CƒJ[ƒlƒ‹“à‚̃ƒOƒoƒbƒtƒ@‚ɏ‘‚«ž‚Þ‚©C’჌ƒxƒ‹‚Ì•¶Žšo
    55  *  —͊֐”‚ð—p‚¢‚ďo—Í‚·‚éD‚Ç‚¿‚ç‚ðŽg‚¤‚©‚́CŠg’£ƒT[ƒrƒXƒR[ƒ‹‚Ő؂è
    56  *  Š·‚¦‚邱‚Æ‚ª‚Å‚«‚éD
    57  *
    58  *  ƒƒOƒoƒbƒtƒ@—̈悪ƒI[ƒoƒtƒ[‚µ‚½ê‡‚ɂ́CŒÃ‚¢ƒƒOî•ñ‚ðÁ‚µ‚ďã
    59  *  ‘‚«‚·‚éD
    60  *
    61  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
    62  *  ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­‚±‚ƂŁCƒ}ƒNƒ’è‹`ˆÈŠO‚Ì‹Lq‚ð
    63  *  œ‚­‚±‚Æ‚ª‚Å‚«‚éD
    64  *
    65  *  ‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é‘O‚ɁCt_stddef.h‚ðƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚¨
    66  *  ‚­‚±‚Æ‚ª•K—v‚Å‚ ‚éD
     44 *              システムログ出力を行うための定義
     45 *
     46 *  システムログサービスは,システムのログ情報を出力するためのサービス
     47 *  である.カーネルからのログ情報の出力にも用いるため,内部で待ち状態
     48 *  にはいることはない.
     49 *
     50 *  ログ情報は,カーネル内のログバッファに書き込むか,低レベルの文字出
     51 *  力関数を用いて出力する.どちらを使うかは,拡張サービスコールで切り
     52 *  換えることができる.
     53 *
     54 *  ログバッファ領域がオーバフローした場合には,古いログ情報を消して上
     55 *  書きする.
     56 *
     57 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     58 *  は,TOPPERS_MACRO_ONLYを定義しておくことで,マクロ定義以外の記述を
     59 *  除くことができる.
     60 *
     61 *  このファイルをインクルードする前に,t_stddef.hをインクルードしてお
     62 *  くことが必要である.
    6763 */
    6864
     
    7571
    7672/*
    77  *  ƒƒOî•ñ‚ÌŽí•Ê‚Ì’è‹`
    78  */
    79 #define LOG_TYPE_COMMENT        UINT_C(0x01)    /* ƒRƒƒ“ƒg */
    80 #define LOG_TYPE_ASSERT         UINT_C(0x02)    /* ƒAƒT[ƒVƒ‡ƒ“‚ÌŽ¸”s */
    81 
    82 #define LOG_TYPE_INH            UINT_C(0x11)    /* Š„ž‚݃nƒ“ƒhƒ‰ */
    83 #define LOG_TYPE_ISR            UINT_C(0x12)    /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ */
    84 #define LOG_TYPE_CYC            UINT_C(0x13)    /* ŽüŠúƒnƒ“ƒhƒ‰ */
    85 #define LOG_TYPE_ALM            UINT_C(0x14)    /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ */
    86 #define LOG_TYPE_OVR            UINT_C(0x15)    /* ƒI[ƒoƒ‰ƒ“ƒnƒ“ƒhƒ‰ */
    87 #define LOG_TYPE_EXC            UINT_C(0x16)    /* CPU—áŠOƒnƒ“ƒhƒ‰ */
    88 #define LOG_TYPE_TEX            UINT_C(0x17)    /* ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“ */
    89 #define LOG_TYPE_TSKSTAT        UINT_C(0x18)    /* ƒ^ƒXƒNó‘ԕω» */
    90 #define LOG_TYPE_DSP            UINT_C(0x19)    /* ƒfƒBƒXƒpƒbƒ`ƒƒ */
    91 #define LOG_TYPE_SVC            UINT_C(0x1a)    /* ƒT[ƒrƒXƒR[ƒ‹ */
    92 
    93 #define LOG_ENTER                       UINT_C(0x00)    /* “üŒû^ŠJŽn */
    94 #define LOG_LEAVE                       UINT_C(0x80)    /* oŒû^I—¹ */
    95 
    96 /*
    97  *  ƒƒOî•ñ‚̏d—v“x‚Ì’è‹`
    98  */
    99 #define LOG_EMERG                       UINT_C(0)               /* ƒVƒƒƒbƒgƒ_ƒEƒ“‚É’l‚·‚éƒGƒ‰[ */
     73 *  ログ情報の種別の定義
     74 */
     75#define LOG_TYPE_COMMENT        UINT_C(0x01)    /* コメント */
     76#define LOG_TYPE_ASSERT         UINT_C(0x02)    /* アサーションの失敗 */
     77
     78#define LOG_TYPE_INH            UINT_C(0x11)    /* 割込みハンドラ */
     79#define LOG_TYPE_ISR            UINT_C(0x12)    /* 割込みサービスルーチン */
     80#define LOG_TYPE_CYC            UINT_C(0x13)    /* 周期ハンドラ */
     81#define LOG_TYPE_ALM            UINT_C(0x14)    /* アラームハンドラ */
     82#define LOG_TYPE_OVR            UINT_C(0x15)    /* オーバランハンドラ */
     83#define LOG_TYPE_EXC            UINT_C(0x16)    /* CPU例外ハンドラ */
     84#define LOG_TYPE_TEX            UINT_C(0x17)    /* タスク例外処理ルーチン */
     85#define LOG_TYPE_TSKSTAT        UINT_C(0x18)    /* タスク状態変化 */
     86#define LOG_TYPE_DSP            UINT_C(0x19)    /* ディスパッチャ */
     87#define LOG_TYPE_SVC            UINT_C(0x1a)    /* サービスコール */
     88
     89#define LOG_ENTER                       UINT_C(0x00)    /* 入口/開始 */
     90#define LOG_LEAVE                       UINT_C(0x80)    /* 出口/終了 */
     91
     92/*
     93 *  ログ情報の重要度の定義
     94 */
     95#define LOG_EMERG                       UINT_C(0)               /* シャットダウンに値するエラー */
    10096#define LOG_ALERT                       UINT_C(1)
    10197#define LOG_CRIT                        UINT_C(2)
    102 #define LOG_ERROR                       UINT_C(3)               /* ƒVƒXƒeƒ€ƒGƒ‰[ */
    103 #define LOG_WARNING                     UINT_C(4)               /* ŒxƒƒbƒZ[ƒW */
     98#define LOG_ERROR                       UINT_C(3)               /* システムエラー */
     99#define LOG_WARNING                     UINT_C(4)               /* 警告メッセージ */
    104100#define LOG_NOTICE                      UINT_C(5)
    105101#define LOG_INFO                        UINT_C(6)
    106 #define LOG_DEBUG                       UINT_C(7)               /* ƒfƒoƒbƒO—pƒƒbƒZ[ƒW */
     102#define LOG_DEBUG                       UINT_C(7)               /* デバッグ用メッセージ */
    107103
    108104#ifndef TOPPERS_MACRO_ONLY
    109105
    110106/*
    111  *  ƒƒOî•ñ‚̃f[ƒ^\‘¢
     107 *  ログ情報のデータ構造
    112108 */
    113109
     
    115111
    116112typedef struct {
    117         uint_t          logtype;                                /* ƒƒOî•ñ‚ÌŽí•Ê */
    118         SYSTIM          logtim;                                 /* ƒƒOŽž */
    119         intptr_t        loginfo[TMAX_LOGINFO];  /* ‚»‚Ì‘¼‚̃ƒOî•ñ */
     113        uint_t          logtype;                                /* ログ情報の種別 */
     114        SYSTIM          logtim;                                 /* ログ時刻 */
     115        intptr_t        loginfo[TMAX_LOGINFO];  /* その他のログ情報 */
    120116} SYSLOG;
    121117
    122118/*
    123  *  ƒƒOî•ñ‚̏d—v“x‚̃rƒbƒgƒ}ƒbƒv‚ðì‚邽‚߂̃}ƒNƒ
     119 *  ログ情報の重要度のビットマップを作るためのマクロ
    124120 */
    125121#define LOG_MASK(prio)          (1U << (prio))
     
    127123
    128124/*
    129  *  ƒpƒPƒbƒgŒ`Ž®‚Ì’è‹`
     125 *  パケット形式の定義
    130126 */
    131127typedef struct t_syslog_rlog {
    132         uint_t  count;          /* ƒƒOƒoƒbƒtƒ@’†‚̃ƒO‚̐” */
    133         uint_t  lost;           /* Ž¸‚í‚ꂽƒƒO‚̐” */
    134         uint_t  logmask;        /* ƒƒOƒoƒbƒtƒ@‚É‹L˜^‚·‚ׂ«d—v“x */
    135         uint_t  lowmask;        /* ’჌ƒxƒ‹o—Í‚·‚ׂ«d—v“x */
     128        uint_t  count;          /* ログバッファ中のログの数 */
     129        uint_t  lost;           /* 失われたログの数 */
     130        uint_t  logmask;        /* ログバッファに記録すべき重要度 */
     131        uint_t  lowmask;        /* 低レベル出力すべき重要度 */
    136132} T_SYSLOG_RLOG;
    137133
    138134/*
    139  *  ƒƒOî•ñ‚ðo—Í‚·‚邽‚߂̃‰ƒCƒuƒ‰ƒŠŠÖ”
     135 *  ログ情報を出力するためのライブラリ関数
    140136 */
    141137
     
    233229
    234230/*
    235  *  ƒƒOî•ñiƒRƒƒ“ƒgj‚ðo—Í‚·‚邽‚߂̃‰ƒCƒuƒ‰ƒŠŠÖ”ivasyslog.cj
     231 *  ログ情報(コメント)を出力するためのライブラリ関数(vasyslog.c)
    236232 */
    237233extern void syslog(uint_t prio, const char *format, ...) throw();
     
    241237
    242238/*
    243  *  ƒVƒXƒeƒ€ƒƒOo—Í‚ð—}Ž~‚·‚éê‡
     239 *  システムログ出力を抑止する場合
    244240 */
    245241
     
    291287
    292288/*
    293  *  ƒƒOî•ñiƒRƒƒ“ƒgj‚ðo—Í‚·‚邽‚߂̃}ƒNƒ
    294  *
    295  *  format‚¨‚æ‚ь㑱‚̈ø”‚©‚çì¬‚µ‚½ƒƒbƒZ[ƒW‚ðCd‘å“xprio‚эƒOî
    296  *  •ñ‚Æ‚µ‚ďo—Í‚·‚邽‚߂̃}ƒNƒDarg1`argn‚Íintptr_tŒ^‚ɃLƒƒƒXƒg‚·‚é
    297  *  ‚½‚߁Cintptr_tŒ^‚ÉŒ^•ÏŠ·‚Å‚«‚é”CˆÓ‚ÌŒ^‚Å‚æ‚¢D
     289 *  ログ情報(コメント)を出力するためのマクロ
     290 *
     291 *  formatおよび後続の引数から作成したメッセージを,重大度prioでログ情
     292 *  報として出力するためのマクロ.arg1〜argnはintptr_t型にキャストする
     293 *  ため,intptr_t型に型変換できる任意の型でよい.
    298294 */
    299295
     
    324320
    325321/*
    326  *  ƒƒOî•ñiƒAƒT[ƒVƒ‡ƒ“‚ÌŽ¸”sj‚ðo—Í‚·‚邽‚߂̃}ƒNƒ
     322 *  ログ情報(アサーションの失敗)を出力するためのマクロ
    327323 */
    328324#ifndef TOPPERS_assert_fail
  • UsbWattMeter/trunk/asp_dcre/include/test_lib.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              ƒeƒXƒgƒvƒƒOƒ‰ƒ€—pƒ‰ƒCƒuƒ‰ƒŠ
     41 *              テストプログラム用ライブラリ
    4642 */
    4743
     
    5652
    5753/*
    58  *  ƒ^[ƒQƒbƒgˆË‘¶‚Ì’è‹`
     54 *  ターゲット依存の定義
    5955 */
    6056#include "target_test.h"
    6157
    6258/*
    63  *      Ž©ŒÈf’fŠÖ”‚ÌŒ^
     59 *      自己診断関数の型
    6460 */
    6561typedef ER (*BIT_FUNC)(void);
    6662
    6763/*
    68  *      Ž©ŒÈf’fŠÖ”‚̐ݒè
     64 *      自己診断関数の設定
    6965 */
    7066extern void     set_bit_func(BIT_FUNC bit_func);
    7167
    7268/*
    73  *  ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ÌŠJŽn
     69 *  テストプログラムの開始
    7470 */
    7571extern void     test_start(char *progname);
    7672
    7773/*
    78  *  ƒVƒXƒeƒ€ƒƒO‚̏o—͏ˆ—
     74 *  システムログの出力処理
    7975 */
    8076extern void     syslog_flush(void);
    8177
    8278/*
    83  *      ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̏I—¹
     79 *      テストプログラムの終了
    8480 */
    8581extern void     test_finish(void);
    8682
    8783/*
    88  *      ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
     84 *      チェックポイント
    8985 */
    9086extern void     check_point(uint_t count);
    9187
    9288/*
    93  *      Š®—¹ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
     89 *      完了チェックポイント
    9490 */
    9591extern void     check_finish(uint_t count);
    9692
    9793/*
    98  *      ðŒƒ`ƒFƒbƒN
     94 *      条件チェック
    9995 */
    10096extern void     _check_assert(const char *expr, const char *file, int_t line);
     
    10399
    104100/*
    105  *      ƒGƒ‰[ƒR[ƒhƒ`ƒFƒbƒN
     101 *      エラーコードチェック
    106102 */
    107103extern void     _check_ercd(ER ercd, const char *file, int_t line);
     
    111107
    112108/*
    113  *      ƒVƒXƒeƒ€ó‘Ԃ̃`ƒFƒbƒN
     109 *      システム状態のチェック
    114110 */
    115111Inline void
     
    124120        if (!loc) {
    125121                /*
    126                  *  IPM‚̃`ƒFƒbƒN‚́CCPUƒƒbƒN‰ðœó‘Ԃ̏ꍇ‚ɂ̂ݍs‚¤D
     122                 *  IPMのチェックは,CPUロック解除状態の場合にのみ行う.
    127123                 */
    128124                ercd = get_ipm(&intpri);
     
    136132
    137133/*
    138  *      ƒVƒXƒeƒ€ó‘Ԃ̃`ƒFƒbƒNi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     134 *      システム状態のチェック(非タスクコンテキスト用)
    139135 */
    140136Inline void
  • UsbWattMeter/trunk/asp_dcre/kernel/alarm.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹@”\
     44 *              アラームハンドラ機能
    4945 */
    5046
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_ALM_ENTER
     
    121117
    122118/*
    123  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̐”
     119 *  アラームハンドラの数
    124120 */
    125121#define tnum_alm        ((uint_t)(tmax_almid - TMIN_ALMID + 1))
     
    127123
    128124/*
    129  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ID‚©‚çƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     125 *  アラームハンドラIDからアラームハンドラ管理ブロックを取り出すためのマクロ
    130126 */
    131127#define INDEX_ALM(almid)        ((uint_t)((almid) - TMIN_ALMID))
     
    135131
    136132/*
    137  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     133 *  使用していないアラームハンドラ管理ブロックのリスト
    138134 *
    139  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̐擪‚ɂ̓Lƒ
    140 [‚ɂ‚Ȃ®‚½‚߂̗̈悪‚È
    141  *  ‚¢‚½‚߁Cƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒNitmevtbj‚̗̈æ‚ð—p‚¢‚éD
     135 *  アラームハンドラ管理ブロックの先頭にはキューにつなぐための領域がな
     136 *  いため,タイムイベントブロック(tmevtb)の領域を用いる.
    142137 */
    143138QUEUE   free_almcb;
    144139
    145140/*
    146  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹@”\‚̏‰Šú‰»
     141 *  アラームハンドラ機能の初期化
    147142 */
    148143void
     
    171166
    172167/*
    173  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̐¶¬
     168 *  アラームハンドラの生成
    174169 */
    175170#ifdef TOPPERS_acre_alm
     
    213208
    214209/*
    215  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̍폜
     210 *  アラームハンドラの削除
    216211 */
    217212#ifdef TOPPERS_del_alm
     
    257252
    258253/*
    259  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ìŠJŽn
     254 *  アラームハンドラの動作開始
    260255 */
    261256#ifdef TOPPERS_sta_alm
     
    298293
    299294/*
    300  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ìŠJŽni”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     295 *  アラームハンドラの動作開始(非タスクコンテキスト用)
    301296 */
    302297#ifdef TOPPERS_ista_alm
     
    339334
    340335/*
    341  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ì’âŽ~
     336 *  アラームハンドラの動作停止
    342337 */
    343338#ifdef TOPPERS_stp_alm
     
    375370
    376371/*
    377  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ì’âŽ~i”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     372 *  アラームハンドラの動作停止(非タスクコンテキスト用)
    378373 */
    379374#ifdef TOPPERS_istp_alm
     
    411406
    412407/*
    413  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̏ó‘ÔŽQÆ
     408 *  アラームハンドラの状態参照
    414409 */
    415410#ifdef TOPPERS_ref_alm
     
    450445
    451446/*
    452  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹N“®ƒ‹[ƒ`ƒ“
     447 *  アラームハンドラ起動ルーチン
    453448 */
    454449#ifdef TOPPERS_almcal
     
    460455
    461456        /*
    462          *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ð’âŽ~ó‘Ô‚É‚·‚éD
     457         *  アラームハンドラを停止状態にする.
    463458         */
    464459        p_almcb->almsta = false;
    465460
    466461        /*
    467          *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ðCCPUƒƒbƒN‰ðœó‘ԂŌĂяo‚·D
     462         *  アラームハンドラを,CPUロック解除状態で呼び出す.
    468463         */
    469464        saved_ipm = i_get_ipm();
  • UsbWattMeter/trunk/asp_dcre/kernel/alarm.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹@”\
     44 *              アラームハンドラ機能
    4945 */
    5046
     
    5652
    5753/*
    58  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     54 *  アラームハンドラ初期化ブロック
    5955 */
    6056typedef struct alarm_handler_initialization_block {
    61         ATR                     almatr;                 /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‘®« */
    62         intptr_t        exinf;                  /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ÌŠg’£î•ñ */
    63         ALMHDR          almhdr;                 /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì‹N“®”Ô’n */
     57        ATR                     almatr;                 /* アラームハンドラ属性 */
     58        intptr_t        exinf;                  /* アラームハンドラの拡張情報 */
     59        ALMHDR          almhdr;                 /* アラームハンドラの起動番地 */
    6460} ALMINIB;
    6561
    6662/*
    67  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN
     63 *  アラームハンドラ管理ブロック
    6864 */
    6965typedef struct alarm_handler_control_block {
    70         const ALMINIB *p_alminib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    71         bool_t          almsta;                 /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
    72         TMEVTB          tmevtb;                 /* ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN */
     66        const ALMINIB *p_alminib;       /* 初期化ブロックへのポインタ */
     67        bool_t          almsta;                 /* アラームハンドラの動作状態 */
     68        TMEVTB          tmevtb;                 /* タイムイベントブロック */
    7369} ALMCB;
    7470
    7571/*
    76  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     72 *  使用していないアラームハンドラ管理ブロックのリスト
    7773 */
    7874extern QUEUE    free_almcb;
    7975
    8076/*
    81  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ID‚̍őå’likernel_cfg.cj
     77 *  アラームハンドラIDの最大値(kernel_cfg.c)
    8278 */
    8379extern const ID tmax_almid;
     
    8581
    8682/*
    87  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     83 *  アラームハンドラ初期化ブロックのエリア(kernel_cfg.c)
    8884 */
    8985extern const ALMINIB    alminib_table[];
     
    9187
    9288/*
    93  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     89 *  アラームハンドラ管理ブロックのエリア(kernel_cfg.c)
    9490 */
    9591extern ALMCB    almcb_table[];
    9692
    9793/*
    98  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚©‚çƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ID‚ðŽæ‚èo‚·‚½‚ß‚Ì
    99  *  ƒ}ƒNƒ
     94 *  アラームハンドラ管理ブロックからアラームハンドラIDを取り出すための
     95 *  マクロ
    10096 */
    10197#define ALMID(p_almcb)  ((ID)(((p_almcb) - almcb_table) + TMIN_ALMID))
    10298
    10399/*
    104  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹@”\‚̏‰Šú‰»
     100 *  アラームハンドラ機能の初期化
    105101 */
    106102extern void     initialize_alarm(void);
    107103
    108104/*
    109  *  ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹N“®ƒ‹[ƒ`ƒ“
     105 *  アラームハンドラ起動ルーチン
    110106 */
    111107extern void     call_almhdr(ALMCB *p_almcb);
  • UsbWattMeter/trunk/asp_dcre/kernel/allfunc.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
    35  *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
     31 *
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ‚·‚ׂĂ̊֐”‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚ß‚Ì’è‹`
     42 *              すべての関数をコンパイルするための定義
    4743 */
    4844
  • UsbWattMeter/trunk/asp_dcre/kernel/check.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒGƒ‰[ƒ`ƒFƒbƒN—pƒ}ƒNƒ
     44 *              エラーチェック用マクロ
    4945 */
    5046
     
    5349
    5450/*
    55  *  —\–ñ‘®«ƒGƒ‰[‚̃`ƒFƒbƒNiE_PARj
     51 *  予約属性エラーのチェック(E_PAR)
    5652 */
    5753#define CHECK_RSATR(atr, valid_atr) do {                                        \
     
    6359
    6460/*
    65  *  —Dæ“x‚͈̔͂̔»’è
     61 *  優先度の範囲の判定
    6662 */
    6763#define VALID_TPRI(tpri)        (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
     
    8076
    8177/*
    82  *  ƒ^ƒXƒN—Dæ“x‚̃`ƒFƒbƒNiE_PARj
     78 *  タスク優先度のチェック(E_PAR)
    8379 */
    8480#define CHECK_TPRI(tpri) do {                                                           \
     
    104100
    105101/*
    106  *  ƒf[ƒ^—Dæ“x‚̃`ƒFƒbƒNiE_PARj
     102 *  データ優先度のチェック(E_PAR)
    107103 */
    108104#define CHECK_DPRI(dpri) do {                                                           \
     
    114110
    115111/*
    116  *  ƒƒbƒZ[ƒW—Dæ“x‚̃`ƒFƒbƒNiE_PARj
     112 *  メッセージ優先度のチェック(E_PAR)
    117113 */
    118114#define CHECK_MPRI(mpri) do {                                                           \
     
    124120
    125121/*
    126  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x‚̃`ƒFƒbƒNiE_PARj
     122 *  割込みサービスルーチン優先度のチェック(E_PAR)
    127123 */
    128124#define CHECK_ISRPRI(isrpri) do {                                                       \
     
    134130
    135131/*
    136  *  ƒ^ƒCƒ€ƒAƒEƒgŽw’è’l‚̃`ƒFƒbƒNiE_PARj
     132 *  タイムアウト指定値のチェック(E_PAR)
    137133 */
    138134#define CHECK_TMOUT(tmout) do {                                                         \
     
    144140
    145141/*
    146  *  Š„ž‚Ý—Dæ“x‚̃`ƒFƒbƒNiE_PARj
     142 *  割込み優先度のチェック(E_PAR)
    147143 */
    148144#define CHECK_INTPRI_CHGIPM(intpri) do {                                        \
     
    154150
    155151/*
    156  *  Š„ž‚ݔԍ†‚̃`ƒFƒbƒNiE_PARj
     152 *  割込み番号のチェック(E_PAR)
    157153 */
    158154#define CHECK_INTNO_CREISR(intno) do {                                          \
     
    171167
    172168/*
    173  *  ƒAƒ‰ƒCƒ“‚µ‚Ä‚¢‚é‚©‚Ì”»’è
     169 *  アラインしているかの判定
    174170 */
    175171#define ALIGNED(val, align)             ((((uintptr_t)(val)) & ((align) - 1U)) == 0U)
     
    206202
    207203/*
    208  *  NULL‚Å‚È‚¢‚±‚Ƃ̃`ƒFƒbƒN
     204 *  NULLでないことのチェック
    209205 */
    210206#ifdef CHECK_FUNC_NONNULL
     
    215211
    216212/*
    217  *  ŠÖ”‚̐擪”Ô’n‚̃`ƒFƒbƒNiE_PARj
     213 *  関数の先頭番地のチェック(E_PAR)
    218214 */
    219215#define CHECK_ALIGN_FUNC(func) do {                                                     \
     
    232228
    233229/*
    234  *  ƒXƒ^ƒbƒNƒTƒCƒY‚̃`ƒFƒbƒNiE_PARj
     230 *  スタックサイズのチェック(E_PAR)
    235231 */
    236232#define CHECK_ALIGN_STKSZ(stksz) do {                                           \
     
    242238
    243239/*
    244  *  ƒXƒ^ƒbƒN‚̐擪”Ô’n‚̃`ƒFƒbƒNiE_PARj
     240 *  スタックの先頭番地のチェック(E_PAR)
    245241 */
    246242#define CHECK_ALIGN_STACK(stack) do {                                           \
     
    252248
    253249/*
    254  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒNiE_PARj
     250 *  固定長メモリプール領域の先頭番地のチェック(E_PAR)
    255251 */
    256252#define CHECK_ALIGN_MPF(mpf) do {                                                       \
     
    262258
    263259/*
    264  *  ŠÇ——̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒNiE_PARj
     260 *  管理領域の先頭番地のチェック(E_PAR)
    265261 */
    266262#define CHECK_ALIGN_MB(mb) do {                                                         \
     
    272268
    273269/*
    274  *  ‚»‚Ì‘¼‚̃pƒ‰ƒ[ƒ^ƒGƒ‰[‚̃`ƒFƒbƒNiE_PARj
     270 *  その他のパラメータエラーのチェック(E_PAR)
    275271 */
    276272#define CHECK_PAR(exp) do {                                                                     \
     
    282278
    283279/*
    284  *  ƒIƒuƒWƒFƒNƒgID‚͈̔͂̔»’è
     280 *  オブジェクトIDの範囲の判定
    285281 */
    286282#define VALID_TSKID(tskid)      (TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
     
    296292
    297293/*
    298  *  ƒIƒuƒWƒFƒNƒgID‚̃`ƒFƒbƒNiE_IDj
     294 *  オブジェクトIDのチェック(E_ID)
    299295 */
    300296#define CHECK_TSKID(tskid) do {                                                         \
     
    376372
    377373/*
    378  *  ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒNiE_CTXj
     374 *  呼出しコンテキストのチェック(E_CTX)
    379375 */
    380376#define CHECK_TSKCTX() do {                                                                     \
     
    393389
    394390/*
    395  *  ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚ÆCPUƒƒbƒNó‘Ԃ̃`ƒFƒbƒNiE_CTXj
     391 *  呼出しコンテキストとCPUロック状態のチェック(E_CTX)
    396392 */
    397393#define CHECK_TSKCTX_UNL() do {                                                         \
     
    410406
    411407/*
    412  *  ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚Å‚È‚¢‚©‚̃`ƒFƒbƒNiE_CTXj
     408 *  ディスパッチ保留状態でないかのチェック(E_CTX)
    413409 */
    414410#define CHECK_DISPATCH() do {                                                           \
     
    420416
    421417/*
    422  *  ‚»‚Ì‘¼‚̃Rƒ“ƒeƒLƒXƒgƒGƒ‰[‚̃`ƒFƒbƒNiE_CTXj
     418 *  その他のコンテキストエラーのチェック(E_CTX)
    423419 */
    424420#define CHECK_CTX(exp) do {                                                                     \
     
    430426
    431427/*
    432  *  Ž©ƒ^ƒXƒN‚ðŽw’肵‚Ä‚¢‚È‚¢‚©‚̃`ƒFƒbƒNiE_ILUSEj
     428 *  自タスクを指定していないかのチェック(E_ILUSE)
    433429 */
    434430#define CHECK_NONSELF(p_tcb) do {                                                       \
     
    440436
    441437/*
    442  *  ‚»‚Ì‘¼‚Ì•s³Žg—pƒGƒ‰[‚̃`ƒFƒbƒNiE_ILUSEj
     438 *  その他の不正使用エラーのチェック(E_ILUSE)
    443439 */
    444440#define CHECK_ILUSE(exp) do {                                                           \
     
    450446
    451447/*
    452  *  –¢ƒTƒ|[ƒg‹@”\ƒGƒ‰[‚̃`ƒFƒbƒNiE_NOSPTj
     448 *  未サポート機能エラーのチェック(E_NOSPT)
    453449 */
    454450#define CHECK_NOSPT(exp) do {                                                           \
     
    460456
    461457/*
    462  *  Ã“I‚ȃIƒuƒWƒFƒNƒgó‘ÔƒGƒ‰[‚̃`ƒFƒbƒNiE_OBJj
     458 *  静的なオブジェクト状態エラーのチェック(E_OBJ)
    463459 */
    464460#define CHECK_OBJ(exp) do {                                                                     \
  • UsbWattMeter/trunk/asp_dcre/kernel/cyclic.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ŽüŠúƒnƒ“ƒhƒ‰‹@”\
     44 *              周期ハンドラ機能
    4945 */
    5046
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_CYC_ENTER
     
    105101
    106102/*
    107  *  ŽüŠúƒnƒ“ƒhƒ‰‚̐”
     103 *  周期ハンドラの数
    108104 */
    109105#define tnum_cyc        ((uint_t)(tmax_cycid - TMIN_CYCID + 1))
     
    111107
    112108/*
    113  *  ŽüŠúƒnƒ“ƒhƒ‰ID‚©‚çŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     109 *  周期ハンドラIDから周期ハンドラ管理ブロックを取り出すためのマクロ
    114110 */
    115111#define INDEX_CYC(cycid)        ((uint_t)((cycid) - TMIN_CYCID))
     
    117113
    118114/*
    119  *  ŽüŠúƒnƒ“ƒhƒ‰‹N“®‚Ì‚½‚߂̃^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚Ì“o˜^
     115 *  周期ハンドラ起動のためのタイムイベントブロックの登録
    120116 */
    121117Inline void
     
    130126
    131127/*
    132  *  Žg—p‚µ‚Ä‚¢‚È‚¢ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     128 *  使用していない周期ハンドラ管理ブロックのリスト
    133129 *
    134  *  ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̐擪‚ɂ̓Lƒ
    135 [‚ɂ‚Ȃ®‚½‚߂̗̈悪‚È‚¢‚½
    136  *  ‚߁Cƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒNitmevtbj‚̗̈æ‚ð—p‚¢‚éD
     130 *  周期ハンドラ管理ブロックの先頭にはキューにつなぐための領域がないた
     131 *  め,タイムイベントブロック(tmevtb)の領域を用いる.
    137132 */
    138133QUEUE   free_cyccb;
    139134
    140135/*
    141  *  ŽüŠúƒnƒ“ƒhƒ‰‹@”\‚̏‰Šú‰»
     136 *  周期ハンドラ機能の初期化
    142137 */
    143138void
     
    172167
    173168/*
    174  *  ŽüŠúƒnƒ“ƒhƒ‰‚̐¶¬
     169 *  周期ハンドラの生成
    175170 */
    176171#ifdef TOPPERS_acre_cyc
     
    225220
    226221/*
    227  *  ŽüŠúƒnƒ“ƒhƒ‰‚̍폜
     222 *  周期ハンドラの削除
    228223 */
    229224#ifdef TOPPERS_del_cyc
     
    269264
    270265/*
    271  *  ŽüŠúƒnƒ“ƒhƒ‰‚Ì“®ìŠJŽn
     266 *  周期ハンドラの動作開始
    272267 */
    273268#ifdef TOPPERS_sta_cyc
     
    308303
    309304/*
    310  *  ŽüŠúƒnƒ“ƒhƒ‰‚Ì“®ì’âŽ~
     305 *  周期ハンドラの動作停止
    311306 */
    312307#ifdef TOPPERS_stp_cyc
     
    344339
    345340/*
    346  *  ŽüŠúƒnƒ“ƒhƒ‰‚̏ó‘ÔŽQÆ
     341 *  周期ハンドラの状態参照
    347342 */
    348343#ifdef TOPPERS_ref_cyc
     
    383378
    384379/*
    385  *  ŽüŠúƒnƒ“ƒhƒ‰‹N“®ƒ‹[ƒ`ƒ“
     380 *  周期ハンドラ起動ルーチン
    386381 */
    387382#ifdef TOPPERS_cyccal
     
    393388
    394389        /*
    395          *  ŽŸ‰ñ‚Ì‹N“®‚Ì‚½‚߂̃^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚ð“o˜^‚·‚éD
     390         *  次回の起動のためのタイムイベントブロックを登録する.
    396391         *
    397          *  “¯‚¶ƒ^ƒCƒ€ƒeƒBƒbƒN‚ÅŽüŠúƒnƒ“ƒhƒ‰‚ðÄ“x‹N“®‚·‚ׂ«ê‡‚ɂ́C‚±‚Ì
    398          *  ŠÖ”‚©‚çsignal_time‚É–ß‚Á‚½Œã‚ɁCÄ“x‚±‚̊֐”‚ªŒÄ‚΂ê‚邱‚Æ‚É‚È
    399          *  ‚éD
     392         *  同じタイムティックで周期ハンドラを再度起動すべき場合には,この
     393         *  関数からsignal_timeに戻った後に,再度この関数が呼ばれることにな
     394         *  る.
    400395         */
    401396        tmevtb_enqueue_cyc(p_cyccb, p_cyccb->evttim + p_cyccb->p_cycinib->cyctim);
    402397
    403398        /*
    404          *  ŽüŠúƒnƒ“ƒhƒ‰‚ðCCPUƒƒbƒN‰ðœó‘ԂŌĂяo‚·D
     399         *  周期ハンドラを,CPUロック解除状態で呼び出す.
    405400         */
    406401        saved_ipm = i_get_ipm();
  • UsbWattMeter/trunk/asp_dcre/kernel/cyclic.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ŽüŠúƒnƒ“ƒhƒ‰‹@”\
     44 *              周期ハンドラ機能
    4945 */
    5046
     
    5652
    5753/*
    58  *  ŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     54 *  周期ハンドラ初期化ブロック
    5955 */
    6056typedef struct cyclic_handler_initialization_block {
    61         ATR                     cycatr;                 /* ŽüŠúƒnƒ“ƒhƒ‰‘®« */
    62         intptr_t        exinf;                  /* ŽüŠúƒnƒ“ƒhƒ‰‚ÌŠg’£î•ñ */
    63         CYCHDR          cychdr;                 /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì‹N“®”Ô’n */
    64         RELTIM          cyctim;                 /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì‹N“®ŽüŠú */
    65         RELTIM          cycphs;                 /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì‹N“®ˆÊ‘Š */
     57        ATR                     cycatr;                 /* 周期ハンドラ属性 */
     58        intptr_t        exinf;                  /* 周期ハンドラの拡張情報 */
     59        CYCHDR          cychdr;                 /* 周期ハンドラの起動番地 */
     60        RELTIM          cyctim;                 /* 周期ハンドラの起動周期 */
     61        RELTIM          cycphs;                 /* 周期ハンドラの起動位相 */
    6662} CYCINIB;
    6763
    6864/*
    69  *  ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN
     65 *  周期ハンドラ管理ブロック
    7066 */
    7167typedef struct cyclic_handler_control_block {
    72         const CYCINIB *p_cycinib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    73         bool_t          cycsta;                 /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
    74         EVTTIM          evttim;                 /* ŽŸ‚ÉŽüŠúƒnƒ“ƒhƒ‰‚ð‹N“®‚·‚鎞 */
    75         TMEVTB          tmevtb;                 /* ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN */
     68        const CYCINIB *p_cycinib;       /* 初期化ブロックへのポインタ */
     69        bool_t          cycsta;                 /* 周期ハンドラの動作状態 */
     70        EVTTIM          evttim;                 /* 次に周期ハンドラを起動する時刻 */
     71        TMEVTB          tmevtb;                 /* タイムイベントブロック */
    7672} CYCCB;
    7773
    7874/*
    79  *  Žg—p‚µ‚Ä‚¢‚È‚¢ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     75 *  使用していない周期ハンドラ管理ブロックのリスト
    8076 */
    8177extern QUEUE    free_cyccb;
    8278
    8379/*
    84  *  ŽüŠúƒnƒ“ƒhƒ‰ID‚̍őå’likernel_cfg.cj
     80 *  周期ハンドラIDの最大値(kernel_cfg.c)
    8581 */
    8682extern const ID tmax_cycid;
     
    8884
    8985/*
    90  *  ŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     86 *  周期ハンドラ初期化ブロックのエリア(kernel_cfg.c)
    9187 */
    9288extern const CYCINIB    cycinib_table[];
     
    9490
    9591/*
    96  *  ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     92 *  周期ハンドラ管理ブロックのエリア(kernel_cfg.c)
    9793 */
    9894extern CYCCB    cyccb_table[];
    9995
    10096/*
    101  *  ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚©‚çŽüŠúƒnƒ“ƒhƒ‰ID‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     97 *  周期ハンドラ管理ブロックから周期ハンドラIDを取り出すためのマクロ
    10298 */
    10399#define CYCID(p_cyccb)  ((ID)(((p_cyccb) - cyccb_table) + TMIN_CYCID))
    104100
    105101/*
    106  *  ŽüŠúƒnƒ“ƒhƒ‰‹@”\‚̏‰Šú‰»
     102 *  周期ハンドラ機能の初期化
    107103 */
    108104extern void     initialize_cyclic(void);
    109105
    110106/*
    111  *  ŽüŠúƒnƒ“ƒhƒ‰‹N“®ƒ‹[ƒ`ƒ“
     107 *  周期ハンドラ起動ルーチン
    112108 */
    113109extern void     call_cychdr(CYCCB *p_cyccb);
  • UsbWattMeter/trunk/asp_dcre/kernel/dataqueue.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒf[ƒ^ƒLƒ
    49 [‹@”\
     44 *              データキュー機能
    5045 */
    5146
     
    5752
    5853/*
    59  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     54 *  トレースログマクロのデフォルト定義
    6055 */
    6156#ifndef LOG_ACRE_DTQ_ENTER
     
    164159
    165160/*
    166  *  ƒf[ƒ^ƒLƒ
    167 [‚̐”
     161 *  データキューの数
    168162 */
    169163#define tnum_dtq        ((uint_t)(tmax_dtqid - TMIN_DTQID + 1))
     
    171165
    172166/*
    173  *  ƒf[ƒ^ƒLƒ
    174 [ID‚©‚çƒf[ƒ^ƒLƒ
    175 [ŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     167 *  データキューIDからデータキュー管理ブロックを取り出すためのマクロ
    176168 */
    177169#define INDEX_DTQ(dtqid)        ((uint_t)((dtqid) - TMIN_DTQID))
     
    181173
    182174/*
    183  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒf[ƒ^ƒLƒ
    184 [ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     175 *  使用していないデータキュー管理ブロックのリスト
    185176 */
    186177QUEUE   free_dtqcb;
    187178
    188179/*
    189  *  ƒf[ƒ^ƒLƒ
    190 [‹@”\‚̏‰Šú‰»
     180 *  データキュー機能の初期化
    191181 */
    192182void
     
    219209
    220210/*
    221  *  ƒf[ƒ^ƒLƒ
    222 [ŠÇ——̈æ‚ւ̃f[ƒ^‚ÌŠi”[
     211 *  データキュー管理領域へのデータの格納
    223212 */
    224213#ifdef TOPPERS_dtqenq
     
    238227
    239228/*
    240  *  ƒf[ƒ^ƒLƒ
    241 [ŠÇ——̈æ‚ւ̃f[ƒ^‚Ì‹­§Ši”[
     229 *  データキュー管理領域へのデータの強制格納
    242230 */
    243231#ifdef TOPPERS_dtqfenq
     
    262250
    263251/*
    264  *  ƒf[ƒ^ƒLƒ
    265 [ŠÇ——̈悩‚ç‚̃f[ƒ^‚ÌŽæo‚µ
     252 *  データキュー管理領域からのデータの取出し
    266253 */
    267254#ifdef TOPPERS_dtqdeq
     
    281268
    282269/*
    283  *  ƒf[ƒ^ƒLƒ
    284 [‚ւ̃f[ƒ^‘—M
     270 *  データキューへのデータ送信
    285271 */
    286272#ifdef TOPPERS_dtqsnd
     
    310296
    311297/*
    312  *  ƒf[ƒ^ƒLƒ
    313 [‚ւ̃f[ƒ^‹­§‘—M
     298 *  データキューへのデータ強制送信
    314299 */
    315300#ifdef TOPPERS_dtqfsnd
     
    334319
    335320/*
    336  *  ƒf[ƒ^ƒLƒ
    337 [‚©‚ç‚̃f[ƒ^ŽóM
     321 *  データキューからのデータ受信
    338322 */
    339323#ifdef TOPPERS_dtqrcv
     
    372356
    373357/*
    374  *  ƒf[ƒ^ƒLƒ
    375 [‚̐¶¬
     358 *  データキューの生成
    376359 */
    377360#ifdef TOPPERS_acre_dtq
     
    432415
    433416/*
    434  *  ƒf[ƒ^ƒLƒ
    435 [‚̍폜
     417 *  データキューの削除
    436418 */
    437419#ifdef TOPPERS_del_dtq
     
    483465
    484466/*
    485  *  ƒf[ƒ^ƒLƒ
    486 [‚Ö‚Ì‘—M
     467 *  データキューへの送信
    487468 */
    488469#ifdef TOPPERS_snd_dtq
     
    528509
    529510/*
    530  *  ƒf[ƒ^ƒLƒ
    531 [‚Ö‚Ì‘—Miƒ|[ƒŠƒ“ƒOj
     511 *  データキューへの送信(ポーリング)
    532512 */
    533513#ifdef TOPPERS_psnd_dtq
     
    568548
    569549/*
    570  *  ƒf[ƒ^ƒLƒ
    571 [‚Ö‚Ì‘—Miƒ|[ƒŠƒ“ƒOC”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     550 *  データキューへの送信(ポーリング,非タスクコンテキスト用)
    572551 */
    573552#ifdef TOPPERS_ipsnd_dtq
     
    608587
    609588/*
    610  *  ƒf[ƒ^ƒLƒ
    611 [‚Ö‚Ì‘—Miƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     589 *  データキューへの送信(タイムアウトあり)
    612590 */
    613591#ifdef TOPPERS_tsnd_dtq
     
    659637
    660638/*
    661  *  ƒf[ƒ^ƒLƒ
    662 [‚Ö‚Ì‹­§‘—M
     639 *  データキューへの強制送信
    663640 */
    664641#ifdef TOPPERS_fsnd_dtq
     
    696673
    697674/*
    698  *  ƒf[ƒ^ƒLƒ
    699 [‚Ö‚Ì‹­§‘—Mi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     675 *  データキューへの強制送信(非タスクコンテキスト用)
    700676 */
    701677#ifdef TOPPERS_ifsnd_dtq
     
    733709
    734710/*
    735  *  ƒf[ƒ^ƒLƒ
    736 [‚©‚ç‚ÌŽóM
     711 *  データキューからの受信
    737712 */
    738713#ifdef TOPPERS_rcv_dtq
     
    783758
    784759/*
    785  *  ƒf[ƒ^ƒLƒ
    786 [‚©‚ç‚ÌŽóMiƒ|[ƒŠƒ“ƒOj
     760 *  データキューからの受信(ポーリング)
    787761 */
    788762#ifdef TOPPERS_prcv_dtq
     
    823797
    824798/*
    825  *  ƒf[ƒ^ƒLƒ
    826 [‚©‚ç‚ÌŽóMiƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     799 *  データキューからの受信(タイムアウトあり)
    827800 */
    828801#ifdef TOPPERS_trcv_dtq
     
    878851
    879852/*
    880  *  ƒf[ƒ^ƒLƒ
    881 [‚̍ú‰»
     853 *  データキューの再初期化
    882854 */
    883855#ifdef TOPPERS_ini_dtq
     
    922894
    923895/*
    924  *  ƒf[ƒ^ƒLƒ
    925 [‚̏ó‘ÔŽQÆ
     896 *  データキューの状態参照
    926897 */
    927898#ifdef TOPPERS_ref_dtq
  • UsbWattMeter/trunk/asp_dcre/kernel/dataqueue.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒf[ƒ^ƒLƒ
    49 [‹@”\
     44 *              データキュー機能
    5045 */
    5146
     
    5651
    5752/*
    58  *  ƒf[ƒ^ŠÇ—ƒuƒƒbƒN
     53 *  データ管理ブロック
    5954 */
    6055typedef struct data_management_block {
    61         intptr_t        data;                   /* ƒf[ƒ^–{‘Ì */
     56        intptr_t        data;                   /* データ本体 */
    6257} DTQMB;
    6358
    6459/*
    65  *  ƒf[ƒ^ƒLƒ
    66 [‰Šú‰»ƒuƒƒbƒN
     60 *  データキュー初期化ブロック
    6761 *
    68  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    69  *  iWOBJINIBj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    70  *  Å‰‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     62 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     63 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     64 *  最初のフィールドが共通になっている.
    7165 */
    7266typedef struct dataqueue_initialization_block {
    73         ATR                     dtqatr;                 /* ƒf[ƒ^ƒLƒ
    74 [‘®« */
    75         uint_t          dtqcnt;                 /* ƒf[ƒ^ƒLƒ
    76 [‚Ì—e—Ê */
    77         DTQMB           *p_dtqmb;               /* ƒf[ƒ^ƒLƒ
    78 [ŠÇ——̈æ‚̐擪”Ô’n */
     67        ATR                     dtqatr;                 /* データキュー属性 */
     68        uint_t          dtqcnt;                 /* データキューの容量 */
     69        DTQMB           *p_dtqmb;               /* データキュー管理領域の先頭番地 */
    7970} DTQINIB;
    8071
    8172/*
    82  *  ƒf[ƒ^ƒLƒ
    83 [ŠÇ—ƒuƒƒbƒN
     73 *  データキュー管理ブロック
    8474 *
    85  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ªiWOBJCBj
    86  *  ‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁCÅ‰‚Ì2‚‚Ì
    87  *  ƒtƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     75 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     76 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     77 *  フィールドが共通になっている.
    8878 */
    8979typedef struct dataqueue_control_block {
    90         QUEUE           swait_queue;    /* ƒf[ƒ^ƒLƒ
    91 [‘—M‘Ò‚¿ƒLƒ
    92 [ */
    93         const DTQINIB *p_dtqinib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    94         QUEUE           rwait_queue;    /* ƒf[ƒ^ƒLƒ
    95 [ŽóM‘Ò‚¿ƒLƒ
    96 [ */
    97         uint_t          count;                  /* ƒf[ƒ^ƒLƒ
    98 [’†‚̃f[ƒ^‚̐” */
    99         uint_t          head;                   /* Å‰‚̃f[ƒ^‚ÌŠi”[êŠ */
    100         uint_t          tail;                   /* ÅŒã‚̃f[ƒ^‚ÌŠi”[êŠ‚ÌŽŸ */
     80        QUEUE           swait_queue;    /* データキュー送信待ちキュー */
     81        const DTQINIB *p_dtqinib;       /* 初期化ブロックへのポインタ */
     82        QUEUE           rwait_queue;    /* データキュー受信待ちキュー */
     83        uint_t          count;                  /* データキュー中のデータの数 */
     84        uint_t          head;                   /* 最初のデータの格納場所 */
     85        uint_t          tail;                   /* 最後のデータの格納場所の次 */
    10186} DTQCB;
    10287
    10388/*
    104  *  ƒf[ƒ^ƒLƒ
    105 [‘Ò‚¿î•ñƒuƒƒbƒN‚Ì’è‹`
     89 *  データキュー待ち情報ブロックの定義
    10690 *
    107  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿î•ñƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    108  *  iWINFO_WOBJj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    109  *  Å‰‚Ì2‚‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
    110  *  ƒf[ƒ^ƒLƒ
    111 [‚Ö‚Ì‘—M‘Ò‚¿‚ƃf[ƒ^ƒLƒ
    112 [‚©‚ç‚ÌŽóM‘Ò‚¿‚ŁC“¯‚¶‘Ò‚¿î
    113  *  •ñƒuƒƒbƒN‚ðŽg‚¤D
     91 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     92 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     93 *  最初の2つのフィールドが共通になっている.
     94 *  データキューへの送信待ちとデータキューからの受信待ちで,同じ待ち情
     95 *  報ブロックを使う.
    11496 */
    11597typedef struct dataqueue_waiting_information {
    116         WINFO           winfo;                  /* •W€‚Ì‘Ò‚¿î•ñƒuƒƒbƒN */
    117         DTQCB           *p_dtqcb;               /* ‘Ò‚Á‚Ä‚¢‚éƒf[ƒ^ƒLƒ
    118 [‚ÌŠÇ—ƒuƒƒbƒN */
    119         intptr_t        data;                   /* ‘—ŽóMƒf[ƒ^ */
     98        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     99        DTQCB           *p_dtqcb;               /* 待っているデータキューの管理ブロック */
     100        intptr_t        data;                   /* 送受信データ */
    120101} WINFO_DTQ;
    121102
    122103/*
    123  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒf[ƒ^ƒLƒ
    124 [ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     104 *  使用していないデータキュー管理ブロックのリスト
    125105 */
    126106extern QUEUE    free_dtqcb;
    127107
    128108/*
    129  *  ƒf[ƒ^ƒLƒ
    130 [ID‚̍őå’likernel_cfg.cj
     109 *  データキューIDの最大値(kernel_cfg.c)
    131110 */
    132111extern const ID tmax_dtqid;
     
    134113
    135114/*
    136  *  ƒf[ƒ^ƒLƒ
    137 [‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     115 *  データキュー初期化ブロックのエリア(kernel_cfg.c)
    138116 */
    139117extern const DTQINIB    dtqinib_table[];
     
    141119
    142120/*
    143  *  ƒf[ƒ^ƒLƒ
    144 [ŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     121 *  データキュー管理ブロックのエリア(kernel_cfg.c)
    145122 */
    146123extern DTQCB    dtqcb_table[];
    147124
    148125/*
    149  *  ƒf[ƒ^ƒLƒ
    150 [ŠÇ—ƒuƒƒbƒN‚©‚çƒf[ƒ^ƒLƒ
    151 [ID‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     126 *  データキュー管理ブロックからデータキューIDを取り出すためのマクロ
    152127 */
    153128#define DTQID(p_dtqcb)  ((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID))
    154129
    155130/*
    156  *  ƒf[ƒ^ƒLƒ
    157 [‹@”\‚̏‰Šú‰»
     131 *  データキュー機能の初期化
    158132 */
    159133extern void     initialize_dataqueue(void);
    160134
    161135/*
    162  *  ƒf[ƒ^ƒLƒ
    163 [ŠÇ——̈æ‚ւ̃f[ƒ^‚ÌŠi”[
     136 *  データキュー管理領域へのデータの格納
    164137 */
    165138extern void     enqueue_data(DTQCB *p_dtqcb, intptr_t data);
    166139
    167140/*
    168  *  ƒf[ƒ^ƒLƒ
    169 [ŠÇ——̈æ‚ւ̃f[ƒ^‚Ì‹­§Ši”[
     141 *  データキュー管理領域へのデータの強制格納
    170142 */
    171143extern void     force_enqueue_data(DTQCB *p_dtqcb, intptr_t data);
    172144
    173145/*
    174  *  ƒf[ƒ^ƒLƒ
    175 [ŠÇ——̈悩‚ç‚̃f[ƒ^‚ÌŽæo‚µ
     146 *  データキュー管理領域からのデータの取出し
    176147 */
    177148extern void     dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data);
    178149
    179150/*
    180  *  ƒf[ƒ^ƒLƒ
    181 [‚ւ̃f[ƒ^‘—M
     151 *  データキューへのデータ送信
    182152 */
    183153extern bool_t   send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_dspreq);
    184154
    185155/*
    186  *  ƒf[ƒ^ƒLƒ
    187 [‚ւ̃f[ƒ^‹­§‘—M
     156 *  データキューへのデータ強制送信
    188157 */
    189158extern bool_t   force_send_data(DTQCB *p_dtqcb, intptr_t data);
    190159
    191160/*
    192  *  ƒf[ƒ^ƒLƒ
    193 [‚©‚ç‚̃f[ƒ^ŽóM
     161 *  データキューからのデータ受信
    194162 */
    195163extern bool_t   receive_data(DTQCB *p_dtqcb, intptr_t *p_data,
  • UsbWattMeter/trunk/asp_dcre/kernel/eventflag.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒCƒxƒ“ƒgƒtƒ‰ƒO‹@”\
     44 *              イベントフラグ機能
    4945 */
    5046
     
    5652
    5753/*
    58  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     54 *  トレースログマクロのデフォルト定義
    5955 */
    6056#ifndef LOG_ACRE_FLG_ENTER
     
    139135
    140136/*
    141  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̐”
     137 *  イベントフラグの数
    142138 */
    143139#define tnum_flg        ((uint_t)(tmax_flgid - TMIN_FLGID + 1))
     
    145141
    146142/*
    147  *  ƒCƒxƒ“ƒgƒtƒ‰ƒOID‚©‚çƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     143 *  イベントフラグIDからイベントフラグ管理ブロックを取り出すためのマクロ
    148144 */
    149145#define INDEX_FLG(flgid)        ((uint_t)((flgid) - TMIN_FLGID))
     
    153149
    154150/*
    155  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     151 *  使用していないイベントフラグ管理ブロックのリスト
    156152 */
    157153QUEUE   free_flgcb;
    158154
    159155/*
    160  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‹@”\‚̏‰Šú‰»
     156 *  イベントフラグ機能の初期化
    161157 */
    162158void
     
    186182
    187183/*
    188  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿‰ðœðŒ‚̃`ƒFƒbƒN
     184 *  イベントフラグ待ち解除条件のチェック
    189185 */
    190186#ifdef TOPPERS_flgcnd
     
    207203
    208204/*
    209  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̐¶¬
     205 *  イベントフラグの生成
    210206 */
    211207#ifdef TOPPERS_acre_flg
     
    246242
    247243/*
    248  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̍폜
     244 *  イベントフラグの削除
    249245 */
    250246#ifdef TOPPERS_del_flg
     
    290286
    291287/*
    292  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃Zƒbƒg
     288 *  イベントフラグのセット
    293289 */
    294290#ifdef TOPPERS_set_flg
     
    346342
    347343/*
    348  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃Zƒbƒgi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     344 *  イベントフラグのセット(非タスクコンテキスト用)
    349345 */
    350346#ifdef TOPPERS_iset_flg
     
    398394
    399395/*
    400  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃NƒŠƒA
     396 *  イベントフラグのクリア
    401397 */
    402398#ifdef TOPPERS_clr_flg
     
    431427
    432428/*
    433  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿
     429 *  イベントフラグ待ち
    434430 */
    435431#ifdef TOPPERS_wai_flg
     
    481477
    482478/*
    483  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿iƒ|[ƒŠƒ“ƒOj
     479 *  イベントフラグ待ち(ポーリング)
    484480 */
    485481#ifdef TOPPERS_pol_flg
     
    522518
    523519/*
    524  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿iƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     520 *  イベントフラグ待ち(タイムアウトあり)
    525521 */
    526522#ifdef TOPPERS_twai_flg
     
    578574
    579575/*
    580  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̍ú‰»
     576 *  イベントフラグの再初期化
    581577 */
    582578#ifdef TOPPERS_ini_flg
     
    616612
    617613/*
    618  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̏ó‘ÔŽQÆ
     614 *  イベントフラグの状態参照
    619615 */
    620616#ifdef TOPPERS_ref_flg
  • UsbWattMeter/trunk/asp_dcre/kernel/eventflag.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒCƒxƒ“ƒgƒtƒ‰ƒO‹@”\
     44 *              イベントフラグ機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN
     53 *  イベントフラグ初期化ブロック
    5854 *
    59  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    60  *  iWOBJINIBj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    61  *  Å‰‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     55 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     56 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     57 *  最初のフィールドが共通になっている.
    6258 */
    6359typedef struct eventflag_initialization_block {
    64         ATR                     flgatr;                 /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‘®« */
    65         FLGPTN          iflgptn;                /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃rƒbƒgƒpƒ^[ƒ“‚̏‰Šú’l */
     60        ATR                     flgatr;                 /* イベントフラグ属性 */
     61        FLGPTN          iflgptn;                /* イベントフラグのビットパターンの初期値 */
    6662} FLGINIB;
    6763
    6864/*
    69  *  ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN
     65 *  イベントフラグ管理ブロック
    7066 *
    71  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ªiWOBJCBj
    72  *  ‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁCÅ‰‚Ì2‚‚Ì
    73  *  ƒtƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     67 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     68 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     69 *  フィールドが共通になっている.
    7470 */
    7571typedef struct eventflag_control_block {
    76         QUEUE           wait_queue;             /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿ƒLƒ
    77 [ */
    78         const FLGINIB *p_flginib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    79         FLGPTN          flgptn;                 /* ƒCƒxƒ“ƒgƒtƒ‰ƒOŒ»Ýƒpƒ^[ƒ“ */
     72        QUEUE           wait_queue;             /* イベントフラグ待ちキュー */
     73        const FLGINIB *p_flginib;       /* 初期化ブロックへのポインタ */
     74        FLGPTN          flgptn;                 /* イベントフラグ現在パターン */
    8075} FLGCB;
    8176
    8277/*
    83  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿î•ñƒuƒƒbƒN‚Ì’è‹`
     78 *  イベントフラグ待ち情報ブロックの定義
    8479 *
    85  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿î•ñƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    86  *  iWINFO_WOBJj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    87  *  Å‰‚Ì2‚‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     80 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     81 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     82 *  最初の2つのフィールドが共通になっている.
    8883 *
    89  *  flgptn‚́Cwaiptn‚¨‚æ‚Ñwfmode‚Æ“¯Žž‚ÉŽg‚¤‚±‚Æ‚Í‚È‚¢‚½‚߁C‹¤—p‘Ì‚ðŽg
    90  *  ‚¦‚΃ƒ‚ƒŠ‚ðß–ñ‚·‚邱‚Æ‚ª‰Â”\‚Å‚ ‚éD
     84 *  flgptnは,waiptnおよびwfmodeと同時に使うことはないため,共用体を使
     85 *  えばメモリを節約することが可能である.
    9186 */
    9287typedef struct eventflag_waiting_information {
    93         WINFO           winfo;                  /* •W€‚Ì‘Ò‚¿î•ñƒuƒƒbƒN */
    94         FLGCB           *p_flgcb;               /* ‘Ò‚Á‚Ä‚¢‚éƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌŠÇ—ƒuƒƒbƒN */
    95         FLGPTN          waiptn;                 /* ‘Ò‚¿ƒpƒ^[ƒ“ */
    96         MODE            wfmode;                 /* ‘Ò‚¿ƒ‚[ƒh */
    97         FLGPTN          flgptn;                 /* ‘Ò‚¿‰ðœŽž‚̃pƒ^[ƒ“ */
     88        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     89        FLGCB           *p_flgcb;               /* 待っているイベントフラグの管理ブロック */
     90        FLGPTN          waiptn;                 /* 待ちパターン */
     91        MODE            wfmode;                 /* 待ちモード */
     92        FLGPTN          flgptn;                 /* 待ち解除時のパターン */
    9893} WINFO_FLG;
    9994
    10095/*
    101  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     96 *  使用していないイベントフラグ管理ブロックのリスト
    10297 */
    10398extern QUEUE    free_flgcb;
    10499
    105100/*
    106  *  ƒCƒxƒ“ƒgƒtƒ‰ƒOID‚̍őå’likernel_cfg.cj
     101 *  イベントフラグIDの最大値(kernel_cfg.c)
    107102 */
    108103extern const ID tmax_flgid;
     
    110105
    111106/*
    112  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     107 *  イベントフラグ初期化ブロックのエリア(kernel_cfg.c)
    113108 */
    114109extern const FLGINIB    flginib_table[];
     
    116111
    117112/*
    118  *  ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     113 *  イベントフラグ管理ブロックのエリア(kernel_cfg.c)
    119114 */
    120115extern FLGCB    flgcb_table[];
    121116
    122117/*
    123  *  ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN‚©‚çƒCƒxƒ“ƒgƒtƒ‰ƒOID‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     118 *  イベントフラグ管理ブロックからイベントフラグIDを取り出すためのマクロ
    124119 */
    125120#define FLGID(p_flgcb)  ((ID)(((p_flgcb) - flgcb_table) + TMIN_FLGID))
    126121
    127122/*
    128  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‹@”\‚̏‰Šú‰»
     123 *  イベントフラグ機能の初期化
    129124 */
    130125extern void     initialize_eventflag(void);
    131126
    132127/*
    133  *  ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿‰ðœðŒ‚̃`ƒFƒbƒN
     128 *  イベントフラグ待ち解除条件のチェック
    134129 */
    135130extern bool_t   check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn,
  • UsbWattMeter/trunk/asp_dcre/kernel/exception.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              CPU—áŠOŠÇ—‹@”\
     44 *              CPU例外管理機能
    4945 */
    5046
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_XSNS_DPN_ENTER
     
    7369
    7470/*
    75  *  CPU—áŠOƒnƒ“ƒhƒ‰ŠÇ—‹@”\‚̏‰Šú‰»
     71 *  CPU例外ハンドラ管理機能の初期化
    7672 */
    7773#ifdef TOPPERS_excini
     
    9389
    9490/*
    95  *  CPU—áŠO‚Ì”­¶‚µ‚½ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
     91 *  CPU例外の発生したコンテキストの参照
    9692 */
    9793
    9894/*
    99  *  CPU—áŠO”­¶Žž‚̃fƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚ÌŽQÆ
     95 *  CPU例外発生時のディスパッチ保留状態の参照
    10096 *
    101  *  CPU—áŠOƒnƒ“ƒhƒ‰’†‚Ådisdsp‚ª•Ï‰»‚·‚邱‚Æ‚Í‚È‚¢‚½‚߁CCPU—áŠO‚ª”­¶‚µ
    102  *  ‚½Žž‚Ìdisdsp‚ð•Û‘¶‚µ‚Ä‚¨‚­•K—v‚Í‚È‚¢D
     97 *  CPU例外ハンドラ中でdisdspが変化することはないため,CPU例外が発生し
     98 *  た時のdisdspを保存しておく必要はない.
    10399 */
    104100#ifdef TOPPERS_xsns_dpn
     
    118114
    119115/*
    120  *  CPU—áŠO”­¶Žž‚̃^ƒXƒN—áŠOˆ—•Û—¯ó‘Ô‚ÌŽQÆ
     116 *  CPU例外発生時のタスク例外処理保留状態の参照
    121117 *
    122  *  CPU—áŠOƒnƒ“ƒhƒ‰’†‚Åp_runtsk‚Æp_runtsk->enatex‚ª•Ï‰»‚·‚邱‚Æ‚Í‚È‚¢
    123  *  ‚½‚߁CCPU—áŠO‚ª”­¶‚µ‚½Žž‚Ìp_runtsk->enatex‚ð•Û‘¶‚µ‚Ä‚¨‚­•K—v‚Í‚È
    124  *  ‚¢D
     118 *  CPU例外ハンドラ中でp_runtskとp_runtsk->enatexが変化することはない
     119 *  ため,CPU例外が発生した時のp_runtsk->enatexを保存しておく必要はな
     120 *  い.
    125121 */
    126122#ifdef TOPPERS_xsns_xpn
  • UsbWattMeter/trunk/asp_dcre/kernel/exception.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              CPU—áŠOŠÇ—‹@”\
     44 *              CPU例外管理機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  CPU—áŠOƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     53 *  CPU例外ハンドラ初期化ブロック
    5854 */
    5955typedef struct cpu_exception_handler_initialization_block {
    60         EXCNO           excno;                  /* CPU—áŠOƒnƒ“ƒhƒ‰”ԍ† */
    61         ATR                     excatr;                 /* CPU—áŠOƒnƒ“ƒhƒ‰‘®« */
    62         FP                      exc_entry;              /* CPU—áŠOƒnƒ“ƒhƒ‰‚̏o“üŒûˆ—‚̔Ԓn */
     56        EXCNO           excno;                  /* CPU例外ハンドラ番号 */
     57        ATR                     excatr;                 /* CPU例外ハンドラ属性 */
     58        FP                      exc_entry;              /* CPU例外ハンドラの出入口処理の番地 */
    6359} EXCINIB;
    6460
    6561/*
    66  *  CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚̐”ikernel_cfg.cj
     62 *  CPU例外ハンドラ番号の数(kernel_cfg.c)
    6763 */
    6864extern const uint_t     tnum_excno;
    6965
    7066/*
    71  *  CPU—áŠOƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     67 *  CPU例外ハンドラ初期化ブロックのエリア(kernel_cfg.c)
    7268 */
    7369extern const EXCINIB    excinib_table[];
     
    7672
    7773/*
    78  *  CPU—áŠOƒnƒ“ƒhƒ‰ŠÇ—‹@”\‚̏‰Šú‰»
     74 *  CPU例外ハンドラ管理機能の初期化
    7975 */
    8076extern void     initialize_exception(void);
  • UsbWattMeter/trunk/asp_dcre/kernel/genoffset.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    88$               Graduate School of Information Science, Nagoya Univ., JAPAN
    99
    10 $   ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11 $   ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12 $   •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13 $   (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14 $       Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15 $       ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16 $   (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17 $       —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19 $       ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21 $       ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22 $   (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23 $       —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24 $       ‚ƁD
    25 $     (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28 $         ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29 $     (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30 $         •ñ‚·‚邱‚ƁD
    31 $   (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32 $       ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33 $       ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34 $       —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35 $       –Ɛӂ·‚邱‚ƁD
     10$   上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11$   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12$   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13$   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14$       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15$       スコード中に含まれていること.
     16$   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17$       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18$       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19$       の無保証規定を掲載すること.
     20$   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21$       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22$       と.
     23$     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24$         作権表示,この利用条件および下記の無保証規定を掲載すること.
     25$     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26$         報告すること.
     27$   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28$       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29$       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30$       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31$       免責すること.
    3632
    37 $   –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38 $   ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39 $   ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40 $   ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41 $   ‚̐ӔC‚𕉂í‚È‚¢D
     33$   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34$   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35$   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36$   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37$   の責任を負わない.
    4238$
    4339$   $Id$
     
    4642
    4743$
    48 $  #defineƒfƒBƒŒƒNƒeƒBƒu‚̐¶¬
     44$  #defineディレクティブの生成
    4945$
    5046$FUNCTION DEFINE$
     
    5349
    5450$
    55 ƒrƒbƒg‚̃T[ƒ`
     51ビットのサーチ
    5652$
    5753$FUNCTION SEARCH_BIT$
     
    6662
    6763$
    68 ƒrƒbƒgƒtƒB[ƒ‹ƒh‚̃IƒtƒZƒbƒg‚ƃrƒbƒgˆÊ’u‚Ì’è‹`‚̐¶¬
     64ビットフィールドのオフセットとビット位置の定義の生成
    6965$
    7066$FUNCTION DEFINE_BIT$
     
    115111
    116112$
    117 ƒoƒCƒg”z’u‚̃`ƒFƒbƒN
     113バイト配置のチェック
    118114$
    119115$FUNCTION MAGIC_CHECK$
     
    144140
    145141$
    146 ƒtƒ@ƒCƒ‹ƒwƒbƒ_‚̐¶¬
     142ファイルヘッダの生成
    147143$
    148144$FILE "offset.h"$
  • UsbWattMeter/trunk/asp_dcre/kernel/interrupt.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              Š„ž‚ÝŠÇ—‹@”\
     44 *              割込み管理機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     53 *  トレースログマクロのデフォルト定義
    5854 */
    5955#ifndef LOG_ISR_ENTER
     
    114110
    115111/*
    116  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐”
     112 *  割込みサービスルーチンの数
    117113 */
    118114#define tnum_isr        ((uint_t)(tmax_isrid - TMIN_SEMID + 1) + tnum_sisr)
    119115
    120116/*
    121  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ID‚©‚犄ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN‚ðŽæ
    122  *  ‚èo‚·‚½‚߂̃}ƒNƒ
     117 *  割込みサービスルーチンIDから割込みサービスルーチン管理ブロックを取
     118 *  り出すためのマクロ
    123119 */
    124120#define INDEX_ISR(isrid)        ((uint_t)((isrid) - TMIN_ISRID) + tnum_sisr)
     
    126122
    127123/*
    128  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ƒLƒ
    129 [‚Ö‚Ì“o˜^
     124 *  割込みサービスルーチンキューへの登録
    130125 */
    131126Inline void
     
    147142
    148143/*
    149  *  Žg—p‚µ‚Ä‚¢‚È‚¢Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     144 *  使用していない割込みサービスルーチン管理ブロックのリスト
    150145 */
    151146QUEUE   free_isrcb;
    152147
    153148/*
    154  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‹@”\‚̏‰Šú‰»
     149 *  割込みサービスルーチン機能の初期化
    155150 */
    156151void
     
    182177
    183178/*
    184  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̌ďo‚µ
     179 *  割込みサービスルーチンの呼出し
    185180 */
    186181#ifdef TOPPERS_isrcal
     
    202197
    203198                if (p_queue->p_next != p_isr_queue) {
    204                         /* ISR‚̌ďo‚µ‘O‚̏ó‘Ô‚É–ß‚· */
     199                        /* ISRの呼出し前の状態に戻す */
    205200                        if (i_sense_lock()) {
    206201                                i_unlock_cpu();
     
    214209
    215210/*
    216  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŒÄo‚µƒLƒ
    217 [‚ÌŒŸõ
     211 *  割込みサービスルーチン呼出しキューの検索
    218212 */
    219213Inline QUEUE *
     
    246240
    247241/*
    248  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐¶¬
     242 *  割込みサービスルーチンの生成
    249243 */
    250244#ifdef TOPPERS_acre_isr
     
    295289
    296290/*
    297  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̍폜
     291 *  割込みサービスルーチンの削除
    298292 */
    299293#ifdef TOPPERS_del_isr
     
    332326
    333327/*
    334  *  Š„ž‚ÝŠÇ—‹@”\‚̏‰Šú‰»
     328 *  割込み管理機能の初期化
    335329 */
    336330#ifdef TOPPERS_intini
     
    358352
    359353/*
    360  *  Š„ž‚Ý‚Ì‹ÖŽ~
     354 *  割込みの禁止
    361355 */
    362356#ifdef TOPPERS_dis_int
     
    396390
    397391/*
    398  *  Š„ž‚Ý‚Ì‹–‰Â
     392 *  割込みの許可
    399393 */
    400394#ifdef TOPPERS_ena_int
     
    434428
    435429/*
    436  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚̕ύX
     430 *  割込み優先度マスクの変更
    437431 */
    438432#ifdef TOPPERS_chg_ipm
     
    476470
    477471/*
    478  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌŽQÆ
     472 *  割込み優先度マスクの参照
    479473 */
    480474#ifdef TOPPERS_get_ipm
  • UsbWattMeter/trunk/asp_dcre/kernel/interrupt.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              Š„ž‚ÝŠÇ—‹@”\
     44 *              割込み管理機能
    4945 */
    5046
     
    5349
    5450/*
    55  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‰Šú‰»ƒuƒƒbƒN
     51 *  割込みサービスルーチン初期化ブロック
    5652 */
    5753typedef struct isr_initialization_block {
    58         ATR                     isratr;                 /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‘®« */
    59         intptr_t        exinf;                  /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚ÌŠg’£î•ñ */
    60         INTNO           intno;                  /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚ð“o˜^‚·‚銄ž‚ݔԍ† */
    61         QUEUE           *p_isr_queue;   /* “o˜^æŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ƒLƒ
    62 [‚̔Ԓn */
    63         ISR                     isr;                    /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐擪”Ô’n */
    64         PRI                     isrpri;                 /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x */
     54        ATR                     isratr;                 /* 割込みサービスルーチン属性 */
     55        intptr_t        exinf;                  /* 割込みサービスルーチンの拡張情報 */
     56        INTNO           intno;                  /* 割込みサービスルーチンを登録する割込み番号 */
     57        QUEUE           *p_isr_queue;   /* 登録先割込みサービスルーチンキューの番地 */
     58        ISR                     isr;                    /* 割込みサービスルーチンの先頭番地 */
     59        PRI                     isrpri;                 /* 割込みサービスルーチン優先度 */
    6560} ISRINIB;
    6661
    6762/*
    68  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN
     63 *  割込みサービスルーチン管理ブロック
    6964 */
    7065typedef struct isr_control_block {
    71         QUEUE           isr_queue;              /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŒÄo‚µƒLƒ
    72 [ */
    73         const ISRINIB *p_isrinib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
     66        QUEUE           isr_queue;              /* 割込みサービスルーチン呼出しキュー */
     67        const ISRINIB *p_isrinib;       /* 初期化ブロックへのポインタ */
    7468} ISRCB;
    7569
    7670/*
    77  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŒÄo‚µƒLƒ
    78 [‚ðŒŸõ‚·‚邽‚߂̃f[ƒ^\‘¢
     71 *  割込みサービスルーチン呼出しキューを検索するためのデータ構造
    7972 */
    8073typedef struct {
    81         INTNO           intno;                  /* Š„ž‚ݔԍ† */
    82         QUEUE           *p_isr_queue;   /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŒÄo‚µƒLƒ
    83 [ */
     74        INTNO           intno;                  /* 割込み番号 */
     75        QUEUE           *p_isr_queue;   /* 割込みサービスルーチン呼出しキュー */
    8476} ISR_ENTRY;
    8577
    8678/*
    87  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ƒLƒ
    88 [‚̃Gƒ“ƒgƒŠ”ikernel_cfg.cj
     79 *  割込みサービスルーチンキューのエントリ数(kernel_cfg.c)
    8980 */
    9081extern const uint_t tnum_isr_queue;
    9182
    9283/*
    93  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ƒLƒ
    94 [ƒŠƒXƒgikernel_cfg.cj
     84 *  割込みサービスルーチンキューリスト(kernel_cfg.c)
    9585 */
    9686extern const ISR_ENTRY isr_queue_list[];
    9787
    9888/*
    99  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ƒLƒ
    100 [‚̃GƒŠƒAikernel_cfg.cj
     89 *  割込みサービスルーチンキューのエリア(kernel_cfg.c)
    10190 */
    10291extern QUEUE isr_queue_table[];
    10392
    10493/*
    105  *  Žg—p‚µ‚Ä‚¢‚È‚¢Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     94 *  使用していない割込みサービスルーチン管理ブロックのリスト
    10695 */
    10796extern QUEUE    free_isrcb;
    10897
    10998/*
    110  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ID‚̍őå’likernel_cfg.cj
     99 *  割込みサービスルーチンIDの最大値(kernel_cfg.c)
    111100 *
    112  *  Ã“I‚ɐ¶¬‚³‚ê‚銄ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚ÍID”ԍ†‚ðŽ‚½‚È‚¢‚½‚߁C
    113  *  tmax_isrid‚Í“®“I‚ɐ¶¬‚³‚ê‚銄ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚ÌID”ԍ†‚̍őå’l
    114  *  ‚Å‚ ‚éDÃ“I‚ɐ¶¬‚³‚ê‚銄ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐”‚́Ctnum_sisr‚É•Û
    115  *  Ž‚·‚éD
     101 *  静的に生成される割込みサービスルーチンはID番号を持たないため,
     102 *  tmax_isridは動的に生成される割込みサービスルーチンのID番号の最大値
     103 *  である.静的に生成される割込みサービスルーチンの数は,tnum_sisrに保
     104 *  持する.
    116105 */
    117106extern const ID         tmax_isrid;
     
    119108
    120109/*
    121  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     110 *  割込みサービスルーチン初期化ブロックのエリア(kernel_cfg.c)
    122111 */
    123112extern const ISRINIB    sisrinib_table[];
     
    125114
    126115/*
    127  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     116 *  割込みサービスルーチン管理ブロックのエリア(kernel_cfg.c)
    128117 */
    129118extern ISRCB    isrcb_table[];
    130119
    131120/*
    132  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN‚©‚犄ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ID‚ðŽæ
    133  *  ‚èo‚·‚½‚߂̃}ƒNƒ
     121 *  割込みサービスルーチン管理ブロックから割込みサービスルーチンIDを取
     122 *  り出すためのマクロ
    134123 */
    135124#define ISRID(p_isrcb)  ((ID)(((p_isrcb) - isrcb_table) \
     
    137126
    138127/*
    139  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‹@”\‚̏‰Šú‰»
     128 *  割込みサービスルーチン機能の初期化
    140129 */
    141130extern void initialize_isr(void);
    142131
    143132/*
    144  *  Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̌ďo‚µ
     133 *  割込みサービスルーチンの呼出し
    145134 */
    146135extern void call_isr(QUEUE *p_isr_queue);
     
    149138
    150139/*
    151  *  Š„ž‚݃nƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     140 *  割込みハンドラ初期化ブロック
    152141 */
    153142typedef struct interrupt_handler_initialization_block {
    154         INHNO           inhno;                  /* Š„ž‚݃nƒ“ƒhƒ‰”ԍ† */
    155         ATR                     inhatr;                 /* Š„ž‚݃nƒ“ƒhƒ‰‘®« */
    156         FP                      int_entry;              /* Š„ž‚݃nƒ“ƒhƒ‰‚̏o“üŒûˆ—‚̔Ԓn */
     143        INHNO           inhno;                  /* 割込みハンドラ番号 */
     144        ATR                     inhatr;                 /* 割込みハンドラ属性 */
     145        FP                      int_entry;              /* 割込みハンドラの出入口処理の番地 */
    157146} INHINIB;
    158147
    159148/*
    160  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‰Šú‰»ƒuƒƒbƒN
     149 *  割込み要求ライン初期化ブロック
    161150 */
    162151typedef struct interrupt_request_initialization_block {
    163         INTNO           intno;                  /* Š„ž‚ݔԍ† */
    164         ATR                     intatr;                 /* Š„ž‚Ý‘®« */
    165         PRI                     intpri;                 /* Š„ž‚Ý—Dæ“x */
     152        INTNO           intno;                  /* 割込み番号 */
     153        ATR                     intatr;                 /* 割込み属性 */
     154        PRI                     intpri;                 /* 割込み優先度 */
    166155} INTINIB;
    167156
    168157/*
    169  *  Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚̐”ikernel_cfg.cj
     158 *  割込みハンドラ番号の数(kernel_cfg.c)
    170159 */
    171160extern const uint_t     tnum_inhno;
    172161
    173162/*
    174  *  Š„ž‚݃nƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     163 *  割込みハンドラ初期化ブロックのエリア(kernel_cfg.c)
    175164 */
    176165extern const INHINIB    inhinib_table[];
    177166
    178167/*
    179  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚̐”ikernel_cfg.cj
     168 *  割込み要求ラインの数(kernel_cfg.c)
    180169 */
    181170extern const uint_t     tnum_intno;
    182171
    183172/*
    184  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     173 *  割込み要求ライン初期化ブロックのエリア(kernel_cfg.c)
    185174 */
    186175extern const INTINIB    intinib_table[];
     
    189178
    190179/*
    191  *  Š„ž‚ÝŠÇ—‹@”\‚̏‰Šú‰»
     180 *  割込み管理機能の初期化
    192181 */
    193182extern void     initialize_interrupt(void);
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel.tf

    • Property svn:mime-type changed from text/plain to text/plain; 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
     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$       免責すること.
    3733
    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
     34$   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35$   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36$   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37$   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38$   の責任を負わない.
    4339$
    4440$   $Id$
     
    4743
    4844$ =====================================================================
    49 $ AID_YYY‚̏ˆ—
     45$ AID_YYYの処理
    5046$ =====================================================================
    5147
    5248$num_atskid = 0$
    5349$FOREACH i ATSK.ORDER_LIST$
    54 $       // notsk‚ª•‰‚̏ꍇiE_PARj
     50$       // notskが負の場合(E_PAR)
    5551        $IF ATSK.NOTSK[i] < 0$
    5652                $ERROR ATSK.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "notsk", ATSK.NOTSK[i], "AID_TSK")$$END$
     
    6258$num_asemid = 0$
    6359$FOREACH i ASEM.ORDER_LIST$
    64 $       // nosem‚ª•‰‚̏ꍇiE_PARj
     60$       // nosemが負の場合(E_PAR)
    6561        $IF ASEM.NOSEM[i] < 0$
    6662                $ERROR ASEM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nosem", ASEM.NOSEM[i], "AID_SEM")$$END$
     
    7268$num_aflgid = 0$
    7369$FOREACH i AFLG.ORDER_LIST$
    74 $       // noflg‚ª•‰‚̏ꍇiE_PARj
     70$       // noflgが負の場合(E_PAR)
    7571        $IF AFLG.NOFLG[i] < 0$
    7672                $ERROR AFLG.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noflg", AFLG.NOFLG[i], "AID_FLG")$$END$
     
    8278$num_adtqid = 0$
    8379$FOREACH i ADTQ.ORDER_LIST$
    84 $       // nodtq‚ª•‰‚̏ꍇiE_PARj
     80$       // nodtqが負の場合(E_PAR)
    8581        $IF ADTQ.NODTQ[i] < 0$
    8682                $ERROR ADTQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nodtq", ADTQ.NODTQ[i], "AID_DTQ")$$END$
     
    9288$num_apdqid = 0$
    9389$FOREACH i APDQ.ORDER_LIST$
    94 $       // nopdq‚ª•‰‚̏ꍇiE_PARj
     90$       // nopdqが負の場合(E_PAR)
    9591        $IF APDQ.NOPDQ[i] < 0$
    9692                $ERROR APDQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nopdq", APDQ.NOPDQ[i], "AID_PDQ")$$END$
     
    10298$num_ambxid = 0$
    10399$FOREACH i AMBX.ORDER_LIST$
    104 $       // nombx‚ª•‰‚̏ꍇiE_PARj
     100$       // nombxが負の場合(E_PAR)
    105101        $IF AMBX.NOMBX[i] < 0$
    106102                $ERROR AMBX.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nombx", AMBX.NOMBX[i], "AID_MBX")$$END$
     
    112108$num_ampfid = 0$
    113109$FOREACH i AMPF.ORDER_LIST$
    114 $       // nompf‚ª•‰‚̏ꍇiE_PARj
     110$       // nompfが負の場合(E_PAR)
    115111        $IF AMPF.NOMPF[i] < 0$
    116112                $ERROR AMPF.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nompf", AMPF.NOMPF[i], "AID_MPF")$$END$
     
    122118$num_acycid = 0$
    123119$FOREACH i ACYC.ORDER_LIST$
    124 $       // nocyc‚ª•‰‚̏ꍇiE_PARj
     120$       // nocycが負の場合(E_PAR)
    125121        $IF ACYC.NOCYC[i] < 0$
    126122                $ERROR ACYC.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nocyc", ACYC.NOCYC[i], "AID_CYC")$$END$
     
    132128$num_aalmid = 0$
    133129$FOREACH i AALM.ORDER_LIST$
    134 $       // noalm‚ª•‰‚̏ꍇiE_PARj
     130$       // noalmが負の場合(E_PAR)
    135131        $IF AALM.NOALM[i] < 0$
    136132                $ERROR AALM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noalm", AALM.NOALM[i], "AID_ALM")$$END$
     
    142138$num_aisrid = 0$
    143139$FOREACH i AISR.ORDER_LIST$
    144 $       // noisr‚ª•‰‚̏ꍇiE_PARj
     140$       // noisrが負の場合(E_PAR)
    145141        $IF AISR.NOISR[i] < 0$
    146142                $ERROR AISR.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noisr", AISR.NOISR[i], "AID_ISR")$$END$
     
    152148
    153149$ =====================================================================
    154 $ kernel_cfg.h‚̐¶¬
     150$ kernel_cfg.hの生成
    155151$ =====================================================================
    156152
     
    202198
    203199$ =====================================================================
    204 $ kernel_cfg.c‚̐¶¬
     200$ kernel_cfg.cの生成
    205201$ =====================================================================
    206202
     
    216212
    217213$
    218 ƒCƒ“ƒNƒ‹[ƒhƒfƒBƒŒƒNƒeƒBƒui#includej
     214インクルードディレクティブ(#include)
    219215$
    220216/*$NL$
     
    226222
    227223$
    228 ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ð•ÛŽ‚·‚é•Ï”
     224オブジェクトのID番号を保持する変数
    229225$
    230226$IF USE_EXTERNAL_ID$
     
    263259
    264260$
    265 ƒ^ƒXƒN
     261タスク
    266262$
    267263/*$NL$
     
    270266$NL$
    271267
    272 $ Ã“I‚ɐ¶¬‚³‚ꂽƒ^ƒXƒN‚ª1ŒÂˆÈã‘¶Ý‚·‚邱‚Ƃ̃`ƒFƒbƒN
     268$ 静的に生成されたタスクが1個以上存在することのチェック
    273269$IF !LENGTH(TSK.ID_LIST)$
    274270        $ERROR$$FORMAT(_("no task is registered"))$$END$
    275271$END$
    276272
    277 $ Ã“I‚ɐ¶¬‚³‚ꂽƒ^ƒXƒN‚̐”
     273$ 静的に生成されたタスクの数
    278274#define TNUM_STSKID     $LENGTH(TSK.ID_LIST)$$NL$
    279275$NL$
    280276
    281 $ ƒ^ƒXƒNID”ԍ†‚̍őå’l
     277$ タスクID番号の最大値
    282278const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
    283279const ID _kernel_tmax_stskid = (TMIN_TSKID + TNUM_STSKID - 1);$NL$
    284280$NL$
    285281
    286 $ ƒGƒ‰[ƒ`ƒFƒbƒN
     282$ エラーチェック
    287283$FOREACH tskid TSK.ID_LIST$
    288 $       // tskatr‚ªimTA_ACTnj‚Å‚È‚¢ê‡iE_RSATRj
     284$       // tskatrが([TA_ACT])でない場合(E_RSATR)
    289285        $IF (TSK.TSKATR[tskid] & ~(TA_ACT|TARGET_TSKATR)) != 0$
    290286                $ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
    291287        $END$
    292288
    293 $       // (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)‚Å‚È‚¢ê‡iE_PARj
     289$       // (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合(E_PAR)
    294290        $IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$
    295291                $ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$
    296292        $END$
    297293
    298 $       // texatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     294$       // texatrが(TA_NULL)でない場合(E_RSATR)
    299295        $IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$
    300296                $ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$
     
    302298$END$
    303299
    304 $ ƒXƒ^ƒbƒN—̈æ‚̐¶¬‚Æ‚»‚ê‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     300$ スタック領域の生成とそれに関するエラーチェック
    305301$FOREACH tskid TSK.ID_LIST$
    306 $       // stksz‚ª0ˆÈ‰º‚©Cƒ^[ƒQƒbƒg’è‹`‚̍ŏ¬’liTARGET_MIN_STKSZj‚æ‚è‚à
    307 $       // ¬‚³‚¢ê‡iE_PARj
     302$       // stkszが0以下か,ターゲット定義の最小値(TARGET_MIN_STKSZ)よりも
     303$       // 小さい場合(E_PAR)
    308304        $IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
    309305                                                                        && TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
     
    311307        $END$
    312308
    313 $       // stksz‚ªƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     309$       // stkszがスタック領域のサイズとして正しくない場合(E_PAR)
    314310        $IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN
    315311                                                        && (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$
     
    328324$NL$
    329325
    330 $ ƒ^ƒXƒN‰Šú‰»ƒuƒƒbƒN‚̐¶¬iƒ^ƒXƒN‚Í1ŒÂˆÈã‘¶Ý‚·‚éj
     326$ タスク初期化ブロックの生成(タスクは1個以上存在する)
    331327const TINIB _kernel_tinib_table[TNUM_STSKID] = {$NL$
    332328$JOINEACH tskid TSK.ID_LIST ",\n"$
    333 $       // ƒ^ƒXƒN‘®«CŠg’£î•ñC‹N“®”Ô’nC‹N“®Žž—Dæ“x
     329$       // タスク属性,拡張情報,起動番地,起動時優先度
    334330        $TAB${
    335331        $SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
    336332        $SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
    337333
    338 $       // ƒ^ƒXƒN‰Šú‰»ƒRƒ“ƒeƒLƒXƒgƒuƒƒbƒNCƒXƒ^ƒbƒN—̈æ
     334$       // タスク初期化コンテキストブロック,スタック領域
    339335        $IF USE_TSKINICTXB$
    340336                $GENERATE_TSKINICTXB(tskid)$
     
    343339        $END$
    344340
    345 $       // ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‘®«‚Æ‹N“®”Ô’n
     341$       // タスク例外処理ルーチンの属性と起動番地
    346342        $SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
    347343$END$$NL$
     
    349345$NL$
    350346
    351 $ “®“I¶¬ƒ^ƒXƒN—p‚̃^ƒXƒN‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     347$ 動的生成タスク用のタスク初期化ブロックの生成
    352348$IF num_atskid > 0$
    353349        TINIB _kernel_atinib_table[$num_atskid$];$NL$
     
    356352$END$$NL$
    357353
    358 $ ƒ^ƒXƒNŠÇ—ƒuƒƒbƒN‚̐¶¬
     354$ タスク管理ブロックの生成
    359355TCB _kernel_tcb_table[TNUM_TSKID];$NL$
    360356$NL$
    361357
    362 $ ƒ^ƒXƒN¶¬‡˜ƒe[ƒuƒ‹‚̐¶¬
     358$ タスク生成順序テーブルの生成
    363359const ID _kernel_torder_table[TNUM_STSKID] = {$NL$
    364360$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
     
    367363
    368364$
    369 ƒZƒ}ƒtƒH
     365セマフォ
    370366$
    371367/*$NL$
     
    374370$NL$
    375371
    376 $ Ã“I‚ɐ¶¬‚³‚ꂽƒZƒ}ƒtƒH‚̐”
     372$ 静的に生成されたセマフォの数
    377373#define TNUM_SSEMID     $LENGTH(SEM.ID_LIST)$$NL$
    378374$NL$
    379375
    380 $ ƒZƒ}ƒtƒHID”ԍ†‚̍őå’l
     376$ セマフォID番号の最大値
    381377const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
    382378const ID _kernel_tmax_ssemid = (TMIN_SEMID + TNUM_SSEMID - 1);$NL$
    383379$NL$
    384380
    385 $ ƒZƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     381$ セマフォ初期化ブロックの生成
    386382$IF LENGTH(SEM.ID_LIST)$
    387383        const SEMINIB _kernel_seminib_table[TNUM_SSEMID] = {$NL$
    388384        $JOINEACH semid SEM.ID_LIST ",\n"$
    389 $               // sematr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     385$               // sematrが([TA_TPRI])でない場合(E_RSATR)
    390386                $IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$
    391387                        $ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$
    392388                $END$
    393389
    394 $               // (0 <= isemcnt && isemcnt <= maxsem)‚Å‚È‚¢ê‡iE_PARj
     390$               // (0 <= isemcnt && isemcnt <= maxsem)でない場合(E_PAR)
    395391                $IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$
    396392                        $ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$
    397393                $END$
    398394
    399 $               // (1 <= maxsem && maxsem <= TMAX_MAXSEM)‚Å‚È‚¢ê‡iE_PARj
     395$               // (1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合(E_PAR)
    400396                $IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$
    401397                        $ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$
    402398                $END$
    403399
    404 $               // ƒZƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN
     400$               // セマフォ初期化ブロック
    405401                $TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
    406402        $END$$NL$
     
    410406$END$$NL$
    411407
    412 $ “®“I¶¬ƒZƒ}ƒtƒH—p‚̃Zƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     408$ 動的生成セマフォ用のセマフォ初期化ブロックの生成
    413409$IF num_asemid > 0$
    414410        SEMINIB _kernel_aseminib_table[$num_asemid$];$NL$
     
    417413$END$$NL$
    418414
    419 $ ƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN‚̐¶¬
     415$ セマフォ管理ブロックの生成
    420416$IF num_semid > 0$
    421417        SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
     
    425421
    426422$
    427 ƒCƒxƒ“ƒgƒtƒ‰ƒO
     423イベントフラグ
    428424$
    429425/*$NL$
     
    432428$NL$
    433429
    434 $ Ã“I‚ɐ¶¬‚³‚ꂽƒCƒxƒ“ƒgƒtƒ‰ƒO‚̐”
     430$ 静的に生成されたイベントフラグの数
    435431#define TNUM_SFLGID     $LENGTH(FLG.ID_LIST)$$NL$
    436432$NL$
    437433
    438 $ ƒCƒxƒ“ƒgƒtƒ‰ƒOID”ԍ†‚̍őå’l
     434$ イベントフラグID番号の最大値
    439435const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
    440436const ID _kernel_tmax_sflgid = (TMIN_FLGID + TNUM_SFLGID - 1);$NL$
    441437$NL$
    442438
    443 $ ƒCƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     439$ イベントフラグ初期化ブロックの生成
    444440$IF LENGTH(FLG.ID_LIST)$
    445441        const FLGINIB _kernel_flginib_table[TNUM_SFLGID] = {$NL$
    446442        $JOINEACH flgid FLG.ID_LIST ",\n"$
    447 $               // flgatr‚ªimTA_TPRInbmTA_WMULnbmTA_CLRnj‚Å‚È‚¢ê‡iE_RSATRj
     443$               // flgatrが([TA_TPRI]|[TA_WMUL]|[TA_CLR])でない場合(E_RSATR)
    448444                $IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$
    449445                        $ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
    450446                $END$
    451447
    452 $               // iflgptn‚ªFLGPTN‚ÉŠi”[‚Å‚«‚È‚¢ê‡iE_PARj
     448$               // iflgptnがFLGPTNに格納できない場合(E_PAR)
    453449                $IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
    454450                        $ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
    455451                $END$
    456452
    457 $               // ƒCƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN
     453$               // イベントフラグ初期化ブロック
    458454                $TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
    459455        $END$$NL$
     
    463459$END$$NL$
    464460
    465 $ “®“I¶¬ƒCƒxƒ“ƒgƒtƒ‰ƒO—p‚̃Cƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     461$ 動的生成イベントフラグ用のイベントフラグ初期化ブロックの生成
    466462$IF num_aflgid > 0$
    467463        FLGINIB _kernel_aflginib_table[$num_aflgid$];$NL$
     
    470466$END$$NL$
    471467
    472 $ ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN‚̐¶¬
     468$ イベントフラグ管理ブロックの生成
    473469$IF num_flgid > 0$
    474470        FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
     
    478474
    479475$
    480 $  ƒf[ƒ^ƒLƒ
    481 [
     476$  データキュー
    482477$
    483478/*$NL$
     
    486481$NL$
    487482
    488 $ Ã“I‚ɐ¶¬‚³‚ꂽƒf[ƒ^ƒLƒ
    489 [‚̐”
     483$ 静的に生成されたデータキューの数
    490484#define TNUM_SDTQID     $LENGTH(DTQ.ID_LIST)$$NL$
    491485$NL$
    492486
    493 $ ƒf[ƒ^ƒLƒ
    494 [ID”ԍ†‚̍őå’l
     487$ データキューID番号の最大値
    495488const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
    496489const ID _kernel_tmax_sdtqid = (TMIN_DTQID + TNUM_SDTQID - 1);$NL$
     
    499492$IF LENGTH(DTQ.ID_LIST)$
    500493        $FOREACH dtqid DTQ.ID_LIST$
    501 $               // dtqatr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     494$               // dtqatrが([TA_TPRI])でない場合(E_RSATR)
    502495                $IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
    503496                        $ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
    504497                $END$
    505498
    506 $               // dtqcnt‚ª•‰‚̏ꍇiE_PARj
     499$               // dtqcntが負の場合(E_PAR)
    507500                $IF DTQ.DTQCNT[dtqid] < 0$
    508501                        $ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
    509502                $END$
    510503
    511 $               // dtqmb‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     504$               // dtqmbがNULLでない場合(E_NOSPT)
    512505                $IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
    513506                        $ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
    514507                $END$
    515508
    516 $               // ƒf[ƒ^ƒLƒ
    517 [ŠÇ——̈æ
     509$               // データキュー管理領域
    518510                $IF DTQ.DTQCNT[dtqid]$
    519511                        static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
     
    521513        $END$
    522514
    523 $       // ƒf[ƒ^ƒLƒ
    524 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     515$       // データキュー初期化ブロックの生成
    525516        const DTQINIB _kernel_dtqinib_table[TNUM_SDTQID] = {$NL$
    526517        $JOINEACH dtqid DTQ.ID_LIST ",\n"$
     
    532523$END$$NL$
    533524
    534 $ “®“I¶¬ƒf[ƒ^ƒLƒ
    535 [—p‚̃f[ƒ^ƒLƒ
    536 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     525$ 動的生成データキュー用のデータキュー初期化ブロックの生成
    537526$IF num_adtqid > 0$
    538527        DTQINIB _kernel_adtqinib_table[$num_adtqid$];$NL$
     
    541530$END$$NL$
    542531
    543 $ ƒf[ƒ^ƒLƒ
    544 [ŠÇ—ƒuƒƒbƒN‚̐¶¬
     532$ データキュー管理ブロックの生成
    545533$IF num_dtqid > 0$
    546534        DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
     
    550538
    551539$
    552 $  —Dæ“xƒf[ƒ^ƒLƒ
    553 [
     540$  優先度データキュー
    554541$
    555542/*$NL$
     
    558545$NL$
    559546
    560 $ Ã“I‚ɐ¶¬‚³‚ꂽ—Dæ“xƒf[ƒ^ƒLƒ
    561 [‚̐”
     547$ 静的に生成された優先度データキューの数
    562548#define TNUM_SPDQID     $LENGTH(PDQ.ID_LIST)$$NL$
    563549$NL$
    564550
    565 $ —Dæ“xƒf[ƒ^ƒLƒ
    566 [ID”ԍ†‚̍őå’l
     551$ 優先度データキューID番号の最大値
    567552const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
    568553const ID _kernel_tmax_spdqid = (TMIN_PDQID + TNUM_SPDQID - 1);$NL$
     
    571556$IF LENGTH(PDQ.ID_LIST)$
    572557        $FOREACH pdqid PDQ.ID_LIST$
    573 $               // pdqatr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     558$               // pdqatrが([TA_TPRI])でない場合(E_RSATR)
    574559                $IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$
    575560                        $ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$
    576561                $END$
    577562
    578 $               // pdqcnt‚ª•‰‚̏ꍇiE_PARj
     563$               // pdqcntが負の場合(E_PAR)
    579564                $IF PDQ.PDQCNT[pdqid] < 0$
    580565                        $ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
    581566                $END$
    582567
    583 $               // (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)‚Å‚È‚¢ê‡iE_PARj
     568$               // (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)でない場合(E_PAR)
    584569                $IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$
    585570                        $ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$
    586571                $END$
    587572
    588 $               // pdqmb‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     573$               // pdqmbがNULLでない場合(E_NOSPT)
    589574                $IF !EQ(PDQ.PDQMB[pdqid], "NULL")$
    590575                        $ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$
    591576                $END$
    592577
    593 $               // —Dæ“xƒf[ƒ^ƒLƒ
    594 [ŠÇ——̈æ
     578$               // 優先度データキュー管理領域
    595579                $IF PDQ.PDQCNT[pdqid]$
    596580                        static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
     
    598582        $END$
    599583
    600 $       // —Dæ“xƒf[ƒ^ƒLƒ
    601 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     584$       // 優先度データキュー初期化ブロックの生成
    602585        const PDQINIB _kernel_pdqinib_table[TNUM_SPDQID] = {$NL$
    603586        $JOINEACH pdqid PDQ.ID_LIST ",\n"$
     
    609592$END$$NL$
    610593
    611 $ “®“I¶¬—Dæ“xƒf[ƒ^ƒLƒ
    612 [—p‚Ì—Dæ“xƒf[ƒ^ƒLƒ
    613 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     594$ 動的生成優先度データキュー用の優先度データキュー初期化ブロックの生成
    614595$IF num_apdqid > 0$
    615596        PDQINIB _kernel_apdqinib_table[$num_apdqid$];$NL$
     
    618599$END$$NL$
    619600
    620 $ —Dæ“xƒf[ƒ^ƒLƒ
    621 [ŠÇ—ƒuƒƒbƒN‚̐¶¬
     601$ 優先度データキュー管理ブロックの生成
    622602$IF num_pdqid > 0$
    623603        PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
     
    627607
    628608$
    629 ƒ[ƒ‹ƒ{ƒbƒNƒX
     609メールボックス
    630610$
    631611/*$NL$
     
    634614$NL$
    635615
    636 $ Ã“I‚ɐ¶¬‚³‚ꂽƒ[ƒ‹ƒ{ƒbƒNƒX‚̐”
     616$ 静的に生成されたメールボックスの数
    637617#define TNUM_SMBXID     $LENGTH(MBX.ID_LIST)$$NL$
    638618$NL$
    639619
    640 $ ƒ[ƒ‹ƒ{ƒbƒNƒXID”ԍ†‚̍őå’l
     620$ メールボックスID番号の最大値
    641621const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
    642622const ID _kernel_tmax_smbxid = (TMIN_MBXID + TNUM_SMBXID - 1);$NL$
    643623$NL$
    644624
    645 $ ƒ[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     625$ メールボックス初期化ブロックの生成
    646626$IF LENGTH(MBX.ID_LIST)$
    647627        const MBXINIB _kernel_mbxinib_table[TNUM_SMBXID] = {$NL$
    648628        $JOINEACH mbxid MBX.ID_LIST ",\n"$
    649 $               // mbxatr‚ªimTA_TPRInbmTA_MPRInj‚Å‚È‚¢ê‡iE_RSATRj
     629$               // mbxatrが([TA_TPRI]|[TA_MPRI])でない場合(E_RSATR)
    650630                $IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
    651631                        $ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$
    652632                $END$
    653633
    654 $               // (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)‚Å‚È‚¢ê‡iE_PARj
     634$               // (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)でない場合(E_PAR)
    655635                $IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$
    656636                        $ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$
    657637                $END$
    658638
    659 $               // mprihd‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     639$               // mprihdがNULLでない場合(E_NOSPT)
    660640                $IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
    661641                        $ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$
    662642                $END$
    663643
    664 $               // ƒ[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN
     644$               // メールボックス初期化ブロック
    665645                $TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
    666646        $END$$NL$
     
    670650$END$$NL$
    671651
    672 $ “®“I¶¬ƒ[ƒ‹ƒ{ƒbƒNƒX—p‚̃[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     652$ 動的生成メールボックス用のメールボックス初期化ブロックの生成
    673653$IF num_ambxid > 0$
    674654        MBXINIB _kernel_ambxinib_table[$num_ambxid$];$NL$
     
    677657$END$$NL$
    678658
    679 $ ƒ[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN‚̐¶¬
     659$ メールボックス管理ブロックの生成
    680660$IF num_mbxid > 0$
    681661        MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
     
    685665
    686666$
    687 ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹
     667固定長メモリプール
    688668$
    689669/*$NL$
     
    692672$NL$
    693673
    694 $ Ã“I‚ɐ¶¬‚³‚ꂽŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚̐”
     674$ 静的に生成された固定長メモリプールの数
    695675#define TNUM_SMPFID     $LENGTH(MPF.ID_LIST)$$NL$
    696676$NL$
    697677
    698 $ ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ID”ԍ†‚̍őå’l
     678$ 固定長メモリプールID番号の最大値
    699679const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
    700680const ID _kernel_tmax_smpfid = (TMIN_MPFID + TNUM_SMPFID - 1);$NL$
     
    703683$IF LENGTH(MPF.ID_LIST)$
    704684        $FOREACH mpfid MPF.ID_LIST$
    705 $               // mpfatr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     685$               // mpfatrが([TA_TPRI])でない場合(E_RSATR)
    706686                $IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$
    707687                        $ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$
    708688                $END$
    709689
    710 $               // blkcnt‚ª0ˆÈ‰º‚̏ꍇiE_PARj
     690$               // blkcntが0以下の場合(E_PAR)
    711691                $IF MPF.BLKCNT[mpfid] <= 0$
    712692                        $ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$
    713693                $END$
    714694
    715 $               // blksz‚ª0ˆÈ‰º‚̏ꍇiE_PARj
     695$               // blkszが0以下の場合(E_PAR)
    716696                $IF MPF.BLKSZ[mpfid] <= 0$
    717697                        $ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$
    718698                $END$
    719699
    720 $               // ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ
     700$               // 固定長メモリプール領域
    721701                $IF EQ(MPF.MPF[mpfid], "NULL")$
    722702                        static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$
    723703                $END$
    724704
    725 $               // mpfmb‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     705$               // mpfmbがNULLでない場合(E_NOSPT)
    726706                $IF !EQ(MPF.MPFMB[mpfid], "NULL")$
    727707                        $ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$
    728708                $END$
    729709
    730 $               // ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ——̈æ
     710$               // 固定長メモリプール管理領域
    731711                static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
    732712        $END$
    733713
    734 $       // ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     714$       // 固定長メモリプール初期化ブロックの生成
    735715        const MPFINIB _kernel_mpfinib_table[TNUM_SMPFID] = {$NL$
    736716        $JOINEACH mpfid MPF.ID_LIST ",\n"$
     
    742722$END$$NL$
    743723
    744 $ “®“I¶¬ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—p‚̌Œ蒷ƒƒ‚ƒŠƒv[ƒ‹‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     724$ 動的生成固定長メモリプール用の固定長メモリプール初期化ブロックの生成
    745725$IF num_ampfid > 0$
    746726        MPFINIB _kernel_ampfinib_table[$num_ampfid$];$NL$
     
    749729$END$$NL$
    750730
    751 $ ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN‚̐¶¬
     731$ 固定長メモリプール管理ブロックの生成
    752732$IF num_mpfid > 0$
    753733        MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
     
    757737
    758738$
    759 ŽüŠúƒnƒ“ƒhƒ‰
     739周期ハンドラ
    760740$
    761741/*$NL$
     
    764744$NL$
    765745
    766 $ Ã“I‚ɐ¶¬‚³‚ꂽŽüŠúƒnƒ“ƒhƒ‰‚̐”
     746$ 静的に生成された周期ハンドラの数
    767747#define TNUM_SCYCID     $LENGTH(CYC.ID_LIST)$$NL$
    768748$NL$
    769749
    770 $ ŽüŠúƒnƒ“ƒhƒ‰ID”ԍ†‚̍őå’l
     750$ 周期ハンドラID番号の最大値
    771751const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
    772752const ID _kernel_tmax_scycid = (TMIN_CYCID + TNUM_SCYCID - 1);$NL$
    773753$NL$
    774754
    775 $ ŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹‚̐¶¬
     755$ 周期ハンドラ初期化テーブルの生成
    776756$IF LENGTH(CYC.ID_LIST)$
    777757        const CYCINIB _kernel_cycinib_table[TNUM_SCYCID] = {$NL$
    778758        $JOINEACH cycid CYC.ID_LIST ",\n"$
    779 $               // cycatr‚ªimTA_STAnj‚Å‚È‚¢ê‡iE_RSATRj
     759$               // cycatrが([TA_STA])でない場合(E_RSATR)
    780760                $IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
    781761                        $ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
    782762                $END$
    783763
    784 $               // (0 < cyctim && cyctim <= TMAX_RELTIM)‚Å‚È‚¢ê‡iE_PARj
     764$               // (0 < cyctim && cyctim <= TMAX_RELTIM)でない場合(E_PAR)
    785765                $IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$
    786766                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
    787767                $END$
    788768
    789 $               // (0 <= cycphs && cycphs <= TMAX_RELTIM)‚Å‚È‚¢ê‡iE_PARj
     769$               // (0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合(E_PAR)
    790770                $IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$
    791771                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
    792772                $END$
    793773
    794 $               // ŒxFcycatr‚ÉTA_STA‚ªÝ’肳‚ê‚Ä‚¢‚āC(cycphs == 0)‚̏ꍇ
     774$               // 警告:cycatrにTA_STAが設定されていて,(cycphs == 0)の場合
    795775                $IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$
    796776                        $WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
    797777                $END$
    798778
    799 $               // ŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     779$               // 周期ハンドラ初期化ブロック
    800780                $TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
    801781        $END$$NL$
     
    805785$END$$NL$
    806786
    807 $ “®“I¶¬ŽüŠúƒnƒ“ƒhƒ‰—p‚ÌŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     787$ 動的生成周期ハンドラ用の周期ハンドラ初期化ブロックの生成
    808788$IF num_acycid > 0$
    809789        CYCINIB _kernel_acycinib_table[$num_acycid$];$NL$
     
    812792$END$$NL$
    813793
    814 $ ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̐¶¬
     794$ 周期ハンドラ管理ブロックの生成
    815795$IF num_cycid > 0$
    816796        CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
     
    820800
    821801$
    822 ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰
     802アラームハンドラ
    823803$
    824804/*$NL$
     
    827807$NL$
    828808
    829 $ Ã“I‚ɐ¶¬‚³‚ꂽƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̐”
     809$ 静的に生成されたアラームハンドラの数
    830810#define TNUM_SALMID     $LENGTH(ALM.ID_LIST)$$NL$
    831811$NL$
    832812
    833 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ID”ԍ†‚̍őå’l
     813$ アラームハンドラID番号の最大値
    834814const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
    835815const ID _kernel_tmax_salmid = (TMIN_ALMID + TNUM_SALMID - 1);$NL$
    836816$NL$
    837817
    838 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     818$ アラームハンドラ初期化ブロックの生成
    839819$IF LENGTH(ALM.ID_LIST)$
    840820        const ALMINIB _kernel_alminib_table[TNUM_SALMID] = {$NL$
    841821        $JOINEACH almid ALM.ID_LIST ",\n"$
    842 $               // almatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     822$               // almatrが(TA_NULL)でない場合(E_RSATR)
    843823                $IF ALM.ALMATR[almid] != 0$
    844824                        $ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
    845825                $END$
    846826
    847 $               // ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     827$               // アラームハンドラ初期化ブロック
    848828                $TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
    849829        $END$$NL$
     
    853833$END$$NL$
    854834
    855 $ “®“I¶¬ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰—p‚̃Aƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     835$ 動的生成アラームハンドラ用のアラームハンドラ初期化ブロックの生成
    856836$IF num_aalmid > 0$
    857837        ALMINIB _kernel_aalminib_table[$num_aalmid$];$NL$
     
    860840$END$$NL$
    861841
    862 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̐¶¬
     842$ アラームハンドラ管理ブロックの生成
    863843$IF num_almid > 0$
    864844        ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
     
    868848
    869849$
    870 Š„ž‚ÝŠÇ—‹@”\
     850割込み管理機能
    871851$
    872852/*$NL$
     
    875855$NL$
    876856
    877 $ Š„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Ì•ÏŠ·ƒe[ƒuƒ‹‚̍쐬
     857$ 割込み番号と割込みハンドラ番号の変換テーブルの作成
    878858$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
    879859        $ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
     
    887867$END$
    888868
    889 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     869$ 割込み要求ラインに関するエラーチェック
    890870$i = 0$
    891871$FOREACH intno INT.ORDER_LIST$
    892 $       // intno‚ªCFG_INT‚ɑ΂·‚銄ž‚ݔԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     872$       // intnoがCFG_INTに対する割込み番号として正しくない場合(E_PAR)
    893873        $IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
    894874                $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
    895875        $END$
    896876
    897 $       // intno‚ªCFG_INT‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     877$       // intnoがCFG_INTによって設定済みの場合(E_OBJ)
    898878        $j = 0$
    899879        $FOREACH intno2 INT.ORDER_LIST$
     
    904884        $END$
    905885
    906 $       // intatr‚ªimTA_ENAINTnbmTA_EDGEnj‚Å‚È‚¢ê‡iE_RSATRj
     886$       // intatrが([TA_ENAINT]|[TA_EDGE])でない場合(E_RSATR)
    907887        $IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$
    908888                $ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
    909889        $END$
    910890
    911 $       // intpri‚ªCFG_INT‚ɑ΂·‚銄ž‚Ý—Dæ“x‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     891$       // intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR)
    912892        $IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
    913893                $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
    914894        $END$
    915895
    916 $       // ƒJ[ƒlƒ‹ŠÇ—‚ɌŒ肳‚ê‚Ä‚¢‚éintno‚ɑ΂µ‚āCintpri‚ÉTMIN_INTPRI
    917 $       // ‚æ‚è‚à¬‚³‚¢’l‚ªŽw’肳‚ꂽê‡iE_OBJj
     896$       // カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRI
     897$       // よりも小さい値が指定された場合(E_OBJ)
    918898        $IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
    919899                $IF INT.INTPRI[intno] < TMIN_INTPRI$
     
    922902        $END$
    923903
    924 $       // ƒJ[ƒlƒ‹ŠÇ—ŠO‚ɌŒ肳‚ê‚Ä‚¢‚éintno‚ɑ΂µ‚āCintpri‚ÉTMIN_INTPRI
    925 $       // ‚æ‚è‚à¬‚³‚¢’l‚ªŽw’肳‚ê‚È‚©‚Á‚½ê‡iE_OBJj
     904$       // カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRI
     905$       // よりも小さい値が指定されなかった場合(E_OBJ)
    926906        $IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
    927907                $IF INT.INTPRI[intno] >= TMIN_INTPRI$
     
    932912$END$
    933913
    934 $ Š„ž‚݃nƒ“ƒhƒ‰‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     914$ 割込みハンドラに関するエラーチェック
    935915$i = 0$
    936916$FOREACH inhno INH.ORDER_LIST$
    937 $       // inhno‚ªDEF_INH‚ɑ΂·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     917$       // inhnoがDEF_INHに対する割込みハンドラ番号として正しくない場合(E_PAR)
    938918        $IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
    939919                $ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
    940920        $END$
    941921
    942 $       // inhno‚ªDEF_INH‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     922$       // inhnoがDEF_INHによって設定済みの場合(E_OBJ)
    943923        $j = 0$
    944924        $FOREACH inhno2 INH.ORDER_LIST$
     
    949929        $END$
    950930
    951 $       // inhatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     931$       // inhatrが(TA_NULL)でない場合(E_RSATR)
    952932        $IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$
    953933                $ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
    954934        $END$
    955935
    956 $       // ƒJ[ƒlƒ‹ŠÇ—‚ɌŒ肳‚ê‚Ä‚¢‚éinhno‚ɑ΂µ‚āCinhatr‚ÉTA_NONKERNEL
    957 $       //@‚ªŽw’肳‚ê‚Ä‚¢‚éê‡iE_RSATRj
     936$       // カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNEL
     937$       // が指定されている場合(E_RSATR)
    958938        $IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
    959939                $IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
     
    962942        $END$
    963943
    964 $       // ƒJ[ƒlƒ‹ŠÇ—ŠO‚ɌŒ肳‚ê‚Ä‚¢‚éinhno‚ɑ΂µ‚āCinhatr‚ÉTA_NONKERNEL
    965 $       // ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢ê‡iE_RSATRj
     944$       // カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNEL
     945$       // が指定されていない場合(E_RSATR)
    966946        $IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
    967947                $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
     
    972952        $IF LENGTH(INTNO[INH.INHNO[inhno]])$
    973953                $intno = INTNO[INH.INHNO[inhno]]$
    974 $               // inhno‚ɑΉž‚·‚éintno‚ɑ΂·‚éCFG_INT‚ª‚È‚¢ê‡iE_OBJj
     954$               // inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)
    975955                $IF !LENGTH(INT.INTNO[intno])$
    976956                        $ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
    977957                $ELSE$
    978958                        $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
    979 $                               // inhatr‚ÉTA_NONKERNEL‚ªŽw’肳‚ê‚Ä‚¨‚炸Cinhno‚ɑΉž
    980 $                               // ‚·‚éintno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ª
    981 $                               // TMIN_INTPRI‚æ‚è‚à¬‚³‚¢ê‡iE_OBJj
     959$                               // inhatrにTA_NONKERNELが指定されておらず,inhnoに対応
     960$                               // するintnoに対してCFG_INTで設定された割込み優先度が
     961$                               // TMIN_INTPRIよりも小さい場合(E_OBJ)
    982962                                $IF INT.INTPRI[intno] < TMIN_INTPRI$
    983963                                        $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
    984964                                $END$
    985965                        $ELSE$
    986 $                               // inhatr‚ÉTA_NONKERNEL‚ªŽw’肳‚ê‚Ä‚¨‚èCinhno‚ɑΉž
    987 $                               // ‚·‚éintno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ª
    988 $                               // TMIN_INTPRIˆÈã‚Å‚ ‚éê‡iE_OBJj
     966$                               // inhatrにTA_NONKERNELが指定されており,inhnoに対応
     967$                               // するintnoに対してCFG_INTで設定された割込み優先度が
     968$                               // TMIN_INTPRI以上である場合(E_OBJ)
    989969                                $IF INT.INTPRI[intno] >= TMIN_INTPRI$
    990970                                        $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
     
    996976$END$
    997977
    998 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“iISRj‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     978$ 割込みサービスルーチン(ISR)に関するエラーチェック
    999979$FOREACH order ISR.ORDER_LIST$
    1000 $       // isratr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     980$       // isratrが(TA_NULL)でない場合(E_RSATR)
    1001981        $IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$
    1002982                $ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$
    1003983        $END$
    1004984
    1005 $       // intno‚ªATT_ISR‚ɑ΂·‚銄ž‚ݔԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     985$       // intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR)
    1006986        $IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
    1007987                $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
    1008988        $END$
    1009989
    1010 $       // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)‚Å‚È‚¢ê‡iE_PARj
     990$       // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR)
    1011991        $IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
    1012992                $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
     
    1017997        $inhno = INHNO[intno]$
    1018998
    1019 $       // Š„ž‚ݔԍ†intno‚ɑ΂µ‚Ä“o˜^‚³‚ꂽISR‚̃ŠƒXƒg‚̍쐬
     999$       // 割込み番号intnoに対して登録されたISRのリストの作成
    10201000        $isr_order_list = {}$
    10211001        $FOREACH order ISR.ORDER_LIST$
     
    10261006        $END$
    10271007
    1028 $       // Š„ž‚ݔԍ†intno‚ɑ΂µ‚Ä“o˜^‚³‚ꂽISR‚ª‘¶Ý‚·‚éê‡
     1008$       // 割込み番号intnoに対して登録されたISRが存在する場合
    10291009        $IF LENGTH(isr_order_list) > 0$
    1030 $               // intno‚ɑΉž‚·‚éinhno‚ɑ΂µ‚ÄDEF_INH‚ª‚ ‚éê‡iE_OBJj
     1010$               // intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)
    10311011                $IF LENGTH(INH.INHNO[inhno])$
    10321012                        $ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
    10331013                $END$
    10341014
    1035 $               // intno‚ɑ΂·‚éCFG_INT‚ª‚È‚¢ê‡iE_OBJj
     1015$               // intnoに対するCFG_INTがない場合(E_OBJ)
    10361016                $IF !LENGTH(INT.INTNO[intno])$
    10371017                        $ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
    10381018                $ELSE$
    1039 $                       // intno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ªTMIN_INTPRI
    1040 $                       // ‚æ‚è‚à¬‚³‚¢ê‡iE_OBJj
     1019$                       // intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRI
     1020$                       // よりも小さい場合(E_OBJ)
    10411021                        $IF INT.INTPRI[intno] < TMIN_INTPRI$
    10421022                                $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
     
    10461026$END$
    10471027
    1048 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“iISRjŠÇ—‚̃f[ƒ^\‘¢
     1028$ 割込みサービスルーチン(ISR)管理のデータ構造
    10491029$intno_isr_list = {}$
    10501030$FOREACH intno INTNO_ATTISR_VALID$
     
    10821062$END$$NL$
    10831063
    1084 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“iISRjŒÄo‚µ‚Ì‚½‚ß‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚̐¶¬
     1064$ 割込みサービスルーチン(ISR)呼出しのための割込みハンドラの生成
    10851065$FOREACH intno INTNO_ISR$
    10861066        $inhno = INHNO[intno]$
     
    10921072        $INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
    10931073
    1094 $       // ISR—p‚ÌŠ„ž‚݃nƒ“ƒhƒ‰
     1074$       // ISR用の割込みハンドラ
    10951075        void$NL$
    10961076        _kernel_inthdr_$intno$(void)$NL$
     
    11031083$END$
    11041084
    1105 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐”
     1085$ 割込みサービスルーチンの数
    11061086#define TNUM_SISR       $LENGTH(ISR.ORDER_LIST)$$NL$
    11071087#define TNUM_ISR        $LENGTH(ISR.ORDER_LIST) + num_aisrid$$NL$
    11081088$NL$
    11091089
    1110 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ID”ԍ†‚̍őå’l
     1090$ 割込みサービスルーチンID番号の最大値
    11111091const ID _kernel_tmax_isrid = (TMIN_ISRID + TNUM_ISRID - 1);$NL$
    11121092const uint_t _kernel_tnum_sisr = TNUM_SISR;$NL$
    11131093$NL$
    11141094
    1115 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     1095$ 割込みサービスルーチン初期化ブロックの生成
    11161096$IF LENGTH(ISR.ORDER_LIST)$
    11171097        const ISRINIB _kernel_sisrinib_table[TNUM_SISR] = {$NL$
     
    11251105$NL$
    11261106
    1127 $ “®“I¶¬Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—p‚ÌŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‰Šú‰»ƒuƒƒb
    1128 $ ƒN‚̐¶¬
     1107$ 動的生成割込みサービスルーチン用の割込みサービスルーチン初期化ブロッ
     1108$ クの生成
    11291109$IF num_aisrid > 0$
    11301110        ISRINIB _kernel_aisrinib_table[$num_aisrid$];$NL$
     
    11341114$NL$
    11351115
    1136 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN‚̐¶¬
     1116$ 割込みサービスルーチン管理ブロックの生成
    11371117$IF num_isr > 0$
    11381118        ISRCB _kernel_isrcb_table[TNUM_ISR];$NL$
     
    11431123
    11441124$
    1145 Š„ž‚ÝŠÇ—‹@”\‚Ì‚½‚ß‚Ì•W€“I‚ȏ‰Šú‰»î•ñ‚̐¶¬
    1146 $
    1147 $ Š„ž‚݃nƒ“ƒhƒ‰‚̏‰Šú‰»‚É•K—v‚ȏî•ñ
     1125割込み管理機能のための標準的な初期化情報の生成
     1126$
     1127$ 割込みハンドラの初期化に必要な情報
    11481128$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
    11491129
    1150 $ Š„ž‚݃nƒ“ƒhƒ‰”
     1130$ 割込みハンドラ数
    11511131#define TNUM_INHNO      $LENGTH(INH.ORDER_LIST)$$NL$
    11521132const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
     
    11591139$NL$
    11601140
    1161 $ Š„ž‚݃nƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹
     1141$ 割込みハンドラ初期化テーブル
    11621142$IF LENGTH(INH.ORDER_LIST)$
    11631143        const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
     
    11751155$END$
    11761156
    1177 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚̏‰Šú‰»‚É•K—v‚ȏî•ñ
     1157$ 割込み要求ラインの初期化に必要な情報
    11781158$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
    11791159
    1180 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“”
     1160$ 割込み要求ライン数
    11811161#define TNUM_INTNO      $LENGTH(INT.ORDER_LIST)$$NL$
    11821162const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
    11831163$NL$
    11841164
    1185 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‰Šú‰»ƒe[ƒuƒ‹
     1165$ 割込み要求ライン初期化テーブル
    11861166$IF LENGTH(INT.ORDER_LIST)$
    11871167        const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$
     
    11961176
    11971177$
    1198 $  CPU—áŠOŠÇ—‹@”\
     1178$  CPU例外管理機能
    11991179$
    12001180/*$NL$
     
    12031183$NL$
    12041184
    1205 $ CPU—áŠOƒnƒ“ƒhƒ‰‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     1185$ CPU例外ハンドラに関するエラーチェック
    12061186$i = 0$
    12071187$FOREACH excno EXC.ORDER_LIST$
    1208 $       // excno‚ªDEF_EXC‚ɑ΂·‚éCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     1188$       // excnoがDEF_EXCに対するCPU例外ハンドラ番号として正しくない場合(E_PAR)
    12091189        $IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
    12101190                $ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
    12111191        $END$
    12121192
    1213 $       // excno‚ªDEF_EXC‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     1193$       // excnoがDEF_EXCによって設定済みの場合(E_OBJ)
    12141194        $j = 0$
    12151195        $FOREACH excno2 EXC.ORDER_LIST$
     
    12201200        $END$
    12211201
    1222 $       // excatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1202$       // excatrが(TA_NULL)でない場合(E_RSATR)
    12231203        $IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$
    12241204                $ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
     
    12271207$END$
    12281208
    1229 $ CPU—áŠOƒnƒ“ƒhƒ‰‚Ì‚½‚ß‚Ì•W€“I‚ȏ‰Šú‰»î•ñ‚̐¶¬
     1209$ CPU例外ハンドラのための標準的な初期化情報の生成
    12301210$IF !OMIT_INITIALIZE_EXCEPTION$
    12311211
    1232 $ CPU—áŠOƒnƒ“ƒhƒ‰”
     1212$ CPU例外ハンドラ数
    12331213#define TNUM_EXCNO      $LENGTH(EXC.ORDER_LIST)$$NL$
    12341214const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
     
    12391219$NL$
    12401220
    1241 $ CPU—áŠOƒnƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹
     1221$ CPU例外ハンドラ初期化テーブル
    12421222$IF LENGTH(EXC.ORDER_LIST)$
    12431223        const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
     
    12521232
    12531233$
    1254 ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æ
     1234非タスクコンテキスト用のスタック領域
    12551235$
    12561236/*$NL$
     
    12601240
    12611241$IF !LENGTH(ICS.ORDER_LIST)$
    1262 $       // DEF_ICS‚ª‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg’l‚̐ݒè
     1242$       // DEF_ICSがない場合のデフォルト値の設定
    12631243        #ifdef DEFAULT_ISTK$NL$
    12641244        $NL$
     
    12751255$ELSE$
    12761256
    1277 $       // Ã“IAPIuDEF_ICSv‚ª•¡”‚ ‚éiE_OBJj
     1257$       // 静的API「DEF_ICS」が複数ある(E_OBJ)
    12781258        $IF LENGTH(ICS.ORDER_LIST) > 1$
    12791259                $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
    12801260        $END$
    12811261
    1282 $       // istksz‚ª0ˆÈ‰º‚©Cƒ^[ƒQƒbƒg’è‹`‚̍ŏ¬’liTARGET_MIN_ISTKSZj‚æ‚è‚à
    1283 $       // ¬‚³‚¢ê‡iE_PARj
     1262$       // istkszが0以下か,ターゲット定義の最小値(TARGET_MIN_ISTKSZ)よりも
     1263$       // 小さい場合(E_PAR)
    12841264        $IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
    12851265                                                                        && ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
     
    12871267        $END$
    12881268
    1289 $       // istksz‚ªƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     1269$       // istkszがスタック領域のサイズとして正しくない場合(E_PAR)
    12901270        $IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN
    12911271                                                        && (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
     
    12941274
    12951275        $IF EQ(ICS.ISTK[1], "NULL")$
    1296 $               // ƒXƒ^ƒbƒN—̈æ‚ÌŽ©“®Š„•t‚¯
     1276$               // スタック領域の自動割付け
    12971277                static STK_T                            _kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$
    12981278                #define TOPPERS_ISTKSZ          ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$
     
    13051285$NL$
    13061286
    1307 $ ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æ
     1287$ 非タスクコンテキスト用のスタック領域
    13081288const SIZE              _kernel_istksz = TOPPERS_ISTKSZ;$NL$
    13091289STK_T *const    _kernel_istk = TOPPERS_ISTK;$NL$
     
    13151295
    13161296$
    1317 ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ
     1297カーネルが割り付けるメモリ領域
    13181298$
    13191299/*$NL$
     
    13231303
    13241304$IF !LENGTH(KMM.ORDER_LIST)$
    1325 $       // DEF_KMM‚ª‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg’l‚̐ݒè
     1305$       // DEF_KMMがない場合のデフォルト値の設定
    13261306        #define TOPPERS_KMMSZ           0$NL$
    13271307        #define TOPPERS_KMM                     NULL$NL$
    13281308$ELSE$
    1329 $       // Ã“IAPIuDEF_KMMv‚ª•¡”‚ ‚éiE_OBJj
     1309$       // 静的API「DEF_KMM」が複数ある(E_OBJ)
    13301310        $IF LENGTH(KMM.ORDER_LIST) > 1$
    13311311                $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_KMM")$$END$
    13321312        $END$
    13331313
    1334 $       // kmmsz‚ª0ˆÈ‰º‚̏ꍇiE_PARj
     1314$       // kmmszが0以下の場合(E_PAR)
    13351315        $IF KMM.KMMSZ[1] <= 0$
    13361316                $ERROR KMM.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' is zero in %3%"), "kmmsz", KMM.KMMSZ[1], "DEF_KMM")$$END$
    13371317        $END$
    13381318
    1339 $       // kmmsz‚ªƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚̃TƒCƒY‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     1319$       // kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合(E_PAR)
    13401320        $IF !EQ(KMM.KMM[1], "NULL") && CHECK_MB_ALIGN
    13411321                                                        && (KMM.KMMSZ[1] & (CHECK_MB_ALIGN - 1))$
     
    13441324
    13451325        $IF EQ(KMM.KMM[1], "NULL")$
    1346 $               // ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚ÌŽ©“®Š„•t‚¯
     1326$               // カーネルが割り付けるメモリ領域の自動割付け
    13471327                static MB_T                                     _kernel_memory[TOPPERS_COUNT_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))];$NL$
    13481328                #define TOPPERS_KMMSZ           TOPPERS_ROUND_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))$NL$
     
    13551335$NL$
    13561336
    1357 $ ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ
     1337$ カーネルが割り付けるメモリ領域
    13581338const SIZE              _kernel_kmmsz = TOPPERS_KMMSZ;$NL$
    13591339MB_T *const             _kernel_kmm = TOPPERS_KMM;$NL$
     
    13611341
    13621342$
    1363 ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—
     1343タイムイベント管理
    13641344$
    13651345/*$NL$
     
    13711351
    13721352$
    1373 $  Šeƒ‚ƒWƒ
    1374 [ƒ‹‚̏‰Šú‰»ŠÖ”
     1353$  各モジュールの初期化関数
    13751354$
    13761355/*$NL$
     
    13971376
    13981377$
    1399 ‰Šú‰»ƒ‹[ƒ`ƒ“‚ÌŽÀsŠÖ”
     1378初期化ルーチンの実行関数
    14001379$
    14011380/*$NL$
     
    14071386{$NL$
    14081387$FOREACH order INI.ORDER_LIST$
    1409 $       // iniatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1388$       // iniatrが(TA_NULL)でない場合(E_RSATR)
    14101389        $IF INI.INIATR[order] != 0$
    14111390                $ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
     
    14171396
    14181397$
    1419 I—¹ˆ—ƒ‹[ƒ`ƒ“‚ÌŽÀsŠÖ”
     1398終了処理ルーチンの実行関数
    14201399$
    14211400/*$NL$
     
    14271406{$NL$
    14281407$FOREACH rorder TER.RORDER_LIST$
    1429 $       // teratr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1408$       // teratrが(TA_NULL)でない場合(E_RSATR)
    14301409        $IF TER.TERATR[rorder] != 0$
    14311410                $ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_api.csv

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_check.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    88$               Graduate School of Information Science, Nagoya Univ., JAPAN
    99
    10 $   ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11 $   ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12 $   •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13 $   (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14 $       Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15 $       ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16 $   (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17 $       —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19 $       ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21 $       ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22 $   (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23 $       —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24 $       ‚ƁD
    25 $     (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28 $         ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29 $     (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30 $         •ñ‚·‚邱‚ƁD
    31 $   (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32 $       ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33 $       ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34 $       —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35 $       –Ɛӂ·‚邱‚ƁD
     10$   上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11$   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12$   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13$   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14$       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15$       スコード中に含まれていること.
     16$   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17$       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18$       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19$       の無保証規定を掲載すること.
     20$   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21$       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22$       と.
     23$     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24$         作権表示,この利用条件および下記の無保証規定を掲載すること.
     25$     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26$         報告すること.
     27$   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28$       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29$       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30$       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31$       免責すること.
    3632
    37 $   –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38 $   ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39 $   ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40 $   ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41 $   ‚̐ӔC‚𕉂í‚È‚¢D
     33$   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34$   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35$   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36$   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37$   の責任を負わない.
    4238$
    4339$   @(#) $Id$
     
    4642
    4743$
    48 ƒf[ƒ^ƒZƒNƒVƒ‡ƒ“‚ÌLMA‚©‚çVMA‚ւ̃Rƒs[
     44データセクションのLMAからVMAへのコピー
    4945$
    5046$FOREACH lma LMA.ORDER_LIST$
     
    6460
    6561$
    66 ŠÖ”‚̐擪”Ô’n‚̃`ƒFƒbƒN
     62関数の先頭番地のチェック
    6763$
    6864$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
    69 $       // ƒ^ƒXƒN‚ƃ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚̐擪”Ô’n‚̃`ƒFƒbƒN
     65$       // タスクとタスク例外処理ルーチンの先頭番地のチェック
    7066        $tinib = SYMBOL("_kernel_tinib_table")$
    7167        $FOREACH tskid TSK.ID_LIST$
     
    9086        $END$
    9187
    92 $       // ŽüŠúƒnƒ“ƒhƒ‰‚̐擪”Ô’n‚̃`ƒFƒbƒN
     88$       // 周期ハンドラの先頭番地のチェック
    9389        $cycinib = SYMBOL("_kernel_cycinib_table")$
    9490        $FOREACH cycid CYC.ID_LIST$
     
    107103        $END$
    108104
    109 $       // ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̐擪”Ô’n‚̃`ƒFƒbƒN
     105$       // アラームハンドラの先頭番地のチェック
    110106        $alminib = SYMBOL("_kernel_alminib_table")$
    111107        $FOREACH almid ALM.ID_LIST$
     
    124120        $END$
    125121
    126 $       // Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐擪”Ô’n‚̃`ƒFƒbƒN
     122$       // 割込みサービスルーチンの先頭番地のチェック
    127123        $isrinib = SYMBOL("_kernel_sisrinib_table")$
    128124        $FOREACH order ISR.ORDER_LIST$
     
    143139
    144140$
    145 ƒXƒ^ƒbƒN—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     141スタック領域の先頭番地のチェック
    146142$
    147143$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
    148 $       // ƒ^ƒXƒN‚̃Xƒ^ƒbƒN—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     144$       // タスクのスタック領域の先頭番地のチェック
    149145        $tinib = SYMBOL("_kernel_tinib_table")$
    150146        $FOREACH tskid TSK.ID_LIST$
     
    167163        $END$
    168164
    169 $       // ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     165$       // 非タスクコンテキスト用のスタック領域の先頭番地のチェック
    170166        $istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
    171167        $IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
     
    182178
    183179$
    184 ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     180固定長メモリプール領域の先頭番地のチェック
    185181$
    186182$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
    187 $       // ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     183$       // 固定長メモリプール領域の先頭番地のチェック
    188184        $mpfinib = SYMBOL("_kernel_mpfinib_table")$
    189185        $FOREACH mpfid MPF.ID_LIST$
     
    204200
    205201$
    206 ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     202カーネルが割り付けるメモリ領域の先頭番地のチェック
    207203$
    208204$IF CHECK_MB_ALIGN$
    209 $       // ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     205$       // カーネルが割り付けるメモリ領域の先頭番地のチェック
    210206        $kmm = PEEK(SYMBOL("_kernel_kmm"), sizeof_void_ptr)$
    211207        $IF CHECK_MB_ALIGN && (kmm & (CHECK_MB_ALIGN - 1)) != 0$
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_def.csv

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_impl.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  *              TOPPERS/ASPƒJ[ƒlƒ‹“à•”Œü‚¯•W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹
    49  *
    50  *  ‚±‚̃wƒbƒ_ƒtƒ@ƒCƒ‹‚́CƒJ[ƒlƒ‹‚ð\¬‚·‚éƒvƒƒOƒ‰ƒ€‚̃\[ƒXƒtƒ@ƒCƒ‹
    51  *  ‚Å•K‚¸ƒCƒ“ƒNƒ‹[ƒh‚·‚é‚ׂ«•W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹‚Å‚ ‚éD
    52  *
    53  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
    54  *  ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­D‚±‚ê‚É‚æ‚èCƒ}ƒNƒ’è‹`ˆÈŠO‚ð
    55  *  œ‚­‚悤‚É‚È‚Á‚Ä‚¢‚éD
     44 *              TOPPERS/ASPカーネル内部向け標準ヘッダファイル
     45 *
     46 *  このヘッダファイルは,カーネルを構成するプログラムのソースファイル
     47 *  で必ずインクルードするべき標準ヘッダファイルである.
     48 *
     49 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     50 *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
     51 *  除くようになっている.
    5652 */
    5753
     
    6056
    6157/*
    62  *  ƒJ[ƒlƒ‹‚Ì“à•”Ž¯•Ê–¼‚̃Šƒl[ƒ€
     58 *  カーネルの内部識別名のリネーム
    6359 */
    6460#include "kernel_rename.h"
    6561
    6662/*
    67  *  ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ‹¤’ʂ̃wƒbƒ_ƒtƒ@ƒCƒ‹
     63 *  アプリケーションと共通のヘッダファイル
    6864 */
    6965#include <kernel.h>
    7066
    7167/*
    72  *  ƒVƒXƒeƒ€ƒƒO‹@”\‚Ì‚½‚ß‚Ì’è‹`
     68 *  システムログ機能のための定義
    7369 */
    7470#include <t_syslog.h>
    7571
    7672/*
    77  *  Œ^ƒLƒƒƒXƒg‚ðs‚¤ƒ}ƒNƒ‚Ì’è‹`
     73 *  型キャストを行うマクロの定義
    7874 */
    7975#ifndef CAST
     
    8278
    8379/*
    84  *  ƒ^[ƒQƒbƒgˆË‘¶î•ñ‚Ì’è‹`
     80 *  ターゲット依存情報の定義
    8581 */
    8682#include "target_config.h"
    8783
    8884/*
    89  *  ‚·‚ׂĂ̊֐”‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚ß‚Ì’è‹`
     85 *  すべての関数をコンパイルするための定義
    9086 */
    9187#ifdef ALLFUNC
     
    9490
    9591/*
    96  *  ƒrƒbƒgƒtƒB[ƒ‹ƒh‚Å‚Ì•„†–³‚µ®”Œ^
    97  *
    98  *  8ƒrƒbƒgˆÈ‰º‚Ì•‚̃rƒbƒgƒtƒB[ƒ‹ƒh‚ŁC•„†–³‚µ®”’l‚ð•ÛŽ‚µ‚½‚¢ê‡
    99  *  ‚É—p‚¢‚é‚ׂ«ƒf[ƒ^Œ^DANSI C‚ł́CƒrƒbƒgƒtƒB[ƒ‹ƒh‚̃f[ƒ^Œ^‚É‚Í
    100  *  int‚Æunsigned int‚µ‚©‹–‚³‚ê‚È‚¢‚½‚߁CƒfƒtƒHƒ‹ƒg‚Ì’è‹`‚Íunsigned
    101  *  int‚Æ‚µ‚Ä‚¢‚邪Cƒ^[ƒQƒbƒg‚¨‚æ‚уc[ƒ‹ˆË‘¶‚ŁCunsigned char‚Ü‚½‚Í
    102  *  unsigned short‚É’è‹`‚µ‚½•û‚ªŒø—¦‚ª—Ç‚¢ê‡‚ª‚ ‚éD
     92 *  ビットフィールドでの符号無し整数型
     93 *
     94 *  8ビット以下の幅のビットフィールドで,符号無し整数値を保持したい場合
     95 *  に用いるべきデータ型.ANSI Cでは,ビットフィールドのデータ型には
     96 *  intとunsigned intしか許されないため,デフォルトの定義はunsigned
     97 *  intとしているが,ターゲットおよびツール依存で,unsigned charまたは
     98 *  unsigned shortに定義した方が効率が良い場合がある.
    10399 */
    104100#ifndef BIT_FIELD_UINT
     
    107103
    108104/*
    109  *  ƒrƒbƒgƒtƒB[ƒ‹ƒh‚ł̃u[ƒ‹Œ^
    110  *
    111  *  1ƒrƒbƒg•‚̃rƒbƒgƒtƒB[ƒ‹ƒh‚ŁCƒu[ƒ‹’l‚ð•ÛŽ‚µ‚½‚¢ê‡‚É—p‚¢‚é‚ׂ«
    112  *  ƒf[ƒ^Œ^DƒfƒtƒHƒ‹ƒg‚Å‚ÍBIT_FIELD_UINT‚Æ“¯ˆê‚É’è‹`‚µ‚Ä‚¢‚邪Cƒu[
    113  *  ƒ‹’l‚ð•ÛŽ‚·‚邱‚Ƃ𖾎¦‚·‚邽‚ß‚É•Ê‚Ì–¼Ì‚Æ‚µ‚Ä‚¢‚éD
     105 *  ビットフィールドでのブール型
     106 *
     107 *  1ビット幅のビットフィールドで,ブール値を保持したい場合に用いるべき
     108 *  データ型.デフォルトではBIT_FIELD_UINTと同一に定義しているが,ブー
     109 *  ル値を保持することを明示するために別の名称としている.
    114110 */
    115111#ifndef BIT_FIELD_BOOL
     
    118114
    119115/*
    120  *  ƒIƒuƒWƒFƒNƒgID‚̍ŏ¬’l‚Ì’è‹`
    121  */
    122 #define TMIN_TSKID              1               /* ƒ^ƒXƒNID‚̍ŏ¬’l */
    123 #define TMIN_SEMID              1               /* ƒZƒ}ƒtƒHID‚̍ŏ¬’l */
    124 #define TMIN_FLGID              1               /* ƒtƒ‰ƒOID‚̍ŏ¬’l */
    125 #define TMIN_DTQID              1               /* ƒf[ƒ^ƒLƒ
    126 [ID‚̍ŏ¬’l */
    127 #define TMIN_PDQID              1               /* —Dæ“xƒf[ƒ^ƒLƒ
    128 [ID‚̍ŏ¬’l */
    129 #define TMIN_MBXID              1               /* ƒ[ƒ‹ƒ{ƒbƒNƒXID‚̍ŏ¬’l */
    130 #define TMIN_MPFID              1               /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ID‚̍ŏ¬’l */
    131 #define TMIN_CYCID              1               /* ŽüŠúƒnƒ“ƒhƒ‰ID‚̍ŏ¬’l */
    132 #define TMIN_ALMID              1               /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ID‚̍ŏ¬’l */
    133 #define TMIN_ISRID              1               /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ID‚̍ŏ¬’l */
    134 
    135 /*
    136  *  —Dæ“x‚Ì’iŠK”‚Ì’è‹`
     116 *  オブジェクトIDの最小値の定義
     117 */
     118#define TMIN_TSKID              1               /* タスクIDの最小値 */
     119#define TMIN_SEMID              1               /* セマフォIDの最小値 */
     120#define TMIN_FLGID              1               /* フラグIDの最小値 */
     121#define TMIN_DTQID              1               /* データキューIDの最小値 */
     122#define TMIN_PDQID              1               /* 優先度データキューIDの最小値 */
     123#define TMIN_MBXID              1               /* メールボックスIDの最小値 */
     124#define TMIN_MPFID              1               /* 固定長メモリプールIDの最小値 */
     125#define TMIN_CYCID              1               /* 周期ハンドラIDの最小値 */
     126#define TMIN_ALMID              1               /* アラームハンドラIDの最小値 */
     127#define TMIN_ISRID              1               /* 割込みサービスルーチンIDの最小値 */
     128
     129/*
     130 *  優先度の段階数の定義
    137131 */
    138132#define TNUM_TPRI               (TMAX_TPRI - TMIN_TPRI + 1)
     
    141135
    142136/*
    143  *  ƒJ[ƒlƒ‹“à•”‚ÅŽg—p‚·‚é‘®«‚Ì’è‹`
    144  */
    145 #define TA_NOEXS                ((ATR)(-1))                     /* –¢“o˜^ó‘Ô */
     137 *  カーネル内部で使用する属性の定義
     138 */
     139#define TA_NOEXS                ((ATR)(-1))                     /* 未登録状態 */
    146140
    147141#ifndef TA_MEMALLOC
    148 #define TA_MEMALLOC             UINT_C(0x8000)          /* ƒƒ‚ƒŠ—̈æ‚ðƒJ[ƒlƒ‹‚ÅŠm•Û */
     142#define TA_MEMALLOC             UINT_C(0x8000)          /* メモリ領域をカーネルで確保 */
    149143#endif /* TA_MEMALLOC */
    150144#ifndef TA_MBALLOC
    151 #define TA_MBALLOC              UINT_C(0x4000)          /* ŠÇ——̈æ‚ðƒJ[ƒlƒ‹‚ÅŠm•Û */
     145#define TA_MBALLOC              UINT_C(0x4000)          /* 管理領域をカーネルで確保 */
    152146#endif /* TA_MBALLOC */
    153147
    154148/*
    155  *  ƒ^[ƒQƒbƒg’è‹`‚̃Gƒ‰[ƒ`ƒFƒbƒNƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’l‚Ì’è‹`
     149 *  ターゲット定義のエラーチェックマクロのデフォルト値の定義
    156150 */
    157151#ifndef TARGET_TSKATR
    158 #define TARGET_TSKATR           0U              /* ƒ^[ƒQƒbƒg’è‹`‚̃^ƒXƒN‘®« */
     152#define TARGET_TSKATR           0U              /* ターゲット定義のタスク属性 */
    159153#endif /* TARGET_TSKATR */
    160154
    161155#ifndef TARGET_ISRATR
    162 #define TARGET_ISRATR           0U              /* ƒ^[ƒQƒbƒg’è‹`‚ÌISR‘®« */
     156#define TARGET_ISRATR           0U              /* ターゲット定義のISR属性 */
    163157#endif /* TARGET_ISRATR */
    164158
    165159/*
    166  *  ƒwƒbƒ_ƒtƒ@ƒCƒ‹‚ðŽ‚½‚È‚¢ƒ‚ƒWƒ
    167 [ƒ‹‚̊֐”E•Ï”‚̐錾
     160 *  ヘッダファイルを持たないモジュールの関数・変数の宣言
    168161 */
    169162#ifndef TOPPERS_MACRO_ONLY
    170163
    171164/*
    172  *  Šeƒ‚ƒWƒ
    173 [ƒ‹‚̏‰Šú‰»ikernel_cfg.cj
     165 *  各モジュールの初期化(kernel_cfg.c)
    174166 */
    175167extern void     initialize_object(void);
    176168
    177169/*
    178  *  ‰Šú‰»ƒ‹[ƒ`ƒ“‚ÌŽÀsikernel_cfg.cj
     170 *  初期化ルーチンの実行(kernel_cfg.c)
    179171 */
    180172extern void     call_inirtn(void);
    181173
    182174/*
    183  *  I—¹ˆ—ƒ‹[ƒ`ƒ“‚ÌŽÀsikernel_cfg.cj
     175 *  終了処理ルーチンの実行(kernel_cfg.c)
    184176 */
    185177extern void     call_terrtn(void);
    186178
    187179/*
    188  *  ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æikernel_cfg.cj
    189  */
    190 extern const SIZE       istksz;         /* ƒXƒ^ƒbƒN—̈æ‚̃TƒCƒYiŠÛ‚ß‚½’lj */
    191 extern STK_T *const     istk;           /* ƒXƒ^ƒbƒN—̈æ‚̐擪”Ô’n */
     180 *  非タスクコンテキスト用のスタック領域(kernel_cfg.c)
     181 */
     182extern const SIZE       istksz;         /* スタック領域のサイズ(丸めた値) */
     183extern STK_T *const     istk;           /* スタック領域の先頭番地 */
    192184#ifdef TOPPERS_ISTKPT
    193 extern STK_T *const     istkpt;         /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚̏‰Šú’l */
     185extern STK_T *const     istkpt;         /* スタックポインタの初期値 */
    194186#endif /* TOPPERS_ISTKPT */
    195187
    196188/*
    197  *  ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æikernel_cfg.cj
    198  */
    199 extern const SIZE       kmmsz;          /* ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚̃TƒCƒY */
    200 extern MB_T *const      kmm;            /* ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚̐擪”Ô’n */
    201 
    202 /*
    203  *  ƒJ[ƒlƒ‹“®ìó‘Ôƒtƒ‰ƒOistartup.cj
     189 *  カーネルが割り付けるメモリ領域(kernel_cfg.c)
     190 */
     191extern const SIZE       kmmsz;          /* カーネルが割り付けるメモリ領域のサイズ */
     192extern MB_T *const      kmm;            /* カーネルが割り付けるメモリ領域の先頭番地 */
     193
     194/*
     195 *  カーネル動作状態フラグ(startup.c)
    204196 */
    205197extern bool_t   kerflg;
    206198
    207199/*
    208  *  ƒJ[ƒlƒ‹‚Ì‹N“®istartup.cj
     200 *  カーネルの起動(startup.c)
    209201 */
    210202extern void     sta_ker(void);
    211203
    212204/*
    213  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—istartup.cj
     205 *  カーネルの終了処理(startup.c)
    214206 */
    215207extern void     exit_kernel(void);
    216208
    217209/*
    218  *  ƒJ[ƒlƒ‹‚ÌŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚ÌŠÇ—istartup.cj
     210 *  カーネルの割り付けるメモリ領域の管理(startup.c)
    219211 */
    220212extern void initialize_kmm(void);
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_int.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              kernel_cfg.ci‚¨‚æ‚Ñcfg1_out.cj—pƒwƒbƒ_ƒtƒ@ƒCƒ‹
     44 *              kernel_cfg.c(およびcfg1_out.c)用ヘッダファイル
    4945 */
    5046
     
    5349
    5450/*
    55  *  ƒJ[ƒlƒ‹•W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹
     51 *  カーネル標準ヘッダファイル
    5652 */
    5753#include "kernel_impl.h"
    5854
    5955/*
    60  *  ƒJ[ƒlƒ‹‚ÌŠeƒwƒbƒ_ƒtƒ@ƒCƒ‹
     56 *  カーネルの各ヘッダファイル
    6157 */
    6258#include "task.h"
     
    7470
    7571/*
    76  *  ƒŠƒl[ƒ€‚µ‚½ƒVƒ“ƒ{ƒ‹‚ðŒ³‚É–ß‚·‚½‚߂̃wƒbƒ_ƒtƒ@ƒCƒ‹
     72 *  リネームしたシンボルを元に戻すためのヘッダファイル
    7773 */
    7874#include "kernel_unrename.h"
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_rename.def

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_rename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel_unrename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/kernel/mailbox.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒ[ƒ‹ƒ{ƒbƒNƒX‹@”\
     44 *              メールボックス機能
    4945 */
    5046
     
    5652
    5753/*
    58  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     54 *  トレースログマクロのデフォルト定義
    5955 */
    6056#ifndef LOG_ACRE_MBX_ENTER
     
    123119
    124120/*
    125  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚̐”
     121 *  メールボックスの数
    126122 */
    127123#define tnum_mbx        ((uint_t)(tmax_mbxid - TMIN_MBXID + 1))
     
    129125
    130126/*
    131  *  ƒ[ƒ‹ƒ{ƒbƒNƒXID‚©‚烁[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     127 *  メールボックスIDからメールボックス管理ブロックを取り出すためのマクロ
    132128 */
    133129#define INDEX_MBX(mbxid)        ((uint_t)((mbxid) - TMIN_MBXID))
     
    137133
    138134/*
    139  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒ[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     135 *  使用していないメールボックス管理ブロックのリスト
    140136 */
    141137QUEUE   free_mbxcb;
    142138
    143139/*
    144  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‹@”\‚̏‰Šú‰»
     140 *  メールボックス機能の初期化
    145141 */
    146142void
     
    170166
    171167/*
    172  *  ƒƒbƒZ[ƒW—Dæ“x‚ÌŽæo‚µ
     168 *  メッセージ優先度の取出し
    173169 */
    174170#define MSGPRI(pk_msg)  (((T_MSG_PRI *)(pk_msg))->msgpri)
    175171
    176172/*
    177  *  —Dæ“x‡ƒƒbƒZ[ƒWƒLƒ
    178 [‚Ö‚Ì‘}“ü
     173 *  優先度順メッセージキューへの挿入
    179174 */
    180175Inline void
     
    194189
    195190/*
    196  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚̐¶¬
     191 *  メールボックスの生成
    197192 */
    198193#ifdef TOPPERS_acre_mbx
     
    235230
    236231/*
    237  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚̍폜
     232 *  メールボックスの削除
    238233 */
    239234#ifdef TOPPERS_del_mbx
     
    279274
    280275/*
    281  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚Ö‚Ì‘—M
     276 *  メールボックスへの送信
    282277 */
    283278#ifdef TOPPERS_snd_mbx
     
    337332
    338333/*
    339  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚©‚ç‚ÌŽóM
     334 *  メールボックスからの受信
    340335 */
    341336#ifdef TOPPERS_rcv_mbx
     
    381376
    382377/*
    383  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚©‚ç‚ÌŽóMiƒ|[ƒŠƒ“ƒOj
     378 *  メールボックスからの受信(ポーリング)
    384379 */
    385380#ifdef TOPPERS_prcv_mbx
     
    418413
    419414/*
    420  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚©‚ç‚ÌŽóMiƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     415 *  メールボックスからの受信(タイムアウトあり)
    421416 */
    422417#ifdef TOPPERS_trcv_mbx
     
    468463
    469464/*
    470  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚̍ú‰»
     465 *  メールボックスの再初期化
    471466 */
    472467#ifdef TOPPERS_ini_mbx
     
    506501
    507502/*
    508  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‚̏ó‘ÔŽQÆ
     503 *  メールボックスの状態参照
    509504 */
    510505#ifdef TOPPERS_ref_mbx
  • UsbWattMeter/trunk/asp_dcre/kernel/mailbox.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒ[ƒ‹ƒ{ƒbƒNƒX‹@”\
     44 *              メールボックス機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN
     53 *  メールボックス初期化ブロック
    5854 *
    59  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    60  *  iWOBJINIBj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    61  *  Å‰‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     55 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     56 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     57 *  最初のフィールドが共通になっている.
    6258 */
    6359typedef struct mailbox_initialization_block {
    64         ATR                     mbxatr;                 /* ƒ[ƒ‹ƒ{ƒbƒNƒX‘®« */
    65         PRI                     maxmpri;                /* ƒƒbƒZ[ƒW—Dæ“x‚̍őå’l */
     60        ATR                     mbxatr;                 /* メールボックス属性 */
     61        PRI                     maxmpri;                /* メッセージ優先度の最大値 */
    6662} MBXINIB;
    6763
    6864/*
    69  *  ƒ[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN
     65 *  メールボックス管理ブロック
    7066 *
    71  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ªiWOBJCBj
    72  *  ‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁCÅ‰‚Ì2‚‚Ì
    73  *  ƒtƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     67 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     68 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     69 *  フィールドが共通になっている.
    7470 *
    75  *  ƒƒbƒZ[ƒWƒLƒ
    76 [‚ªƒƒbƒZ[ƒW‚Ì—Dæ“x‡‚̏ꍇ‚ɂ́Cpk_last‚ÍŽg‚í‚È
    77  *  ‚¢D‚Ü‚½CƒƒbƒZ[ƒWƒLƒ
    78 [‚ª‹ó‚̏ꍇipk_head‚ªNULL‚̏ꍇj‚É‚àC
    79  *  pk_last‚Í–³Œø‚Å‚ ‚éD
     71 *  メッセージキューがメッセージの優先度順の場合には,pk_lastは使わな
     72 *  い.また,メッセージキューが空の場合(pk_headがNULLの場合)にも,
     73 *  pk_lastは無効である.
    8074 */
    8175typedef struct mailbox_control_block {
    82         QUEUE           wait_queue;             /* ƒ[ƒ‹ƒ{ƒbƒNƒX‘Ò‚¿ƒLƒ
    83 [ */
    84         const MBXINIB *p_mbxinib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    85         T_MSG           *pk_head;               /* æ“ª‚̃ƒbƒZ[ƒW */
    86         T_MSG           *pk_last;               /* ––”ö‚̃ƒbƒZ[ƒW */
     76        QUEUE           wait_queue;             /* メールボックス待ちキュー */
     77        const MBXINIB *p_mbxinib;       /* 初期化ブロックへのポインタ */
     78        T_MSG           *pk_head;               /* 先頭のメッセージ */
     79        T_MSG           *pk_last;               /* 末尾のメッセージ */
    8780} MBXCB;
    8881
    8982/*
    90  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‘Ò‚¿î•ñƒuƒƒbƒN‚Ì’è‹`
     83 *  メールボックス待ち情報ブロックの定義
    9184 *
    92  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿î•ñƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    93  *  iWINFO_WOBJj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    94  *  Å‰‚Ì2‚‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     85 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     86 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     87 *  最初の2つのフィールドが共通になっている.
    9588 */
    9689typedef struct mailbox_waiting_information {
    97         WINFO           winfo;                  /* •W€‚Ì‘Ò‚¿î•ñƒuƒƒbƒN */
    98         MBXCB           *p_mbxcb;               /* ‘Ò‚Á‚Ä‚¢‚郁[ƒ‹ƒ{ƒbƒNƒX‚ÌŠÇ—ƒuƒƒbƒN */
    99         T_MSG           *pk_msg;                /* ŽóM‚µ‚½ƒƒbƒZ[ƒW */
     90        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     91        MBXCB           *p_mbxcb;               /* 待っているメールボックスの管理ブロック */
     92        T_MSG           *pk_msg;                /* 受信したメッセージ */
    10093} WINFO_MBX;
    10194
    10295/*
    103  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒ[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     96 *  使用していないメールボックス管理ブロックのリスト
    10497 */
    10598extern QUEUE    free_mbxcb;
    10699
    107100/*
    108  *  ƒ[ƒ‹ƒ{ƒbƒNƒXID‚̍őå’likernel_cfg.cj
     101 *  メールボックスIDの最大値(kernel_cfg.c)
    109102 */
    110103extern const ID tmax_mbxid;
     
    112105
    113106/*
    114  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     107 *  メールボックス初期化ブロックのエリア(kernel_cfg.c)
    115108 */
    116109extern const MBXINIB    mbxinib_table[];
     
    118111
    119112/*
    120  *  ƒ[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     113 *  メールボックス管理ブロックのエリア(kernel_cfg.c)
    121114 */
    122115extern MBXCB    mbxcb_table[];
    123116
    124117/*
    125  *  ƒ[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN‚©‚烁[ƒ‹ƒ{ƒbƒNƒXID‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     118 *  メールボックス管理ブロックからメールボックスIDを取り出すためのマクロ
    126119 */
    127120#define MBXID(p_mbxcb)  ((ID)(((p_mbxcb) - mbxcb_table) + TMIN_MBXID))
    128121
    129122/*
    130  *  ƒ[ƒ‹ƒ{ƒbƒNƒX‹@”\‚̏‰Šú‰»
     123 *  メールボックス機能の初期化
    131124 */
    132125extern void     initialize_mailbox(void);
  • UsbWattMeter/trunk/asp_dcre/kernel/mempfix.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‹@”\
     44 *              固定長メモリプール機能
    4945 */
    5046
     
    5652
    5753/*
    58  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     54 *  トレースログマクロのデフォルト定義
    5955 */
    6056#ifndef LOG_ACRE_MPF_ENTER
     
    123119
    124120/*
    125  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚̐”
     121 *  固定長メモリプールの数
    126122 */
    127123#define tnum_mpf        ((uint_t)(tmax_mpfid - TMIN_MPFID + 1))
     
    129125
    130126/*
    131  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ID‚©‚çŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½
    132  *  ‚߂̃}ƒNƒ
     127 *  固定長メモリプールIDから固定長メモリプール管理ブロックを取り出すた
     128 *  めのマクロ
    133129 */
    134130#define INDEX_MPF(mpfid)        ((uint_t)((mpfid) - TMIN_MPFID))
     
    136132
    137133/*
    138  *  “ÁŽê‚ȃCƒ“ƒfƒbƒNƒX’l‚Ì’è‹`
    139  */
    140 #define INDEX_NULL              (~0U)           /* ‹ó‚«ƒuƒƒbƒNƒŠƒXƒg‚̍Ōã */
    141 #define INDEX_ALLOC             (~1U)           /* Š„“–‚čς݂̃uƒƒbƒN */
     134 *  特殊なインデックス値の定義
     135 */
     136#define INDEX_NULL              (~0U)           /* 空きブロックリストの最後 */
     137#define INDEX_ALLOC             (~1U)           /* 割当て済みのブロック */
    142138
    143139#ifdef TOPPERS_mpfini
    144140
    145141/*
    146  *  Žg—p‚µ‚Ä‚¢‚È‚¢ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     142 *  使用していない固定長メモリプール管理ブロックのリスト
    147143 */
    148144QUEUE   free_mpfcb;
    149145
    150146/*
    151  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‹@”\‚̏‰Šú‰»
     147 *  固定長メモリプール機能の初期化
    152148 */
    153149void
     
    179175
    180176/*
    181  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚©‚çƒuƒƒbƒN‚ðŠl“¾
     177 *  固定長メモリプールからブロックを獲得
    182178 */
    183179#ifdef TOPPERS_mpfget
     
    205201
    206202/*
    207  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚̐¶¬
     203 *  固定長メモリプールの生成
    208204 */
    209205#ifdef TOPPERS_acre_mpf
     
    284280
    285281/*
    286  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚̍폜
     282 *  固定長メモリプールの削除
    287283 */
    288284#ifdef TOPPERS_del_mpf
     
    334330
    335331/*
    336  *  ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚ÌŠl“¾
     332 *  固定長メモリブロックの獲得
    337333 */
    338334#ifdef TOPPERS_get_mpf
     
    377373
    378374/*
    379  *  ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚ÌŠl“¾iƒ|[ƒŠƒ“ƒOj
     375 *  固定長メモリブロックの獲得(ポーリング)
    380376 */
    381377#ifdef TOPPERS_pget_mpf
     
    413409
    414410/*
    415  *  ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚ÌŠl“¾iƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     411 *  固定長メモリブロックの獲得(タイムアウトあり)
    416412 */
    417413#ifdef TOPPERS_tget_mpf
     
    462458
    463459/*
    464  *  ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚Ì•Ô‹p
     460 *  固定長メモリブロックの返却
    465461 */
    466462#ifdef TOPPERS_rel_mpf
     
    519515
    520516/*
    521  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚̍ú‰»
     517 *  固定長メモリプールの再初期化
    522518 */
    523519#ifdef TOPPERS_ini_mpf
     
    559555
    560556/*
    561  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚̏ó‘ÔŽQÆ
     557 *  固定長メモリプールの状態参照
    562558 */
    563559#ifdef TOPPERS_ref_mpf
  • UsbWattMeter/trunk/asp_dcre/kernel/mempfix.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‹@”\
     44 *              固定長メモリプール機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒNŠÇ—ƒuƒƒbƒN
     53 *  固定長メモリブロック管理ブロック
    5854 *
    59  *  nextƒtƒB[ƒ‹ƒh‚ɂ́Cƒƒ‚ƒŠƒuƒƒbƒN‚ªŠ„“–‚čς݂̏ꍇ‚ÍINDEX_ALLOC‚ðC
    60  *  –¢Š„“–‚Ă̏ꍇ‚ÍŽŸ‚Ì–¢Š„“–‚ăuƒƒbƒN‚̃Cƒ“ƒfƒbƒNƒX”ԍ†‚ðŠi”[‚·‚éD
    61  *  ÅŒã‚Ì–¢Š„“–‚ăuƒƒbƒN‚̏ꍇ‚ɂ́CINDEX_NULL‚ðŠi”[‚·‚éD
     55 *  nextフィールドには,メモリブロックが割当て済みの場合はINDEX_ALLOCを,
     56 *  未割当ての場合は次の未割当てブロックのインデックス番号を格納する.
     57 *  最後の未割当てブロックの場合には,INDEX_NULLを格納する.
    6258 */
    6359typedef struct fixed_memoryblock_management_block {
    64         uint_t          next;                   /* ŽŸ‚Ì–¢Š„“–‚ăuƒƒbƒN */
     60        uint_t          next;                   /* 次の未割当てブロック */
    6561} MPFMB;
    6662
    6763/*
    68  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‰Šú‰»ƒuƒƒbƒN
     64 *  固定長メモリプール初期化ブロック
    6965 *
    70  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    71  *  iWOBJINIBj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    72  *  Å‰‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     66 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     67 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     68 *  最初のフィールドが共通になっている.
    7369 */
    7470typedef struct fixed_memorypool_initialization_block {
    75         ATR                     mpfatr;                 /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‘®« */
    76         uint_t          blkcnt;                 /* ƒƒ‚ƒŠƒuƒƒbƒN” */
    77         uint_t          blksz;                  /* ƒƒ‚ƒŠƒuƒƒbƒN‚̃TƒCƒYiŠÛ‚ß‚½’lj */
    78         void            *mpf;                   /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̐擪”Ô’n */
    79         MPFMB           *p_mpfmb;               /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ——̈æ‚̐擪”Ô’n */
     71        ATR                     mpfatr;                 /* 固定長メモリプール属性 */
     72        uint_t          blkcnt;                 /* メモリブロック数 */
     73        uint_t          blksz;                  /* メモリブロックのサイズ(丸めた値) */
     74        void            *mpf;                   /* 固定長メモリプール領域の先頭番地 */
     75        MPFMB           *p_mpfmb;               /* 固定長メモリプール管理領域の先頭番地 */
    8076} MPFINIB;
    8177
    8278/*
    83  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN
     79 *  固定長メモリプール管理ブロック
    8480 *
    85  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ªiWOBJCBj
    86  *  ‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁCÅ‰‚Ì2‚‚Ì
    87  *  ƒtƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     81 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     82 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     83 *  フィールドが共通になっている.
    8884 */
    8985typedef struct fixed_memorypool_control_block {
    90         QUEUE           wait_queue;             /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‘Ò‚¿ƒLƒ
    91 [ */
    92         const MPFINIB *p_mpfinib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    93         uint_t          fblkcnt;                /* –¢Š„“–‚ăuƒƒbƒN” */
    94         uint_t          unused;                 /* –¢Žg—pƒuƒƒbƒN‚̐擪 */
    95         uint_t          freelist;               /* –¢Š„“–‚ăuƒƒbƒN‚̃ŠƒXƒg */
     86        QUEUE           wait_queue;             /* 固定長メモリプール待ちキュー */
     87        const MPFINIB *p_mpfinib;       /* 初期化ブロックへのポインタ */
     88        uint_t          fblkcnt;                /* 未割当てブロック数 */
     89        uint_t          unused;                 /* 未使用ブロックの先頭 */
     90        uint_t          freelist;               /* 未割当てブロックのリスト */
    9691} MPFCB;
    9792
    9893/*
    99  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‘Ò‚¿î•ñƒuƒƒbƒN‚Ì’è‹`
     94 *  固定長メモリプール待ち情報ブロックの定義
    10095 *
    101  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿î•ñƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    102  *  iWINFO_WOBJj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    103  *  Å‰‚Ì2‚‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     96 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     97 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     98 *  最初の2つのフィールドが共通になっている.
    10499 */
    105100typedef struct fixed_memorypool_waiting_information {
    106         WINFO           winfo;                  /* •W€‚Ì‘Ò‚¿î•ñƒuƒƒbƒN */
    107         MPFCB           *p_mpfcb;               /* ‘Ò‚Á‚Ä‚¢‚éŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚ÌŠÇ—ƒuƒƒbƒN*/
    108         void            *blk;                   /* Šl“¾‚µ‚½ƒƒ‚ƒŠƒuƒƒbƒN */
     101        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     102        MPFCB           *p_mpfcb;               /* 待っている固定長メモリプールの管理ブロック*/
     103        void            *blk;                   /* 獲得したメモリブロック */
    109104} WINFO_MPF;
    110105
    111106/*
    112  *  Žg—p‚µ‚Ä‚¢‚È‚¢ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     107 *  使用していない固定長メモリプール管理ブロックのリスト
    113108 */
    114109extern QUEUE    free_mpfcb;
    115110
    116111/*
    117  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ID‚̍őå’likernel_cfg.cj
     112 *  固定長メモリプールIDの最大値(kernel_cfg.c)
    118113 */
    119114extern const ID tmax_mpfid;
     
    121116
    122117/*
    123  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     118 *  固定長メモリプール初期化ブロックのエリア(kernel_cfg.c)
    124119 */
    125120extern const MPFINIB    mpfinib_table[];
     
    127122
    128123/*
    129  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     124 *  固定長メモリプール管理ブロックのエリア(kernel_cfg.c)
    130125 */
    131126extern MPFCB    mpfcb_table[];
    132127
    133128/*
    134  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN‚©‚çŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ID‚ðŽæ‚èo‚·‚½
    135  *  ‚߂̃}ƒNƒ
     129 *  固定長メモリプール管理ブロックから固定長メモリプールIDを取り出すた
     130 *  めのマクロ
    136131 */
    137132#define MPFID(p_mpfcb)  ((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID))
    138133
    139134/*
    140  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‹@”\‚̏‰Šú‰»
     135 *  固定長メモリプール機能の初期化
    141136 */
    142137extern void     initialize_mempfix(void);
    143138
    144139/*
    145  *  ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚©‚çƒuƒƒbƒN‚ðŠl“¾
     140 *  固定長メモリプールからブロックを獲得
    146141 */
    147142extern void     get_mpf_block(MPFCB *p_mpfcb, void **p_blk);
  • UsbWattMeter/trunk/asp_dcre/kernel/pridataq.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              —Dæ“xƒf[ƒ^ƒLƒ
    49 [‹@”\
     44 *              優先度データキュー機能
    5045 */
    5146
     
    5752
    5853/*
    59  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     54 *  トレースログマクロのデフォルト定義
    6055 */
    6156#ifndef LOG_ACRE_PDQ_ENTER
     
    148143
    149144/*
    150  *  —Dæ“xƒf[ƒ^ƒLƒ
    151 [‚̐”
     145 *  優先度データキューの数
    152146 */
    153147#define tnum_pdq        ((uint_t)(tmax_pdqid - TMIN_PDQID + 1))
     
    155149
    156150/*
    157  *  —Dæ“xƒf[ƒ^ƒLƒ
    158 [ID‚©‚ç—Dæ“xƒf[ƒ^ƒLƒ
    159 [ŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½
    160  *  ‚߂̃}ƒNƒ
     151 *  優先度データキューIDから優先度データキュー管理ブロックを取り出すた
     152 *  めのマクロ
    161153 */
    162154#define INDEX_PDQ(pdqid)        ((uint_t)((pdqid) - TMIN_PDQID))
     
    166158
    167159/*
    168  *  Žg—p‚µ‚Ä‚¢‚È‚¢—Dæ“xƒf[ƒ^ƒLƒ
    169 [ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     160 *  使用していない優先度データキュー管理ブロックのリスト
    170161 */
    171162QUEUE   free_pdqcb;
    172163
    173164/*
    174  *  —Dæ“xƒf[ƒ^ƒLƒ
    175 [‹@”\‚̏‰Šú‰»
     165 *  優先度データキュー機能の初期化
    176166 */
    177167void
     
    205195
    206196/*
    207  *  —Dæ“xƒf[ƒ^ƒLƒ
    208 [ŠÇ——̈æ‚ւ̃f[ƒ^‚ÌŠi”[
     197 *  優先度データキュー管理領域へのデータの格納
    209198 */
    210199#ifdef TOPPERS_pdqenq
     
    243232
    244233/*
    245  *  —Dæ“xƒf[ƒ^ƒLƒ
    246 [ŠÇ——̈悩‚ç‚̃f[ƒ^‚ÌŽæo‚µ
     234 *  優先度データキュー管理領域からのデータの取出し
    247235 */
    248236#ifdef TOPPERS_pdqdeq
     
    267255
    268256/*
    269  *  —Dæ“xƒf[ƒ^ƒLƒ
    270 [‚ւ̃f[ƒ^‘—M
     257 *  優先度データキューへのデータ送信
    271258 */
    272259#ifdef TOPPERS_pdqsnd
     
    297284
    298285/*
    299  *  —Dæ“xƒf[ƒ^ƒLƒ
    300 [‚©‚ç‚̃f[ƒ^ŽóM
     286 *  優先度データキューからのデータ受信
    301287 */
    302288#ifdef TOPPERS_pdqrcv
     
    339325
    340326/*
    341  *  —Dæ“xƒf[ƒ^ƒLƒ
    342 [‚̐¶¬
     327 *  優先度データキューの生成
    343328 */
    344329#ifdef TOPPERS_acre_pdq
     
    402387
    403388/*
    404  *  —Dæ“xƒf[ƒ^ƒLƒ
    405 [‚̍폜
     389 *  優先度データキューの削除
    406390 */
    407391#ifdef TOPPERS_del_pdq
     
    453437
    454438/*
    455  *  —Dæ“xƒf[ƒ^ƒLƒ
    456 [‚Ö‚Ì‘—M
     439 *  優先度データキューへの送信
    457440 */
    458441#ifdef TOPPERS_snd_pdq
     
    503486
    504487/*
    505  *  —Dæ“xƒf[ƒ^ƒLƒ
    506 [‚Ö‚Ì‘—Miƒ|[ƒŠƒ“ƒOj
     488 *  優先度データキューへの送信(ポーリング)
    507489 */
    508490#ifdef TOPPERS_psnd_pdq
     
    547529
    548530/*
    549  *  —Dæ“xƒf[ƒ^ƒLƒ
    550 [‚Ö‚Ì‘—Miƒ|[ƒŠƒ“ƒOC”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     531 *  優先度データキューへの送信(ポーリング,非タスクコンテキスト用)
    551532 */
    552533#ifdef TOPPERS_ipsnd_pdq
     
    591572
    592573/*
    593  *  —Dæ“xƒf[ƒ^ƒLƒ
    594 [‚Ö‚Ì‘—Miƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     574 *  優先度データキューへの送信(タイムアウトあり)
    595575 */
    596576#ifdef TOPPERS_tsnd_pdq
     
    647627
    648628/*
    649  *  —Dæ“xƒf[ƒ^ƒLƒ
    650 [‚©‚ç‚ÌŽóM
     629 *  優先度データキューからの受信
    651630 */
    652631#ifdef TOPPERS_rcv_pdq
     
    698677
    699678/*
    700  *  —Dæ“xƒf[ƒ^ƒLƒ
    701 [‚©‚ç‚ÌŽóMiƒ|[ƒŠƒ“ƒOj
     679 *  優先度データキューからの受信(ポーリング)
    702680 */
    703681#ifdef TOPPERS_prcv_pdq
     
    738716
    739717/*
    740  *  —Dæ“xƒf[ƒ^ƒLƒ
    741 [‚©‚ç‚ÌŽóMiƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     718 *  優先度データキューからの受信(タイムアウトあり)
    742719 */
    743720#ifdef TOPPERS_trcv_pdq
     
    794771
    795772/*
    796  *  —Dæ“xƒf[ƒ^ƒLƒ
    797 [‚̍ú‰»
     773 *  優先度データキューの再初期化
    798774 */
    799775#ifdef TOPPERS_ini_pdq
     
    839815
    840816/*
    841  *  —Dæ“xƒf[ƒ^ƒLƒ
    842 [‚̏ó‘ÔŽQÆ
     817 *  優先度データキューの状態参照
    843818 */
    844819#ifdef TOPPERS_ref_pdq
  • UsbWattMeter/trunk/asp_dcre/kernel/pridataq.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              —Dæ“xƒf[ƒ^ƒLƒ
    49 [‹@”\
     44 *              優先度データキュー機能
    5045 */
    5146
     
    5651
    5752/*
    58  *  —Dæ“xƒf[ƒ^ŠÇ—ƒuƒƒbƒN
     53 *  優先度データ管理ブロック
    5954 */
    6055typedef struct pridata_management_block PDQMB;
    6156
    6257struct pridata_management_block {
    63         PDQMB           *p_next;                /* ŽŸ‚̃f[ƒ^ */
    64         intptr_t        data;                   /* ƒf[ƒ^–{‘Ì */
    65         PRI                     datapri;                /* ƒf[ƒ^—Dæ“x */
     58        PDQMB           *p_next;                /* 次のデータ */
     59        intptr_t        data;                   /* データ本体 */
     60        PRI                     datapri;                /* データ優先度 */
    6661};
    6762
    6863/*
    69  *  —Dæ“xƒf[ƒ^ƒLƒ
    70 [‰Šú‰»ƒuƒƒbƒN
     64 *  優先度データキュー初期化ブロック
    7165 *
    72  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    73  *  iWOBJINIBj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    74  *  Å‰‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     66 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     67 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     68 *  最初のフィールドが共通になっている.
    7569 */
    7670typedef struct pridataq_initialization_block {
    77         ATR                     pdqatr;                 /* —Dæ“xƒf[ƒ^ƒLƒ
    78 [‘®« */
    79         uint_t          pdqcnt;                 /* —Dæ“xƒf[ƒ^ƒLƒ
    80 [‚Ì—e—Ê */
    81         PRI                     maxdpri;                /* ƒf[ƒ^—Dæ“x‚̍őå’l */
    82         PDQMB           *p_pdqmb;               /* —Dæ“xƒf[ƒ^ƒLƒ
    83 [ŠÇ——̈æ‚̐擪”Ô’n */
     71        ATR                     pdqatr;                 /* 優先度データキュー属性 */
     72        uint_t          pdqcnt;                 /* 優先度データキューの容量 */
     73        PRI                     maxdpri;                /* データ優先度の最大値 */
     74        PDQMB           *p_pdqmb;               /* 優先度データキュー管理領域の先頭番地 */
    8475} PDQINIB;
    8576
    8677/*
    87  *  —Dæ“xƒf[ƒ^ƒLƒ
    88 [ŠÇ—ƒuƒƒbƒN
     78 *  優先度データキュー管理ブロック
    8979 *
    90  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ªiWOBJCBj
    91  *  ‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁCÅ‰‚Ì2‚‚Ì
    92  *  ƒtƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     80 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     81 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     82 *  フィールドが共通になっている.
    9383 */
    9484typedef struct pridataq_control_block {
    95         QUEUE           swait_queue;    /* —Dæ“xƒf[ƒ^ƒLƒ
    96 [‘—M‘Ò‚¿ƒLƒ
    97 [ */
    98         const PDQINIB *p_pdqinib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    99         QUEUE           rwait_queue;    /* —Dæ“xƒf[ƒ^ƒLƒ
    100 [ŽóM‘Ò‚¿ƒLƒ
    101 [ */
    102         uint_t          count;                  /* —Dæ“xƒf[ƒ^ƒLƒ
    103 [’†‚̃f[ƒ^‚̐” */
    104         PDQMB           *p_head;                /* Å‰‚̃f[ƒ^ */
    105         uint_t          unused;                 /* –¢Žg—pƒf[ƒ^ŠÇ—ƒuƒƒbƒN‚̐擪 */
    106         PDQMB           *p_freelist;    /* –¢Š„“–‚ăf[ƒ^ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg */
     85        QUEUE           swait_queue;    /* 優先度データキュー送信待ちキュー */
     86        const PDQINIB *p_pdqinib;       /* 初期化ブロックへのポインタ */
     87        QUEUE           rwait_queue;    /* 優先度データキュー受信待ちキュー */
     88        uint_t          count;                  /* 優先度データキュー中のデータの数 */
     89        PDQMB           *p_head;                /* 最初のデータ */
     90        uint_t          unused;                 /* 未使用データ管理ブロックの先頭 */
     91        PDQMB           *p_freelist;    /* 未割当てデータ管理ブロックのリスト */
    10792} PDQCB;
    10893
    10994/*
    110  *  —Dæ“xƒf[ƒ^ƒLƒ
    111 [‘Ò‚¿î•ñƒuƒƒbƒN‚Ì’è‹`
     95 *  優先度データキュー待ち情報ブロックの定義
    11296 *
    113  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿î•ñƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    114  *  iWINFO_WOBJj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    115  *  Å‰‚Ì2‚‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
    116  *  —Dæ“xƒf[ƒ^ƒLƒ
    117 [‚Ö‚Ì‘—M‘Ò‚¿‚Æ—Dæ“xƒf[ƒ^ƒLƒ
    118 [‚©‚ç‚ÌŽóM‘Ò‚¿‚ŁC
    119  *  “¯‚¶‘Ò‚¿î•ñƒuƒƒbƒN‚ðŽg‚¤D
     97 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     98 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     99 *  最初の2つのフィールドが共通になっている.
     100 *  優先度データキューへの送信待ちと優先度データキューからの受信待ちで,
     101 *  同じ待ち情報ブロックを使う.
    120102 */
    121103typedef struct pridataq_waiting_information {
    122         WINFO           winfo;                  /* •W€‚Ì‘Ò‚¿î•ñƒuƒƒbƒN */
    123         PDQCB           *p_pdqcb;               /* ‘Ò‚Á‚Ä‚¢‚é—Dæ“xƒf[ƒ^ƒLƒ
    124 [‚ÌŠÇ—ƒuƒƒbƒN*/
    125         intptr_t        data;                   /* ‘—ŽóMƒf[ƒ^ */
    126         PRI                     datapri;                /* ƒf[ƒ^—Dæ“x */
     104        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     105        PDQCB           *p_pdqcb;               /* 待っている優先度データキューの管理ブロック*/
     106        intptr_t        data;                   /* 送受信データ */
     107        PRI                     datapri;                /* データ優先度 */
    127108} WINFO_PDQ;
    128109
    129110/*
    130  *  Žg—p‚µ‚Ä‚¢‚È‚¢—Dæ“xƒf[ƒ^ƒLƒ
    131 [ŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     111 *  使用していない優先度データキュー管理ブロックのリスト
    132112 */
    133113extern QUEUE    free_pdqcb;
    134114
    135115/*
    136  *  —Dæ“xƒf[ƒ^ƒLƒ
    137 [ID‚̍őå’likernel_cfg.cj
     116 *  優先度データキューIDの最大値(kernel_cfg.c)
    138117 */
    139118extern const ID tmax_pdqid;
     
    141120
    142121/*
    143  *  —Dæ“xƒf[ƒ^ƒLƒ
    144 [‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     122 *  優先度データキュー初期化ブロックのエリア(kernel_cfg.c)
    145123 */
    146124extern const PDQINIB    pdqinib_table[];
     
    148126
    149127/*
    150  *  —Dæ“xƒf[ƒ^ƒLƒ
    151 [ŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     128 *  優先度データキュー管理ブロックのエリア(kernel_cfg.c)
    152129 */
    153130extern PDQCB    pdqcb_table[];
    154131
    155132/*
    156  *  —Dæ“xƒf[ƒ^ƒLƒ
    157 [ŠÇ—ƒuƒƒbƒN‚©‚ç—Dæ“xƒf[ƒ^ƒLƒ
    158 [ID‚ðŽæ‚èo‚·‚½
    159  *  ‚߂̃}ƒNƒ
     133 *  優先度データキュー管理ブロックから優先度データキューIDを取り出すた
     134 *  めのマクロ
    160135 */
    161136#define PDQID(p_pdqcb)  ((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID))
    162137
    163138/*
    164  *  —Dæ“xƒf[ƒ^ƒLƒ
    165 [‹@”\‚̏‰Šú‰»
     139 *  優先度データキュー機能の初期化
    166140 */
    167141extern void     initialize_pridataq(void);
    168142
    169143/*
    170  *  —Dæ“xƒf[ƒ^ƒLƒ
    171 [ŠÇ——̈æ‚ւ̃f[ƒ^‚ÌŠi”[
     144 *  優先度データキュー管理領域へのデータの格納
    172145 */
    173146extern void     enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri);
    174147
    175148/*
    176  *  —Dæ“xƒf[ƒ^ƒLƒ
    177 [ŠÇ——̈悩‚ç‚̃f[ƒ^‚ÌŽæo‚µ
     149 *  優先度データキュー管理領域からのデータの取出し
    178150 */
    179151extern void     dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri);
    180152
    181153/*
    182  *  —Dæ“xƒf[ƒ^ƒLƒ
    183 [‚ւ̃f[ƒ^‘—M
     154 *  優先度データキューへのデータ送信
    184155 */
    185156extern bool_t   send_pridata(PDQCB *p_pdqcb, intptr_t data,
     
    187158
    188159/*
    189  *  —Dæ“xƒf[ƒ^ƒLƒ
    190 [‚©‚ç‚̃f[ƒ^ŽóM
     160 *  優先度データキューからのデータ受信
    191161 */
    192162extern bool_t   receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
  • UsbWattMeter/trunk/asp_dcre/kernel/semaphore.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒZƒ}ƒtƒH‹@”\
     44 *              セマフォ機能
    4945 */
    5046
     
    5652
    5753/*
    58  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     54 *  トレースログマクロのデフォルト定義
    5955 */
    6056#ifndef LOG_ACRE_SEM_ENTER
     
    131127
    132128/*
    133  *  ƒZƒ}ƒtƒH‚̐”
     129 *  セマフォの数
    134130 */
    135131#define tnum_sem        ((uint_t)(tmax_semid - TMIN_SEMID + 1))
     
    137133
    138134/*
    139  *  ƒZƒ}ƒtƒHID‚©‚çƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     135 *  セマフォIDからセマフォ管理ブロックを取り出すためのマクロ
    140136 */
    141137#define INDEX_SEM(semid)        ((uint_t)((semid) - TMIN_SEMID))
     
    145141
    146142/*
    147  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     143 *  使用していないセマフォ管理ブロックのリスト
    148144 */
    149145QUEUE   free_semcb;
    150146
    151147/*
    152  *  ƒZƒ}ƒtƒH‹@”\‚̏‰Šú‰»
     148 *  セマフォ機能の初期化
    153149 */
    154150void
     
    178174
    179175/*
    180  *  ƒZƒ}ƒtƒH‚̐¶¬
     176 *  セマフォの生成
    181177 */
    182178#ifdef TOPPERS_acre_sem
     
    220216
    221217/*
    222  *  ƒZƒ}ƒtƒH‚̍폜
     218 *  セマフォの削除
    223219 */
    224220#ifdef TOPPERS_del_sem
     
    264260
    265261/*
    266  *  ƒZƒ}ƒtƒHŽ‘Œ¹‚Ì•Ô‹p
     262 *  セマフォ資源の返却
    267263 */
    268264#ifdef TOPPERS_sig_sem
     
    308304
    309305/*
    310  *  ƒZƒ}ƒtƒHŽ‘Œ¹‚Ì•Ô‹pi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     306 *  セマフォ資源の返却(非タスクコンテキスト用)
    311307 */
    312308#ifdef TOPPERS_isig_sem
     
    352348
    353349/*
    354  *  ƒZƒ}ƒtƒHŽ‘Œ¹‚ÌŠl“¾
     350 *  セマフォ資源の獲得
    355351 */
    356352#ifdef TOPPERS_wai_sem
     
    392388
    393389/*
    394  *  ƒZƒ}ƒtƒHŽ‘Œ¹‚ÌŠl“¾iƒ|[ƒŠƒ“ƒOj
     390 *  セマフォ資源の獲得(ポーリング)
    395391 */
    396392#ifdef TOPPERS_pol_sem
     
    428424
    429425/*
    430  *  ƒZƒ}ƒtƒHŽ‘Œ¹‚ÌŠl“¾iƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     426 *  セマフォ資源の獲得(タイムアウトあり)
    431427 */
    432428#ifdef TOPPERS_twai_sem
     
    474470
    475471/*
    476  *  ƒZƒ}ƒtƒH‚̍ú‰»
     472 *  セマフォの再初期化
    477473 */
    478474#ifdef TOPPERS_ini_sem
     
    512508
    513509/*
    514  *  ƒZƒ}ƒtƒH‚̏ó‘ÔŽQÆ
     510 *  セマフォの状態参照
    515511 */
    516512#ifdef TOPPERS_ref_sem
  • UsbWattMeter/trunk/asp_dcre/kernel/semaphore.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒZƒ}ƒtƒH‹@”\
     44 *              セマフォ機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  ƒZƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN
     53 *  セマフォ初期化ブロック
    5854 *
    59  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»ƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    60  *  iWOBJINIBj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    61  *  Å‰‚̃tƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     55 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     56 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     57 *  最初のフィールドが共通になっている.
    6258 */
    6359typedef struct semaphore_initialization_block {
    64         ATR                     sematr;                 /* ƒZƒ}ƒtƒH‘®« */
    65         uint_t          isemcnt;                /* ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚̏‰Šú’l */
    66         uint_t          maxsem;                 /* ƒZƒ}ƒtƒH‚̍ő厑Œ¹” */
     60        ATR                     sematr;                 /* セマフォ属性 */
     61        uint_t          isemcnt;                /* セマフォの資源数の初期値 */
     62        uint_t          maxsem;                 /* セマフォの最大資源数 */
    6763} SEMINIB;
    6864
    6965/*
    70  *  ƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN
     66 *  セマフォ管理ブロック
    7167 *
    72  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”•ªiWOBJCBj
    73  *  ‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁCÅ‰‚Ì2‚‚Ì
    74  *  ƒtƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     68 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     69 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     70 *  フィールドが共通になっている.
    7571 */
    7672typedef struct semaphore_control_block {
    77         QUEUE           wait_queue;             /* ƒZƒ}ƒtƒH‘Ò‚¿ƒLƒ
    78 [ */
    79         const SEMINIB *p_seminib;       /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    80         uint_t          semcnt;                 /* ƒZƒ}ƒtƒHŒ»ÝƒJƒEƒ“ƒg’l */
     73        QUEUE           wait_queue;             /* セマフォ待ちキュー */
     74        const SEMINIB *p_seminib;       /* 初期化ブロックへのポインタ */
     75        uint_t          semcnt;                 /* セマフォ現在カウント値 */
    8176} SEMCB;
    8277
    8378/*
    84  *  ƒZƒ}ƒtƒH‘Ò‚¿î•ñƒuƒƒbƒN‚Ì’è‹`
     79 *  セマフォ待ち情報ブロックの定義
    8580 *
    86  *  ‚±‚̍\‘¢‘̂́C“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿î•ñƒuƒƒbƒN‚Ì‹¤’Ê•”•ª
    87  *  iWINFO_WOBJj‚ðŠg’£iƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÌŒp³‚É‘Š“–j‚µ‚½‚à‚̂ŁC
    88  *  ‚·‚ׂẴtƒB[ƒ‹ƒh‚ª‹¤’Ê‚É‚È‚Á‚Ä‚¢‚éD
     81 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     82 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     83 *  すべてのフィールドが共通になっている.
    8984 */
    9085typedef struct semaphore_waiting_information {
    91         WINFO   winfo;                  /* •W€‚Ì‘Ò‚¿î•ñƒuƒƒbƒN */
    92         SEMCB   *p_semcb;               /* ‘Ò‚Á‚Ä‚¢‚éƒZƒ}ƒtƒH‚ÌŠÇ—ƒuƒƒbƒN */
     86        WINFO   winfo;                  /* 標準の待ち情報ブロック */
     87        SEMCB   *p_semcb;               /* 待っているセマフォの管理ブロック */
    9388} WINFO_SEM;
    9489
    9590/*
    96  *  Žg—p‚µ‚Ä‚¢‚È‚¢ƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN‚̃ŠƒXƒg
     91 *  使用していないセマフォ管理ブロックのリスト
    9792 */
    9893extern QUEUE    free_semcb;
    9994
    10095/*
    101  *  ƒZƒ}ƒtƒHID‚̍őå’likernel_cfg.cj
     96 *  セマフォIDの最大値(kernel_cfg.c)
    10297 */
    10398extern const ID tmax_semid;
     
    105100
    106101/*
    107  *  ƒZƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     102 *  セマフォ初期化ブロックのエリア(kernel_cfg.c)
    108103 */
    109104extern const SEMINIB    seminib_table[];
     
    111106
    112107/*
    113  *  ƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     108 *  セマフォ管理ブロックのエリア(kernel_cfg.c)
    114109 */
    115110extern SEMCB    semcb_table[];
    116111
    117112/*
    118  *  ƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN‚©‚çƒZƒ}ƒtƒHID‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     113 *  セマフォ管理ブロックからセマフォIDを取り出すためのマクロ
    119114 */
    120115#define SEMID(p_semcb)  ((ID)(((p_semcb) - semcb_table) + TMIN_SEMID))
    121116
    122117/*
    123  *  ƒZƒ}ƒtƒH‹@”\‚̏‰Šú‰»
     118 *  セマフォ機能の初期化
    124119 */
    125120extern void     initialize_semaphore(void);
  • UsbWattMeter/trunk/asp_dcre/kernel/startup.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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  *              ƒJ[ƒlƒ‹‚̏‰Šú‰»‚ƏI—¹ˆ—
     44 *              カーネルの初期化と終了処理
    4945 */
    5046
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_KER_ENTER
     
    7571
    7672/*
    77  *  ƒJ[ƒlƒ‹“®ìó‘Ôƒtƒ‰ƒO
     73 *  カーネル動作状態フラグ
    7874 *
    79  *  ƒXƒ^[ƒgƒAƒbƒvƒ‹[ƒ`ƒ“‚ŁCfalsei0j‚ɏ‰Šú‰»‚³‚ê‚邱‚Æ‚ðŠú‘Ò‚µ‚Ä
    80  *  ‚¢‚éD
     75 *  スタートアップルーチンで,false(=0)に初期化されることを期待して
     76 *  いる.
    8177 */
    8278bool_t  kerflg = false;
    8379
    8480/*
    85  *  ƒJ[ƒlƒ‹‚Ì‹N“®
     81 *  カーネルの起動
    8682 */
    8783void
     
    8985{
    9086        /*
    91          *  ƒ^[ƒQƒbƒgˆË‘¶‚̏‰Šú‰»
     87         *  ターゲット依存の初期化
    9288         */
    9389        target_initialize();
    9490
    9591        /*
    96          *  Šeƒ‚ƒWƒ
    97 [ƒ‹‚̏‰Šú‰»
     92         *  各モジュールの初期化
    9893         *
    99          *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—ƒ‚ƒWƒ
    100 [ƒ‹‚Í‘¼‚̃‚ƒWƒ
    101 [ƒ‹‚æ‚èæ‚ɏ‰Šú‰»
    102          *  ‚·‚é•K—v‚ª‚ ‚éD
     94         *  タイムイベント管理モジュールは他のモジュールより先に初期化
     95         *  する必要がある.
    10396         */
    10497        initialize_kmm();
     
    107100
    108101        /*
    109          *  ‰Šú‰»ƒ‹[ƒ`ƒ“‚ÌŽÀs
     102         *  初期化ルーチンの実行
    110103         */
    111104        call_inirtn();
    112105
    113106        /*
    114          *  ƒJ[ƒlƒ‹“®ì‚ÌŠJŽn
     107         *  カーネル動作の開始
    115108         */
    116109        kerflg = true;
     
    123116
    124117/*
    125  *  ƒJ[ƒlƒ‹‚̏I—¹
     118 *  カーネルの終了
    126119 */
    127120#ifdef TOPPERS_ext_ker
     
    135128
    136129        /*
    137          *  Š„ž‚݃ƒbƒNó‘ԂɈڍs
     130         *  割込みロック状態に移行
    138131         */
    139132        SIL_LOC_INT();
    140133
    141134        /*
    142          *  ƒJ[ƒlƒ‹“®ì‚̏I—¹
     135         *  カーネル動作の終了
    143136         */
    144137        LOG_KER_LEAVE();
     
    146139
    147140        /*
    148          *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µ
     141         *  カーネルの終了処理の呼出し
    149142         *
    150          *  ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؂芷‚¦‚āCexit_kernel‚ðŒÄ‚яo‚·D
     143         *  非タスクコンテキストに切り換えて,exit_kernelを呼び出す.
    151144         */
    152145        call_exit_kernel();
    153146
    154147        /*
    155          *  ƒRƒ“ƒpƒCƒ‰‚ÌŒx‘΍ôi‚±‚±‚Ö—ˆ‚邱‚Æ‚Í‚È‚¢‚Í‚¸j
     148         *  コンパイラの警告対策(ここへ来ることはないはず)
    156149         */
    157150        SIL_UNL_INT();
     
    161154
    162155/*
    163  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—
     156 *  カーネルの終了処理
    164157 */
    165158void
     
    167160{
    168161        /*
    169          *  I—¹ˆ—ƒ‹[ƒ`ƒ“‚ÌŽÀs
     162         *  終了処理ルーチンの実行
    170163         */
    171164        call_terrtn();
    172165
    173166        /*
    174          *  ƒ^[ƒQƒbƒgˆË‘¶‚̏I—¹ˆ—
     167         *  ターゲット依存の終了処理
    175168         */
    176169        target_exit();
     
    181174
    182175/*
    183  *  ƒJ[ƒlƒ‹‚ÌŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚ÌŠÇ—
     176 *  カーネルの割り付けるメモリ領域の管理
    184177 *
    185  *  ƒƒ‚ƒŠ—̈æ‚ðæ“ª‚©‚珇‚ÉŠ„‚è“–‚āC‰ð•ú‚³‚ꂽƒƒ‚ƒŠ—̈æ‚ðÄ—˜—p‚µ‚È
    186  *  ‚¢ƒƒ‚ƒŠŠÇ—ƒ‚ƒWƒ
    187 [ƒ‹D
     178 *  メモリ領域を先頭から順に割り当て,解放されたメモリ領域を再利用しな
     179 *  いメモリ管理モジュール.
    188180 */
    189181#ifdef TOPPERS_kermem
  • UsbWattMeter/trunk/asp_dcre/kernel/sys_manage.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒVƒXƒeƒ€ó‘ÔŠÇ—‹@”\
     44 *              システム状態管理機能
    4945 */
    5046
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_ROT_RDQ_ENTER
     
    177173
    178174/*
    179  *  ƒ^ƒXƒN‚Ì—Dæ‡ˆÊ‚̉ñ“]
     175 *  タスクの優先順位の回転
    180176 */
    181177#ifdef TOPPERS_rot_rdq
     
    207203
    208204/*
    209  *  ƒ^ƒXƒN‚Ì—Dæ‡ˆÊ‚̉ñ“]i”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     205 *  タスクの優先順位の回転(非タスクコンテキスト用)
    210206 */
    211207#ifdef TOPPERS_irot_rdq
     
    235231
    236232/*
    237  *  ŽÀsó‘Ԃ̃^ƒXƒNID‚ÌŽQÆ
     233 *  実行状態のタスクIDの参照
    238234 */
    239235#ifdef TOPPERS_get_tid
     
    260256
    261257/*
    262  *  ŽÀsó‘Ԃ̃^ƒXƒNID‚ÌŽQÆi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     258 *  実行状態のタスクIDの参照(非タスクコンテキスト用)
    263259 */
    264260#ifdef TOPPERS_iget_tid
     
    285281
    286282/*
    287  *  CPUƒƒbƒNó‘Ԃւ̈ڍs
     283 *  CPUロック状態への移行
    288284 */
    289285#ifdef TOPPERS_loc_cpu
     
    310306
    311307/*
    312  *  CPUƒƒbƒNó‘Ԃւ̈ڍsi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     308 *  CPUロック状態への移行(非タスクコンテキスト用)
    313309 */
    314310#ifdef TOPPERS_iloc_cpu
     
    335331
    336332/*
    337  *  CPUƒƒbƒNó‘Ԃ̉ðœ
     333 *  CPUロック状態の解除
    338334 *
    339  *  CPUƒƒbƒN’†‚́CƒfƒBƒXƒpƒbƒ`‚ª•K—v‚Æ‚È‚éƒT[ƒrƒXƒR[ƒ‹‚ðŒÄ‚яo‚·‚±
    340  *  ‚Æ‚Í‚Å‚«‚È‚¢‚½‚߁CCPUƒƒbƒNó‘Ô‚Ì‰ðœŽž‚ɃfƒBƒXƒpƒbƒ`ƒƒ‚ð‹N“®‚·‚é
    341  *  •K—v‚Í‚È‚¢D
     335 *  CPUロック中は,ディスパッチが必要となるサービスコールを呼び出すこ
     336 *  とはできないため,CPUロック状態の解除時にディスパッチャを起動する
     337 *  必要はない.
    342338 */
    343339#ifdef TOPPERS_unl_cpu
     
    364360
    365361/*
    366  *  CPUƒƒbƒNó‘Ô‚Ì‰ðœi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     362 *  CPUロック状態の解除(非タスクコンテキスト用)
    367363 *
    368  *  CPUƒƒbƒN’†‚́CƒfƒBƒXƒpƒbƒ`‚ª•K—v‚Æ‚È‚éƒT[ƒrƒXƒR[ƒ‹‚ðŒÄ‚яo‚·‚±
    369  *  ‚Æ‚Í‚Å‚«‚È‚¢‚½‚߁CCPUƒƒbƒNó‘Ô‚Ì‰ðœŽž‚ɃfƒBƒXƒpƒbƒ`ƒƒ‚Ì‹N“®‚ð—v
    370  *  ‹‚·‚é•K—v‚Í‚È‚¢D
     364 *  CPUロック中は,ディスパッチが必要となるサービスコールを呼び出すこ
     365 *  とはできないため,CPUロック状態の解除時にディスパッチャの起動を要
     366 *  求する必要はない.
    371367 */
    372368#ifdef TOPPERS_iunl_cpu
     
    393389
    394390/*
    395  *  ƒfƒBƒXƒpƒbƒ`‚Ì‹ÖŽ~
     391 *  ディスパッチの禁止
    396392 */
    397393#ifdef TOPPERS_dis_dsp
     
    419415
    420416/*
    421  *  ƒfƒBƒXƒpƒbƒ`‚Ì‹–‰Â
     417 *  ディスパッチの許可
    422418 */
    423419#ifdef TOPPERS_ena_dsp
     
    450446
    451447/*
    452  *  ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
     448 *  コンテキストの参照
    453449 */
    454450#ifdef TOPPERS_sns_ctx
     
    468464
    469465/*
    470  *  CPUƒƒbƒNó‘Ô‚ÌŽQÆ
     466 *  CPUロック状態の参照
    471467 */
    472468#ifdef TOPPERS_sns_loc
     
    486482
    487483/*
    488  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚ÌŽQÆ
     484 *  ディスパッチ禁止状態の参照
    489485 */
    490486#ifdef TOPPERS_sns_dsp
     
    504500
    505501/*
    506  *  ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚ÌŽQÆ
     502 *  ディスパッチ保留状態の参照
    507503 */
    508504#ifdef TOPPERS_sns_dpn
     
    522518
    523519/*
    524  *  ƒJ[ƒlƒ‹”ñ“®ìó‘Ô‚ÌŽQÆ
     520 *  カーネル非動作状態の参照
    525521 */
    526522#ifdef TOPPERS_sns_ker
  • UsbWattMeter/trunk/asp_dcre/kernel/task.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  $Id$
     
    4642
    4743/*
    48  *              ƒ^ƒXƒNŠÇ—ƒ‚ƒWƒ
    49 [ƒ‹
     44 *              タスク管理モジュール
    5045 */
    5146
     
    5550
    5651/*
    57  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5853 */
    5954#ifndef LOG_TEX_ENTER
     
    6863
    6964/*
    70  *  ŽÀsó‘Ԃ̃^ƒXƒN
     65 *  実行状態のタスク
    7166 */
    7267TCB             *p_runtsk;
    7368
    7469/*
    75  *  Å‚—Dæ‡ˆÊ‚̃^ƒXƒN
     70 *  最高優先順位のタスク
    7671 */
    7772TCB             *p_schedtsk;
    7873
    7974/*
    80  *  ƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`^ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‹N“®—v‹ƒtƒ‰ƒO
     75 *  タスクディスパッチ/タスク例外処理ルーチン起動要求フラグ
    8176 */
    8277bool_t  reqflg;
    8378
    8479/*
    85  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô
     80 *  割込み優先度マスク全解除状態
    8681 */
    8782bool_t  ipmflg;
    8883
    8984/*
    90  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô
     85 *  ディスパッチ禁止状態
    9186 */
    9287bool_t  disdsp;
    9388
    9489/*
    95  *  ƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`‰Â”\ó‘Ô
     90 *  タスクディスパッチ可能状態
    9691 */
    9792bool_t  dspflg;
    9893
    9994/*
    100  *  ƒŒƒfƒBƒLƒ
    101 [
     95 *  レディキュー
    10296 */
    10397QUEUE   ready_queue[TNUM_TPRI];
    10498
    10599/*
    106  *  ƒŒƒfƒBƒLƒ
    107 [ƒT[ƒ`‚Ì‚½‚߂̃rƒbƒgƒ}ƒbƒv
     100 *  レディキューサーチのためのビットマップ
    108101 */
    109102uint16_t        ready_primap;
    110103
    111104/*
    112  *  Žg—p‚µ‚Ä‚¢‚È‚¢TCB‚̃ŠƒXƒg
     105 *  使用していないTCBのリスト
    113106 */
    114107QUEUE   free_tcb;
    115108
    116109/*
    117  *  ƒ^ƒXƒNŠÇ—ƒ‚ƒWƒ
    118 [ƒ‹‚̏‰Šú‰»
     110 *  タスク管理モジュールの初期化
    119111 */
    120112void
     
    160152
    161153/*
    162  *  ƒrƒbƒgƒ}ƒbƒvƒT[ƒ`ŠÖ”
    163  *
    164  *  bitmap“à‚Ì1‚̃rƒbƒg‚Ì“àCÅ‚à‰ºˆÊi‰Ej‚Ì‚à‚Ì‚ðƒT[ƒ`‚µC‚»‚̃rƒb
    165  *  ƒg”ԍ†‚ð•Ô‚·Dƒrƒbƒg”ԍ†‚́CÅ‰ºˆÊƒrƒbƒg‚ð0‚Æ‚·‚éDbitmap‚É0‚ðŽw’è
    166  *  ‚µ‚Ä‚Í‚È‚ç‚È‚¢D‚±‚̊֐”‚ł́Cbitmap‚ª16ƒrƒbƒg‚Å‚ ‚邱‚Æ‚ð‰¼’è‚µC
    167  *  uint16_tŒ^‚Æ‚µ‚Ä‚¢‚éD
    168  *
    169  *  ƒrƒbƒgƒT[ƒ`–½—ß‚ðŽ‚ÂƒvƒƒZƒbƒT‚ł́CƒrƒbƒgƒT[ƒ`–½—ß‚ðŽg‚¤‚悤‚É
    170  *  ‘‚«’¼‚µ‚½•û‚ªŒø—¦‚ª—Ç‚¢ê‡‚ª‚ ‚éD‚±‚̂悤‚ȏꍇ‚ɂ́Cƒ^[ƒQƒbƒg
    171  *  ˆË‘¶•”‚ŃrƒbƒgƒT[ƒ`–½—ß‚ðŽg‚Á‚½bitmap_search‚ð’è‹`‚µC
    172  *  OMIT_BITMAP_SEARCH‚ðƒ}ƒNƒ’è‹`‚·‚ê‚΂悢D‚Ü‚½CƒrƒbƒgƒT[ƒ`–½—ß‚Ì
    173  *  ƒT[ƒ`•ûŒü‚ª‹t‚È‚Ç‚Ì——R‚Å—Dæ“x‚ƃrƒbƒg‚Ƃ̑Ήž‚ð•ÏX‚µ‚½‚¢ê‡‚É
    174  *  ‚́CPRIMAP_BIT‚ðƒ}ƒNƒ’è‹`‚·‚ê‚΂悢D
    175  *
    176  *  ‚Ü‚½Cƒ‰ƒCƒuƒ‰ƒŠ‚Éffs‚ª‚ ‚é‚È‚çCŽŸ‚̂悤‚É’è‹`‚µ‚ă‰ƒCƒuƒ‰ƒŠŠÖ”‚ð
    177  *  Žg‚Á‚½•û‚ªŒø—¦‚ª—Ç‚¢‰Â”\«‚à‚ ‚éD
     154 *  ビットマップサーチ関数
     155 *
     156 *  bitmap内の1のビットの内,最も下位(右)のものをサーチし,そのビッ
     157 *  ト番号を返す.ビット番号は,最下位ビットを0とする.bitmapに0を指定
     158 *  してはならない.この関数では,bitmapが16ビットであることを仮定し,
     159 *  uint16_t型としている.
     160 *
     161 *  ビットサーチ命令を持つプロセッサでは,ビットサーチ命令を使うように
     162 *  書き直した方が効率が良い場合がある.このような場合には,ターゲット
     163 *  依存部でビットサーチ命令を使ったbitmap_searchを定義し,
     164 *  OMIT_BITMAP_SEARCHをマクロ定義すればよい.また,ビットサーチ命令の
     165 *  サーチ方向が逆などの理由で優先度とビットとの対応を変更したい場合に
     166 *  は,PRIMAP_BITをマクロ定義すればよい.
     167 *
     168 *  また,ライブラリにffsがあるなら,次のように定義してライブラリ関数を
     169 *  使った方が効率が良い可能性もある.
    178170 *              #define bitmap_search(bitmap) (ffs(bitmap) - 1)
    179171 */
     
    207199
    208200/*
    209  *  —Dæ“xƒrƒbƒgƒ}ƒbƒv‚ª‹ó‚©‚̃`ƒFƒbƒN
     201 *  優先度ビットマップが空かのチェック
    210202 */
    211203Inline bool_t
     
    216208
    217209/*
    218  *  —Dæ“xƒrƒbƒgƒ}ƒbƒv‚̃T[ƒ`
     210 *  優先度ビットマップのサーチ
    219211 */
    220212Inline uint_t
     
    225217
    226218/*
    227  *  —Dæ“xƒrƒbƒgƒ}ƒbƒv‚̃Zƒbƒg
     219 *  優先度ビットマップのセット
    228220 */
    229221Inline void
     
    234226
    235227/*
    236  *  —Dæ“xƒrƒbƒgƒ}ƒbƒv‚̃NƒŠƒA
     228 *  優先度ビットマップのクリア
    237229 */
    238230Inline void
     
    243235
    244236/*
    245  *  Å‚—Dæ‡ˆÊƒ^ƒXƒN‚̃T[ƒ`
     237 *  最高優先順位タスクのサーチ
    246238 */
    247239#ifdef TOPPERS_tsksched
     
    259251
    260252/*
    261  *  ŽÀs‚Å‚«‚éó‘Ô‚Ö‚Ì‘JˆÚ
    262  *
    263  *  Å‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ðXV‚·‚é‚̂́CŽÀs‚Å‚«‚éƒ^ƒXƒN‚ª‚È‚©‚Á‚½ê‡
    264  *  ‚ƁCp_tcb‚Ì—Dæ“x‚ªÅ‚—Dæ‡ˆÊ‚̃^ƒXƒN‚Ì—Dæ“x‚æ‚è‚à‚‚¢ê‡‚Å‚ 
    265  *  ‚éD
     253 *  実行できる状態への遷移
     254 *
     255 *  最高優先順位のタスクを更新するのは,実行できるタスクがなかった場合
     256 *  と,p_tcbの優先度が最高優先順位のタスクの優先度よりも高い場合であ
     257 *  る.
    266258 */
    267259#ifdef TOPPERS_tskrun
     
    285277
    286278/*
    287  *  ŽÀs‚Å‚«‚éó‘Ô‚©‚瑼‚̏ó‘Ô‚Ö‚Ì‘JˆÚ
    288  *
    289  *  Å‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ðXV‚·‚é‚̂́Cp_tcb‚ªÅ‚—Dæ‡ˆÊ‚̃^ƒXƒN‚Å
    290  *  ‚ ‚Á‚½ê‡‚Å‚ ‚éDp_tcb‚Æ“¯‚¶—Dæ“x‚̃^ƒXƒN‚ª‘¼‚É‚ ‚éê‡‚́Cp_tcb
    291  *  ‚ÌŽŸ‚̃^ƒXƒN‚ªÅ‚—Dæ‡ˆÊ‚É‚È‚éD‚»‚¤‚Å‚È‚¢ê‡‚́CƒŒƒfƒBƒLƒ
    292 [‚ð
    293  *  ƒT[ƒ`‚·‚é•K—v‚ª‚ ‚éD
     279 *  実行できる状態から他の状態への遷移
     280 *
     281 *  最高優先順位のタスクを更新するのは,p_tcbが最高優先順位のタスクで
     282 *  あった場合である.p_tcbと同じ優先度のタスクが他にある場合は,p_tcb
     283 *  の次のタスクが最高優先順位になる.そうでない場合は,レディキューを
     284 *  サーチする必要がある.
    294285 */
    295286#ifdef TOPPERS_tsknrun
     
    321312
    322313/*
    323  *  ‹xŽ~ó‘Ô‚Ö‚Ì‘JˆÚ
     314 *  休止状態への遷移
    324315 */
    325316#ifdef TOPPERS_tskdmt
     
    339330
    340331/*
    341  *  ‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô‚Ö‚Ì‘JˆÚ
     332 *  休止状態から実行できる状態への遷移
    342333 */
    343334#ifdef TOPPERS_tskact
     
    355346
    356347/*
    357  *  ƒ^ƒXƒN‚Ì—Dæ“x‚̕ύX
    358  *
    359  *  ƒ^ƒXƒN‚ªŽÀs‚Å‚«‚éó‘Ԃ̏ꍇ‚ɂ́CƒŒƒfƒBƒLƒ
    360 [‚Ì’†‚ł̈ʒu‚ð•ÏX‚·
    361  *  ‚éDƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿ƒLƒ
    362 [‚Ì’†‚Å‘Ò‚¿ó‘Ô‚É‚È‚Á‚Ä‚¢‚éê‡‚ɂ́C‘Ò
    363  *  ‚¿ƒLƒ
    364 [‚Ì’†‚ł̈ʒu‚ð•ÏX‚·‚éD
    365  *
    366  *  Å‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ðXV‚·‚é‚̂́C(1) p_tcb‚ªÅ‚—Dæ‡ˆÊ‚̃^ƒX
    367  *  ƒN‚Å‚ ‚Á‚āC‚»‚Ì—Dæ“x‚ð‰º‚°‚½ê‡C(2) p_tcb‚ªÅ‚—Dæ‡ˆÊ‚̃^ƒX
    368  *  ƒN‚Å‚Í‚È‚­C•ÏXŒã‚Ì—Dæ“x‚ªÅ‚—Dæ‡ˆÊ‚̃^ƒXƒN‚Ì—Dæ“x‚æ‚è‚à‚‚¢
    369  *  ê‡‚Å‚ ‚éD(1)‚̏ꍇ‚ɂ́CƒŒƒfƒBƒLƒ
    370 [‚ðƒT[ƒ`‚·‚é•K—v‚ª‚ ‚éD
     348 *  タスクの優先度の変更
     349 *
     350 *  タスクが実行できる状態の場合には,レディキューの中での位置を変更す
     351 *  る.オブジェクトの待ちキューの中で待ち状態になっている場合には,待
     352 *  ちキューの中での位置を変更する.
     353 *
     354 *  最高優先順位のタスクを更新するのは,(1) p_tcbが最高優先順位のタス
     355 *  クであって,その優先度を下げた場合,(2) p_tcbが最高優先順位のタス
     356 *  クではなく,変更後の優先度が最高優先順位のタスクの優先度よりも高い
     357 *  場合である.(1)の場合には,レディキューをサーチする必要がある.
    371358 */
    372359#ifdef TOPPERS_tskpri
     
    382369        if (TSTAT_RUNNABLE(p_tcb->tstat)) {
    383370                /*
    384                  *  ƒ^ƒXƒN‚ªŽÀs‚Å‚«‚éó‘Ԃ̏ꍇ
     371                 *  タスクが実行できる状態の場合
    385372                 */
    386373                queue_delete(&(p_tcb->task_queue));
     
    407394                if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
    408395                        /*
    409                          *  ƒ^ƒXƒN‚ªC“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚Ì‹¤’Ê•”
    410                          *  •ªiWOBJCBj‚Ì‘Ò‚¿ƒLƒ
    411 [‚ɂ‚Ȃª‚ê‚Ä‚¢‚éê‡
     396                         *  タスクが,同期・通信オブジェクトの管理ブロックの共通部
     397                         *  分(WOBJCB)の待ちキューにつながれている場合
    412398                         */
    413399                        wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
     
    421407
    422408/*
    423  *  ƒŒƒfƒBƒLƒ
    424 [‚̉ñ“]
    425  *
    426  *  Å‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ðXV‚·‚é‚̂́CÅ‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ªƒ^ƒXƒNƒL
    427  *  ƒ
    428 [‚Ì––”ö‚Ɉړ®‚µ‚½ê‡‚Å‚ ‚éD
     409 *  レディキューの回転
     410 *
     411 *  最高優先順位のタスクを更新するのは,最高優先順位のタスクがタスクキ
     412 *  ューの末尾に移動した場合である.
    429413 */
    430414#ifdef TOPPERS_tskrot
     
    450434
    451435/*
    452  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚̌ďo‚µ
    453  *
    454  *  ASPƒJ[ƒlƒ‹‚ł́Cƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ““à‚ÅCPUƒƒbƒNó‘Ô‚É‘JˆÚ‚µC
    455  *  Œ³‚̏ó‘Ô‚É–ß‚³‚¸‚ɃŠƒ^[ƒ“‚µ‚½ê‡CƒJ[ƒlƒ‹‚ªŒ³‚̏ó‘Ô‚É–ß‚·D
     436 *  タスク例外処理ルーチンの呼出し
     437 *
     438 *  ASPカーネルでは,タスク例外処理ルーチン内でCPUロック状態に遷移し,
     439 *  元の状態に戻さずにリターンした場合,カーネルが元の状態に戻す.
    456440 */
    457441#ifdef TOPPERS_tsktex
     
    486470                if (p_runtsk != p_schedtsk && dspflg) {
    487471                        /*
    488                          *  ‚±‚±‚Ådispatch‚ðŒÄ‚яo‚·ˆ—‚́C‘ŠŒÝÄ‹AŒÄo‚µ‚É‚È‚Á‚Ä
    489                          *  ‚¢‚邪Cdispatch‚ðŒÄ‚Ô‘O‚Ép_runtsk->enatex‚ðfalse‚É‚µ‚Ä
    490                          *  ‚¨‚¯‚ÎŽxá‚ª‚È‚¢D‚»‚Ì——R‚ɂ‚¢‚ẮCuTOPPERS/ASP ƒJ[
    491                          *  ƒlƒ‹ ÝŒvƒƒ‚v‚ðŽQÆ‚Ì‚±‚ƁD
     472                         *  ここでdispatchを呼び出す処理は,相互再帰呼出しになって
     473                         *  いるが,dispatchを呼ぶ前にp_runtsk->enatexをfalseにして
     474                         *  おけば支障がない.その理由については,「TOPPERS/ASP カー
     475                         *  ネル 設計メモ」を参照のこと.
    492476                         */
    493477                        dispatch();
     
    498482
    499483/*
    500  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‹N“®
     484 *  タスク例外処理ルーチンの起動
    501485 */
    502486#ifndef OMIT_CALLTEX
  • UsbWattMeter/trunk/asp_dcre/kernel/task.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  $Id$
     
    4642
    4743/*
    48  *              ƒ^ƒXƒNŠÇ—ƒ‚ƒWƒ
    49 [ƒ‹
     44 *              タスク管理モジュール
    5045 */
    5146
     
    5752
    5853/*
    59  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     54 *  トレースログマクロのデフォルト定義
    6055 */
    6156#ifndef LOG_TSKSTAT
     
    6459
    6560/*
    66  *  ƒ^ƒXƒN—Dæ“x‚Ì“à•”•\Œ»EŠO•”•\Œ»•ÏŠ·ƒ}ƒNƒ
     61 *  タスク優先度の内部表現・外部表現変換マクロ
    6762 */
    6863#define INT_PRIORITY(x)         ((uint_t)((x) - TMIN_TPRI))
     
    7065
    7166/*
    72  *  ƒ^ƒXƒNó‘Ô‚Ì“à•”•\Œ»
    73  *
    74  *  TCB’†‚̃^ƒXƒNó‘Ԃł́CŽÀsó‘ԁiRUNNINGj‚ÆŽÀs‰Â”\ó‘ԁiREADYj
    75  *  ‚Í‹æ•Ê‚µ‚È‚¢D—¼ó‘Ԃ𑍏̂µ‚āCŽÀs‚Å‚«‚éó‘ԁiRUNNABLEj‚ƌĂԁD
    76  *  “ñd‘Ò‚¿ó‘Ԃ́C(TS_WAITING | TS_SUSPENDED)‚Å•\‚·DTS_WAIT_???‚Í‘Ò
    77  *  ‚¿—vˆö‚ð•\‚µC‘Ò‚¿ó‘ԁi“ñd‘Ò‚¿ó‘Ô‚ðŠÜ‚ށj‚̏ꍇ‚ɂ̂ݐݒ肷‚éD
    78  */
    79 #define TS_DORMANT              0x00U                   /* ‹xŽ~ó‘Ô */
    80 #define TS_RUNNABLE             0x01U                   /* ŽÀs‚Å‚«‚éó‘Ô */
    81 #define TS_WAITING              0x02U                   /* ‘Ò‚¿ó‘Ô */
    82 #define TS_SUSPENDED    0x04U                   /* ‹­§‘Ò‚¿ó‘Ô */
    83 
    84 #define TS_WAIT_DLY             (0x00U << 3)    /* ŽžŠÔŒo‰ß‘Ò‚¿ */
    85 #define TS_WAIT_SLP             (0x01U << 3)    /* ‹N°‘Ò‚¿ */
    86 #define TS_WAIT_RDTQ    (0x02U << 3)    /* ƒf[ƒ^ƒLƒ
    87 [‚©‚ç‚ÌŽóM‘Ò‚¿ */
    88 #define TS_WAIT_RPDQ    (0x03U << 3)    /* —Dæ“xƒf[ƒ^ƒLƒ
    89 [‚©‚ç‚ÌŽóM‘Ò‚¿ */
    90 #define TS_WAIT_SEM             (0x04U << 3)    /* ƒZƒ}ƒtƒHŽ‘Œ¹‚ÌŠl“¾‘Ò‚¿ */
    91 #define TS_WAIT_FLG             (0x05U << 3)    /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿ */
    92 #define TS_WAIT_SDTQ    (0x06U << 3)    /* ƒf[ƒ^ƒLƒ
    93 [‚Ö‚Ì‘—M‘Ò‚¿ */
    94 #define TS_WAIT_SPDQ    (0x07U << 3)    /* —Dæ“xƒf[ƒ^ƒLƒ
    95 [‚Ö‚Ì‘—M‘Ò‚¿ */
    96 #define TS_WAIT_MBX             (0x08U << 3)    /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚©‚ç‚ÌŽóM‘Ò‚¿ */
    97 #define TS_WAIT_MPF             (0x09U << 3)    /* ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚ÌŠl“¾‘Ò‚¿ */
    98 
    99 /*
    100  *  ƒ^ƒXƒNó‘Ô”»•Êƒ}ƒNƒ
    101  *
    102  *  TSTAT_DORMANT‚̓^ƒXƒN‚ª‹xŽ~ó‘Ô‚Å‚ ‚é‚©‚Ç‚¤‚©‚ðCTSTAT_RUNNABLE‚Í
    103  *  ƒ^ƒXƒN‚ªŽÀs‚Å‚«‚éó‘Ô‚Å‚ ‚é‚©‚Ç‚¤‚©‚ð”»•Ê‚·‚éDTSTAT_WAITING‚Í‘Ò
    104  *  ‚¿ó‘Ô‚Æ“ñd‘Ò‚¿ó‘Ô‚Ì‚¢‚¸‚ê‚©‚Å‚ ‚é‚©‚Ç‚¤‚©‚ðCTSTAT_SUSPENDED‚Í
    105  *  ‹­§‘Ò‚¿ó‘Ô‚Æ“ñd‘Ò‚¿ó‘Ô‚Ì‚¢‚¸‚ê‚©‚Å‚ ‚é‚©‚Ç‚¤‚©‚ð”»•Ê‚·‚éD
     67 *  タスク状態の内部表現
     68 *
     69 *  TCB中のタスク状態では,実行状態(RUNNING)と実行可能状態(READY)
     70 *  は区別しない.両状態を総称して,実行できる状態(RUNNABLE)と呼ぶ.
     71 *  二重待ち状態は,(TS_WAITING | TS_SUSPENDED)で表す.TS_WAIT_???は待
     72 *  ち要因を表し,待ち状態(二重待ち状態を含む)の場合にのみ設定する.
     73 */
     74#define TS_DORMANT              0x00U                   /* 休止状態 */
     75#define TS_RUNNABLE             0x01U                   /* 実行できる状態 */
     76#define TS_WAITING              0x02U                   /* 待ち状態 */
     77#define TS_SUSPENDED    0x04U                   /* 強制待ち状態 */
     78
     79#define TS_WAIT_DLY             (0x00U << 3)    /* 時間経過待ち */
     80#define TS_WAIT_SLP             (0x01U << 3)    /* 起床待ち */
     81#define TS_WAIT_RDTQ    (0x02U << 3)    /* データキューからの受信待ち */
     82#define TS_WAIT_RPDQ    (0x03U << 3)    /* 優先度データキューからの受信待ち */
     83#define TS_WAIT_SEM             (0x04U << 3)    /* セマフォ資源の獲得待ち */
     84#define TS_WAIT_FLG             (0x05U << 3)    /* イベントフラグ待ち */
     85#define TS_WAIT_SDTQ    (0x06U << 3)    /* データキューへの送信待ち */
     86#define TS_WAIT_SPDQ    (0x07U << 3)    /* 優先度データキューへの送信待ち */
     87#define TS_WAIT_MBX             (0x08U << 3)    /* メールボックスからの受信待ち */
     88#define TS_WAIT_MPF             (0x09U << 3)    /* 固定長メモリブロックの獲得待ち */
     89
     90/*
     91 *  タスク状態判別マクロ
     92 *
     93 *  TSTAT_DORMANTはタスクが休止状態であるかどうかを,TSTAT_RUNNABLEは
     94 *  タスクが実行できる状態であるかどうかを判別する.TSTAT_WAITINGは待
     95 *  ち状態と二重待ち状態のいずれかであるかどうかを,TSTAT_SUSPENDEDは
     96 *  強制待ち状態と二重待ち状態のいずれかであるかどうかを判別する.
    10697 */
    10798#define TSTAT_DORMANT(tstat)    ((tstat) == TS_DORMANT)
     
    111102
    112103/*
    113  *  ƒ^ƒXƒN‘Ò‚¿—vˆö”»•Êƒ}ƒNƒ
    114  *
    115  *  TSTAT_WAIT_SLP‚̓^ƒXƒN‚ª‹N°‘Ò‚¿‚Å‚ ‚é‚©‚Ç‚¤‚©‚ðCTSTAT_WAIT_WOBJ
    116  *  ‚̓^ƒXƒN‚ª“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ɑ΂·‚é‘Ò‚¿‚Å‚ ‚é‚©iŒ¾‚¢Š·‚¦‚é‚ƁC
    117  *  “¯Šú’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿ƒLƒ
    118 [‚ɂ‚Ȃª‚ê‚Ä‚¢‚é‚©j‚Ç‚¤‚©‚ð”»•Ê‚·
    119  *  ‚éD‚Ü‚½CTSTAT_WAIT_WOBJCB‚̓^ƒXƒN‚ª“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—
    120  *  ƒuƒƒbƒN‚Ì‹¤’Ê•”•ªiWOBJCBj‚Ì‘Ò‚¿ƒLƒ
    121 [‚ɂ‚Ȃª‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ð
    122  *  ”»•Ê‚·‚éD
    123  *
    124  *  TSTAT_WAIT_SLP‚́C”CˆÓ‚̃^ƒXƒNó‘Ô‚Ì’†‚©‚çCƒ^ƒXƒN‚ª‹N°‘Ò‚¿‚Å‚ ‚é
    125  *  ‚±‚Æ‚ð”»•Ê‚Å‚«‚éD‚·‚È‚í‚¿CTSTAT_WAITING‚É‚æ‚è‘Ò‚¿ó‘Ô‚Å‚ ‚邱‚Æ‚ð
    126  *  ”»•Ê‚¹‚¸‚ɁCTSTAT_SLP‚¾‚¯‚ð—p‚¢‚Ä‹N°‘Ò‚¿ó‘Ô‚Å‚ ‚邱‚Æ‚ð”»•Ê‚Å‚«‚éD
    127  *  ‚±‚ê‚ðŒø—¦“I‚ÉŽÀŒ»‚·‚邽‚߂ɁCTS_WAIT_SLP‚Ì’l‚ðC(0x00U << 3)‚Å‚Í‚È
    128  *  ‚­(0x01U << 3)‚Æ‚µ‚Ä‚¢‚éD‚»‚Ì‚½‚߁Cƒ^ƒXƒN‚ªŽžŠÔŒo‰ß‘Ò‚¿ó‘Ô‚Å‚ ‚é
    129  *  ‚±‚Æ‚ð”»•Ê‚·‚邽‚ß‚ÌTSTAT_WAIT_DLY‚ðCTSTAT_WAIT_SLP‚Æ“¯—l‚Ì•û–@‚Å
    130  *  ŽÀŒ»‚·‚邱‚Æ‚Í‚Å‚«‚È‚¢D
    131  */
    132 #define TS_WAIT_MASK    (0x0fU << 3)    /* ‘Ò‚¿—vˆö‚ÌŽæo‚µƒ}ƒXƒN */
     104 *  タスク待ち要因判別マクロ
     105 *
     106 *  TSTAT_WAIT_SLPはタスクが起床待ちであるかどうかを,TSTAT_WAIT_WOBJ
     107 *  はタスクが同期・通信オブジェクトに対する待ちであるか(言い換えると,
     108 *  同期通信オブジェクトの待ちキューにつながれているか)どうかを判別す
     109 *  る.また,TSTAT_WAIT_WOBJCBはタスクが同期・通信オブジェクトの管理
     110 *  ブロックの共通部分(WOBJCB)の待ちキューにつながれているかどうかを
     111 *  判別する.
     112 *
     113 *  TSTAT_WAIT_SLPは,任意のタスク状態の中から,タスクが起床待ちである
     114 *  ことを判別できる.すなわち,TSTAT_WAITINGにより待ち状態であることを
     115 *  判別せずに,TSTAT_SLPだけを用いて起床待ち状態であることを判別できる.
     116 *  これを効率的に実現するために,TS_WAIT_SLPの値を,(0x00U << 3)ではな
     117 *  く(0x01U << 3)としている.そのため,タスクが時間経過待ち状態である
     118 *  ことを判別するためのTSTAT_WAIT_DLYを,TSTAT_WAIT_SLPと同様の方法で
     119 *  実現することはできない.
     120 */
     121#define TS_WAIT_MASK    (0x0fU << 3)    /* 待ち要因の取出しマスク */
    133122
    134123#define TSTAT_WAIT_SLP(tstat)           (((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
     
    137126
    138127/*
    139  *  ‘Ò‚¿î•ñƒuƒƒbƒNiWINFOj‚Ì’è‹`
    140  *
    141  *  ƒ^ƒXƒN‚ª‘Ò‚¿ó‘Ԃ̊Ԃ́CTCB‚¨‚æ‚Ñ‚»‚Ìp_winfo‚ÅŽw‚³‚ê‚éWINFO‚ðŽŸ‚Ì
    142  *  ‚悤‚ɐݒ肵‚È‚¯‚ê‚΂Ȃç‚È‚¢D
    143  *
    144  *  (a) TCB‚̃^ƒXƒNó‘Ô‚ð‘Ò‚¿ó‘ԁiTS_WAITINGj‚É‚·‚éD‚»‚̍ۂɁC‘Ò‚¿
    145  *  —vˆöiTS_WAIT_???j‚àÝ’è‚·‚éD
    146  *
    147  *  (b) ƒ^ƒCƒ€ƒAƒEƒg‚ðŠÄŽ‹‚·‚邽‚߂ɁCƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚ð“o˜^‚·‚éD
    148  *  “o˜^‚·‚éƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚́C‘Ò‚¿‚É“ü‚éƒT[ƒrƒXƒR[ƒ‹ˆ—ŠÖ”
    149  *  ‚̃[ƒJƒ‹•Ï”‚Æ‚µ‚ÄŠm•Û‚µC‚»‚ê‚ւ̃|ƒCƒ“ƒ^‚ðWINFO‚Ìp_tmevtb‚É‹L
    150  *  ‰¯‚·‚éDƒ^ƒCƒ€ƒAƒEƒg‚ÌŠÄŽ‹‚ª•K—v‚È‚¢ê‡i‰i‹v‘Ò‚¿‚̏ꍇj‚ɂ́C
    151  *  p_tmevtb‚ðNULL‚É‚·‚éD
    152  *
    153  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ɑ΂·‚é‘Ò‚¿ó‘Ԃ̏ꍇ‚ɂ́C•W€‚ÌWINFO‚É
    154  *  p_wobjcbƒtƒB[ƒ‹ƒh‚ð’ljÁ‚µ‚½\‘¢‘́iWINFO_WOBJCwait.h‚Å’è‹`j‚ðŽg
    155  *  ‚¤D‚Ü‚½CˆÈ‰º‚Ì(c)`(e)‚̐ݒè‚ðs‚¤•K—v‚ª‚ ‚éD“¯ŠúE’ʐMƒIƒuƒWƒF
    156  *  ƒNƒg‚ÉŠÖŒW‚µ‚È‚¢‘Ò‚¿i‹N°‘Ò‚¿CŽžŠÔŒo‰ß‘Ò‚¿j‚̏ꍇ‚ɂ́C(c)`(e)
    157  *  ‚Í•K—v‚È‚¢D
    158  *
    159  *  (c) TCB‚ð‘Ò‚¿‘Ώۂ̓¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿ƒLƒ
    160 [‚ɂ‚Ȃ®D‘Ò
    161  *  ‚¿ƒLƒ
    162 [‚ɂ‚Ȃ®‚½‚߂ɁCtask_queue‚ðŽg‚¤D
    163  *
    164  *  (d) ‘Ò‚¿‘Ώۂ̓¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ÌŠÇ—ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^‚ðC
    165  *  WINFO_WOBJ‚Ìp_wobjcb‚É‹L‰¯‚·‚éD
    166  *
    167  *  (e) ‘Ò‚¿‘Ώۂ̓¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ɉˑ¶‚µ‚Ä‹L‰¯‚·‚邱‚Æ‚ª•K—v‚È
    168  *  î•ñ‚ª‚ ‚éê‡‚ɂ́CWINFO_WOBJ‚É•K—v‚ȏî•ñ‚Ì‚½‚߂̃tƒB[ƒ‹ƒh‚ð’ljÁ
    169  *  ‚µ‚½\‘¢‘Ì‚ð’è‹`‚µCWINFO_WOBJ‚Ì‘ã‚í‚è‚É—p‚¢‚éD
    170  *
    171  *  ‘Ò‚¿ó‘Ô‚ð‰ðœ‚·‚éÛ‚ɂ́C‘Ò‚¿‰ðœ‚µ‚½ƒ^ƒXƒN‚ɑ΂·‚é•Ô’l‚ðWINFO‚Ì
    172  *  wercd‚ɐݒ肷‚éDwercd‚ª•K—v‚È‚Ì‚Í‘Ò‚¿‰ðœˆÈ~‚Å‚ ‚é‚̂ɑ΂µ‚āC
    173  *  p_tmevtb‚Í‘Ò‚¿‰ðœŒã‚Í•K—v‚È‚¢‚½‚߁Cƒƒ‚ƒŠß–ñ‚Ì‚½‚ß‚É‹¤—p‘Ì‚ðŽg‚Á
    174  *  ‚Ä‚¢‚éD‚»‚Ì‚½‚߁Cwercd‚ÖƒGƒ‰[ƒR[ƒh‚ðÝ’è‚·‚é‚̂́Cƒ^ƒCƒ€ƒCƒxƒ“ƒg
    175  *  ƒuƒƒbƒN‚ð“o˜^‰ðœ‚µ‚½Œã‚É‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢D
     128 *  待ち情報ブロック(WINFO)の定義
     129 *
     130 *  タスクが待ち状態の間は,TCBおよびそのp_winfoで指されるWINFOを次の
     131 *  ように設定しなければならない.
     132 *
     133 *  (a) TCBのタスク状態を待ち状態(TS_WAITING)にする.その際に,待ち
     134 *  要因(TS_WAIT_???)も設定する.
     135 *
     136 *  (b) タイムアウトを監視するために,タイムイベントブロックを登録する.
     137 *  登録するタイムイベントブロックは,待ちに入るサービスコール処理関数
     138 *  のローカル変数として確保し,それへのポインタをWINFOのp_tmevtbに記
     139 *  憶する.タイムアウトの監視が必要ない場合(永久待ちの場合)には,
     140 *  p_tmevtbをNULLにする.
     141 *
     142 *  同期・通信オブジェクトに対する待ち状態の場合には,標準のWINFOに
     143 *  p_wobjcbフィールドを追加した構造体(WINFO_WOBJ,wait.hで定義)を使
     144 *  う.また,以下の(c)〜(e)の設定を行う必要がある.同期・通信オブジェ
     145 *  クトに関係しない待ち(起床待ち,時間経過待ち)の場合には,(c)〜(e)
     146 *  は必要ない.
     147 *
     148 *  (c) TCBを待ち対象の同期・通信オブジェクトの待ちキューにつなぐ.待
     149 *  ちキューにつなぐために,task_queueを使う.
     150 *
     151 *  (d) 待ち対象の同期・通信オブジェクトの管理ブロックへのポインタを,
     152 *  WINFO_WOBJのp_wobjcbに記憶する.
     153 *
     154 *  (e) 待ち対象の同期・通信オブジェクトに依存して記憶することが必要な
     155 *  情報がある場合には,WINFO_WOBJに必要な情報のためのフィールドを追加
     156 *  した構造体を定義し,WINFO_WOBJの代わりに用いる.
     157 *
     158 *  待ち状態を解除する際には,待ち解除したタスクに対する返値をWINFOの
     159 *  wercdに設定する.wercdが必要なのは待ち解除以降であるのに対して,
     160 *  p_tmevtbは待ち解除後は必要ないため,メモリ節約のために共用体を使っ
     161 *  ている.そのため,wercdへエラーコードを設定するのは,タイムイベント
     162 *  ブロックを登録解除した後にしなければならない.
    176163 */
    177164typedef union waiting_information {
    178         ER              wercd;                  /* ‘Ò‚¿‰ðœŽž‚̃Gƒ‰[ƒR[ƒh */
    179         TMEVTB  *p_tmevtb;              /* ‘Ò‚¿ó‘Ô—p‚̃^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN */
     165        ER              wercd;                  /* 待ち解除時のエラーコード */
     166        TMEVTB  *p_tmevtb;              /* 待ち状態用のタイムイベントブロック */
    180167} WINFO;
    181168
    182169/*
    183  *  ƒ^ƒXƒN‰Šú‰»ƒuƒƒbƒN
    184  *
    185  *  ƒ^ƒXƒN‚ÉŠÖ‚·‚éî•ñ‚ðC’l‚ª•Ï‚í‚ç‚È‚¢‚½‚ß‚ÉROM‚É’u‚¯‚é•”•ªiƒ^ƒXƒN
    186  *  ‰Šú‰»ƒuƒƒbƒNj‚ƁC’l‚ª•Ï‰»‚·‚邽‚ß‚ÉRAM‚É’u‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢•”
    187  *  •ªiƒ^ƒXƒNŠÇ—ƒuƒƒbƒNCTCBj‚É•ª—£‚µCTCB“à‚ɑΉž‚·‚éƒ^ƒXƒN‰Šú‰»
    188  *  ƒuƒƒbƒN‚ðŽw‚·ƒ|ƒCƒ“ƒ^‚ð“ü‚ê‚éDƒ^ƒXƒN‰Šú‰»ƒuƒƒbƒN“à‚ɑΉž‚·‚é
    189  *  TCB‚ðŽw‚·ƒ|ƒCƒ“ƒ^‚ð“ü‚ê‚é•û–@‚Ì•û‚ªCRAM‚̐ߖñ‚ÌŠÏ“_‚©‚ç‚Í–]‚Ü‚µ‚¢
    190  *  ‚ªCŽÀsŒø—¦‚ªˆ«‚­‚Ȃ邽‚߂ɍ̗p‚µ‚Ä‚¢‚È‚¢D‘¼‚̃IƒuƒWƒFƒNƒg‚ɂ‚¢
    191  *  ‚Ä‚à“¯—l‚Ɉµ‚¤D
    192  *
    193  *  ƒ^ƒXƒN‰Šú‰»ƒuƒƒbƒN‚ɂ́CDEF_TEX‚Å’è‹`‚³‚ê‚éƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`
    194  *  ƒ“‚ÉŠÖ‚·‚éî•ñ‚àŠÜ‚ށD
     170 *  タスク初期化ブロック
     171 *
     172 *  タスクに関する情報を,値が変わらないためにROMに置ける部分(タスク
     173 *  初期化ブロック)と,値が変化するためにRAMに置かなければならない部
     174 *  分(タスク管理ブロック,TCB)に分離し,TCB内に対応するタスク初期化
     175 *  ブロックを指すポインタを入れる.タスク初期化ブロック内に対応する
     176 *  TCBを指すポインタを入れる方法の方が,RAMの節約の観点からは望ましい
     177 *  が,実行効率が悪くなるために採用していない.他のオブジェクトについ
     178 *  ても同様に扱う.
     179 *
     180 *  タスク初期化ブロックには,DEF_TEXで定義されるタスク例外処理ルーチ
     181 *  ンに関する情報も含む.
    195182 */
    196183typedef struct task_initialization_block {
    197         ATR                     tskatr;                 /* ƒ^ƒXƒN‘®« */
    198         intptr_t        exinf;                  /* ƒ^ƒXƒN‚ÌŠg’£î•ñ */
    199         TASK            task;                   /* ƒ^ƒXƒN‚Ì‹N“®”Ô’n */
    200         uint_t          ipriority;              /* ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“xi“à•”•\Œ»j */
     184        ATR                     tskatr;                 /* タスク属性 */
     185        intptr_t        exinf;                  /* タスクの拡張情報 */
     186        TASK            task;                   /* タスクの起動番地 */
     187        uint_t          ipriority;              /* タスクの起動時優先度(内部表現) */
    201188
    202189#ifdef USE_TSKINICTXB
    203         TSKINICTXB      tskinictxb;             /* ƒ^ƒXƒN‰Šú‰»ƒRƒ“ƒeƒLƒXƒgƒuƒƒbƒN */
     190        TSKINICTXB      tskinictxb;             /* タスク初期化コンテキストブロック */
    204191#else /* USE_TSKINICTXB */
    205         SIZE            stksz;                  /* ƒXƒ^ƒbƒN—̈æ‚̃TƒCƒYiŠÛ‚ß‚½’lj */
    206         void            *stk;                   /* ƒXƒ^ƒbƒN—̈æ‚̐擪”Ô’n */
     192        SIZE            stksz;                  /* スタック領域のサイズ(丸めた値) */
     193        void            *stk;                   /* スタック領域の先頭番地 */
    207194#endif /* USE_TSKINICTXB */
    208195
    209         ATR                     texatr;                 /* ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‘®« */
    210         TEXRTN          texrtn;                 /* ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‹N“®”Ô’n */
     196        ATR                     texatr;                 /* タスク例外処理ルーチン属性 */
     197        TEXRTN          texrtn;                 /* タスク例外処理ルーチンの起動番地 */
    211198} TINIB;
    212199
    213200/*
    214  *  TCB’†‚̃tƒB[ƒ‹ƒh‚̃rƒbƒg•‚Ì’è‹`
    215  *
    216  *  ƒvƒƒZƒbƒT‚É‚æ‚Á‚ẮCTCB’†‚̃tƒB[ƒ‹ƒh‚̃rƒbƒg•‚сƒ‚ƒŠŽg—p—Ê‚Æ
    217  *  «”\‚ªƒgƒŒ[ƒhƒIƒt‚ɂȂ邽‚߁Cƒ^[ƒQƒbƒgˆË‘¶‚ɃtƒB[ƒ‹ƒh‚̃rƒbƒg•
    218  *  ‚ð•ÏX‚·‚邱‚Æ‚ð‹–‚µ‚Ä‚¢‚éD
     201 *  TCB中のフィールドのビット幅の定義
     202 *
     203 *  プロセッサによっては,TCB中のフィールドのビット幅でメモリ使用量と
     204 *  性能がトレードオフになるため,ターゲット依存にフィールドのビット幅
     205 *  を変更することを許している.
    219206 */
    220207#ifndef TBIT_TCB_PRIORITY
    221 #define TBIT_TCB_PRIORITY               8               /* priorityƒtƒB[ƒ‹ƒh‚̃rƒbƒg• */
     208#define TBIT_TCB_PRIORITY               8               /* priorityフィールドのビット幅 */
    222209#endif /* TBIT_TCB_PRIORITY */
    223210
    224211/*
    225  *  ƒ^ƒXƒNŠÇ—ƒuƒƒbƒNiTCBj
    226  *
    227  *  ASPƒJ[ƒlƒ‹‚ł́Cƒ^ƒXƒN‚Ì‹N“®—v‹ƒLƒ
    228 [ƒCƒ“ƒO”‚̍őå’liTMAX_ACTCNTj
    229  *  ‚Æ‹N°—v‹ƒLƒ
    230 [ƒCƒ“ƒO”‚̍őå’liTMAX_WUPCNTj‚Í1‚ɌŒ肳‚ê‚Ä‚¢‚é
    231  *  ‚½‚߁CƒLƒ
    232 [ƒCƒ“ƒO‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚̐^‹U’l‚Å•\Œ»‚·‚邱‚Æ‚ª‚Å‚«‚éD
    233  *  ‚Ü‚½C‹­§‘Ò‚¿—v‹ƒlƒXƒg”‚̍őå’liTMAX_SUSCNTj‚ª1‚ɌŒ肳‚ê‚Ä‚¢
    234  *  ‚é‚̂ŁC‹­§‘Ò‚¿—v‹ƒlƒXƒg”isuscntj‚Í•K—v‚È‚¢D
    235  *
    236  *  TCB‚Ì‚¢‚­‚‚©‚̃tƒB[ƒ‹ƒh‚́C“Á’è‚̃^ƒXƒNó‘Ô‚Å‚Ì‚Ý—LŒø‚È’l‚ð•ÛŽ‚µC
    237  *  ‚»‚êˆÈŠO‚̏ꍇ‚Í’l‚ª•ÛØ‚³‚ê‚È‚¢i‚æ‚Á‚āCŽQÆ‚µ‚Ä‚Í‚È‚ç‚È‚¢jDŠe
    238  *  ƒtƒB[ƒ‹ƒh‚ª—LŒø‚È’l‚ð•ÛŽ‚·‚éðŒ‚ÍŽŸ‚Ì’Ê‚èD
    239  *
    240  *  E‰Šú‰»Œã‚͏í‚É—LŒøF
    241  *              p_tinibCtstatCactque
    242  *  E‹xŽ~ó‘ԈȊO‚Å—LŒøi‹xŽ~ó‘Ԃł͏‰Šú’l‚É‚È‚Á‚Ä‚¢‚éjF
    243  *              priorityCwupqueCenatexCtexptn
    244  *  E‘Ò‚¿ó‘ԁi“ñd‘Ò‚¿ó‘Ô‚ðŠÜ‚ށj‚Å—LŒøF
     212 *  タスク管理ブロック(TCB)
     213 *
     214 *  ASPカーネルでは,タスクの起動要求キューイング数の最大値(TMAX_ACTCNT)
     215 *  と起床要求キューイング数の最大値(TMAX_WUPCNT)は1に固定されている
     216 *  ため,キューイングされているかどうかの真偽値で表現することができる.
     217 *  また,強制待ち要求ネスト数の最大値(TMAX_SUSCNT)が1に固定されてい
     218 *  るので,強制待ち要求ネスト数(suscnt)は必要ない.
     219 *
     220 *  TCBのいくつかのフィールドは,特定のタスク状態でのみ有効な値を保持し,
     221 *  それ以外の場合は値が保証されない(よって,参照してはならない).各
     222 *  フィールドが有効な値を保持する条件は次の通り.
     223 *
     224 *  ・初期化後は常に有効:
     225 *              p_tinib,tstat,actque
     226 *  ・休止状態以外で有効(休止状態では初期値になっている):
     227 *              priority,wupque,enatex,texptn
     228 *  ・待ち状態(二重待ち状態を含む)で有効:
    245229 *              p_winfo
    246  *  EŽÀs‚Å‚«‚éó‘Ô‚Æ“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ɑ΂·‚é‘Ò‚¿ó‘Ô‚Å—LŒøF
     230 *  ・実行できる状態と同期・通信オブジェクトに対する待ち状態で有効:
    247231 *              task_queue
    248  *  EŽÀs‰Â”\ó‘ԁC‘Ò‚¿ó‘ԁC‹­§‘Ò‚¿ó‘ԁC“ñd‘Ò‚¿ó‘Ô‚Å—LŒøF
     232 *  ・実行可能状態,待ち状態,強制待ち状態,二重待ち状態で有効:
    249233 *              tskctxb
    250234 */
    251235typedef struct task_control_block {
    252         QUEUE                   task_queue;             /* ƒ^ƒXƒNƒLƒ
    253 [ */
    254         const TINIB             *p_tinib;               /* ‰Šú‰»ƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
     236        QUEUE                   task_queue;             /* タスクキュー */
     237        const TINIB             *p_tinib;               /* 初期化ブロックへのポインタ */
    255238
    256239#ifdef UINT8_MAX
    257         uint8_t                 tstat;                  /* ƒ^ƒXƒNó‘ԁi“à•”•\Œ»j*/
     240        uint8_t                 tstat;                  /* タスク状態(内部表現)*/
    258241#else /* UINT8_MAX */
    259         BIT_FIELD_UINT  tstat : 8;              /* ƒ^ƒXƒNó‘ԁi“à•”•\Œ»j*/
     242        BIT_FIELD_UINT  tstat : 8;              /* タスク状態(内部表現)*/
    260243#endif /* UINT8_MAX */
    261244#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
    262         uint8_t                 priority;               /* Œ»Ý‚Ì—Dæ“xi“à•”•\Œ»j*/
     245        uint8_t                 priority;               /* 現在の優先度(内部表現)*/
    263246#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
    264247        BIT_FIELD_UINT  priority : TBIT_TCB_PRIORITY;
    265                                                                         /* Œ»Ý‚Ì—Dæ“xi“à•”•\Œ»j*/
     248                                                                        /* 現在の優先度(内部表現)*/
    266249#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
    267         BIT_FIELD_BOOL  actque : 1;             /* ‹N“®—v‹ƒLƒ
    268 [ƒCƒ“ƒO */
    269         BIT_FIELD_BOOL  wupque : 1;             /* ‹N°—v‹ƒLƒ
    270 [ƒCƒ“ƒO */
    271         BIT_FIELD_BOOL  enatex : 1;             /* ƒ^ƒXƒN—áŠOˆ—‹–‰Âó‘Ô */
    272 
    273         TEXPTN                  texptn;                 /* •Û—¯—áŠO—vˆö */
    274         WINFO                   *p_winfo;               /* ‘Ò‚¿î•ñƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ */
    275         TSKCTXB                 tskctxb;                /* ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgƒuƒƒbƒN */
     250        BIT_FIELD_BOOL  actque : 1;             /* 起動要求キューイング */
     251        BIT_FIELD_BOOL  wupque : 1;             /* 起床要求キューイング */
     252        BIT_FIELD_BOOL  enatex : 1;             /* タスク例外処理許可状態 */
     253
     254        TEXPTN                  texptn;                 /* 保留例外要因 */
     255        WINFO                   *p_winfo;               /* 待ち情報ブロックへのポインタ */
     256        TSKCTXB                 tskctxb;                /* タスクコンテキストブロック */
    276257} TCB;
    277258
    278259/*
    279  *  ŽÀsó‘Ԃ̃^ƒXƒN
    280  *
    281  *  ŽÀsó‘Ԃ̃^ƒXƒNiƒvƒƒZƒbƒT‚ªƒRƒ“ƒeƒLƒXƒg‚ðŽ‚Á‚Ä‚¢‚éƒ^ƒXƒNj‚Ì
    282  *  TCB‚ðŽw‚·ƒ|ƒCƒ“ƒ^DŽÀsó‘Ԃ̃^ƒXƒN‚ª‚È‚¢ê‡‚ÍNULL‚É‚·‚éD
    283  *
    284  *  ƒT[ƒrƒXƒR[ƒ‹‚̏ˆ—’†‚ŁCŽ©ƒ^ƒXƒNiƒT[ƒrƒXƒR[ƒ‹‚ðŒÄ‚яo‚µ‚½ƒ^ƒX
    285  *  ƒNj‚ÉŠÖ‚·‚éî•ñ‚ðŽQÆ‚·‚éê‡‚Íp_runtsk‚ðŽg‚¤Dp_runtsk‚ð‘‚«Š·‚¦
    286  *  ‚é‚̂́CƒfƒBƒXƒpƒbƒ`ƒƒi‚Ə‰Šú‰»ˆ—j‚Ì‚Ý‚Å‚ ‚éD
     260 *  実行状態のタスク
     261 *
     262 *  実行状態のタスク(=プロセッサがコンテキストを持っているタスク)の
     263 *  TCBを指すポインタ.実行状態のタスクがない場合はNULLにする.
     264 *
     265 *  サービスコールの処理中で,自タスク(サービスコールを呼び出したタス
     266 *  ク)に関する情報を参照する場合はp_runtskを使う.p_runtskを書き換え
     267 *  るのは,ディスパッチャ(と初期化処理)のみである.
    287268 */
    288269extern TCB      *p_runtsk;
    289270
    290271/*
    291  *  Å‚—Dæ‡ˆÊ‚̃^ƒXƒN
    292  *
    293  *  ŽÀs‚Å‚«‚éƒ^ƒXƒN‚Ì’†‚ōō‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ÌTCB‚ðŽw‚·ƒ|ƒCƒ“ƒ^DŽÀ
    294  *  s‚Å‚«‚éƒ^ƒXƒN‚ª‚È‚¢ê‡‚ÍNULL‚É‚·‚éD
    295  *
    296  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘ԂȂǁCƒfƒBƒXƒpƒbƒ`‚ª•Û—¯‚³‚ê‚Ä‚¢‚éŠÔ‚Íp_runtsk
    297  *  ‚ƈê’v‚µ‚Ä‚¢‚é‚Æ‚ÍŒÀ‚ç‚È‚¢D
     272 *  最高優先順位のタスク
     273 *
     274 *  実行できるタスクの中で最高優先順位のタスクのTCBを指すポインタ.実
     275 *  行できるタスクがない場合はNULLにする.
     276 *
     277 *  ディスパッチ禁止状態など,ディスパッチが保留されている間はp_runtsk
     278 *  と一致しているとは限らない.
    298279 */
    299280extern TCB      *p_schedtsk;
    300281
    301282/*
    302  *  ƒfƒBƒXƒpƒbƒ`^ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‹N“®—v‹ƒtƒ‰ƒO
    303  *
    304  *  Š„ž‚݃nƒ“ƒhƒ‰^CPU—áŠOƒnƒ“ƒhƒ‰‚̏oŒûˆ—‚ɁCƒfƒBƒXƒpƒbƒ`‚Ü‚½‚Í
    305  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‹N“®‚ð—v‹‚·‚邱‚Æ‚ðŽ¦‚·ƒtƒ‰ƒOD
     283 *  ディスパッチ/タスク例外処理ルーチン起動要求フラグ
     284 *
     285 *  割込みハンドラ/CPU例外ハンドラの出口処理に,ディスパッチまたは
     286 *  タスク例外処理ルーチンの起動を要求することを示すフラグ.
    306287 */
    307288extern bool_t   reqflg;
    308289
    309290/*
    310  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô
    311  *
    312  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å‚ ‚邱‚Æ‚ðŽ¦‚·ƒtƒ‰ƒOD
     291 *  割込み優先度マスク全解除状態
     292 *
     293 *  割込み優先度マスク全解除状態であることを示すフラグ.
    313294 */
    314295extern bool_t   ipmflg;
    315296
    316297/*
    317  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô
    318  *
    319  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚Å‚ ‚邱‚Æ‚ðŽ¦‚·ƒtƒ‰ƒOD
     298 *  ディスパッチ禁止状態
     299 *
     300 *  ディスパッチ禁止状態であることを示すフラグ.
    320301 */
    321302extern bool_t   disdsp;
    322303
    323304/*
    324  *  ƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`‰Â”\ó‘Ô
    325  *
    326  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å‚ ‚èCƒfƒBƒXƒpƒbƒ`‹–‰Âó‘Ô‚Å‚ ‚éiƒfƒB
    327  *  ƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚Å‚È‚¢j‚±‚Æ‚ðŽ¦‚·ƒtƒ‰ƒOD
     305 *  タスクディスパッチ可能状態
     306 *
     307 *  割込み優先度マスク全解除状態であり,ディスパッチ許可状態である(ディ
     308 *  スパッチ禁止状態でない)ことを示すフラグ.
    328309 */
    329310extern bool_t   dspflg;
    330311
    331312/*
    332  *  ƒŒƒfƒBƒLƒ
    333 [
    334  *
    335  *  ƒŒƒfƒBƒLƒ
    336 [‚́CŽÀs‚Å‚«‚éó‘Ԃ̃^ƒXƒN‚ðŠÇ—‚·‚邽‚߂̃Lƒ
    337 [‚Å‚ ‚éD
    338  *  ŽÀsó‘Ԃ̃^ƒXƒN‚àŠÇ—‚µ‚Ä‚¢‚邽‚߁CƒŒƒfƒBiŽÀs‰Â”\jƒLƒ
    339 [‚Æ‚¢‚¤
    340  *  –¼Ì‚͐³Šm‚Å‚Í‚È‚¢‚ªCƒŒƒfƒBƒLƒ
    341 [‚Æ‚¢‚¤–¼Ì‚ª’è’
    342 ‚µ‚Ä‚¢‚邽‚߁C‚±
    343  *  ‚Ì–¼Ì‚ŌĂԂ±‚Æ‚É‚·‚éD
    344  *
    345  *  ƒŒƒfƒBƒLƒ
    346 [‚́C—Dæ“x‚²‚Ƃ̃^ƒXƒNƒLƒ
    347 [‚ō\¬‚³‚ê‚Ä‚¢‚éDƒ^ƒXƒN‚Ì
    348  *  TCB‚́CŠY“–‚·‚é—Dæ“x‚̃Lƒ
    349 [‚É“o˜^‚³‚ê‚éD
     313 *  レディキュー
     314 *
     315 *  レディキューは,実行できる状態のタスクを管理するためのキューである.
     316 *  実行状態のタスクも管理しているため,レディ(実行可能)キューという
     317 *  名称は正確ではないが,レディキューという名称が定着しているため,こ
     318 *  の名称で呼ぶことにする.
     319 *
     320 *  レディキューは,優先度ごとのタスクキューで構成されている.タスクの
     321 *  TCBは,該当する優先度のキューに登録される.
    350322 */
    351323extern QUEUE    ready_queue[TNUM_TPRI];
    352324
    353325/*
    354  *  ƒŒƒfƒBƒLƒ
    355 [ƒT[ƒ`‚Ì‚½‚߂̃rƒbƒgƒ}ƒbƒv
    356  *
    357  *  ƒŒƒfƒBƒLƒ
    358 [‚̃T[ƒ`‚ðŒø—¦‚æ‚­s‚¤‚½‚߂ɁC—Dæ“x‚²‚Ƃ̃^ƒXƒNƒLƒ
    359 [
    360  *  ‚Ƀ^ƒXƒN‚ª“ü‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ðŽ¦‚·ƒrƒbƒgƒ}ƒbƒv‚ð—pˆÓ‚µ‚Ä‚¢‚éDƒrƒb
    361  *  ƒgƒ}ƒbƒv‚ðŽg‚¤‚±‚ƂŁCƒƒ‚ƒŠƒAƒNƒZƒX‚̉ñ”‚ðŒ¸‚ç‚·‚±‚Æ‚ª‚Å‚«‚邪C
    362  *  ƒrƒbƒg‘€ì–½—ß‚ª[ŽÀ‚µ‚Ä‚¢‚È‚¢ƒvƒƒZƒbƒT‚ŁC—Dæ“x‚Ì’iŠK”‚ª­‚È‚¢
    363  *  ê‡‚ɂ́Cƒrƒbƒgƒ}ƒbƒv‘€ì‚̃I[ƒo[ƒwƒbƒh‚Ì‚½‚߂ɁC‹t‚ÉŒø—¦‚ª—Ž‚¿
    364  *  ‚é‰Â”\«‚à‚ ‚éD
    365  *
    366  *  —Dæ“x‚ª16’iŠK‚Å‚ ‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚邽‚߁Cuint16_tŒ^‚Æ‚µ‚Ä‚¢‚éD
     326 *  レディキューサーチのためのビットマップ
     327 *
     328 *  レディキューのサーチを効率よく行うために,優先度ごとのタスクキュー
     329 *  にタスクが入っているかどうかを示すビットマップを用意している.ビッ
     330 *  トマップを使うことで,メモリアクセスの回数を減らすことができるが,
     331 *  ビット操作命令が充実していないプロセッサで,優先度の段階数が少ない
     332 *  場合には,ビットマップ操作のオーバーヘッドのために,逆に効率が落ち
     333 *  る可能性もある.
     334 *
     335 *  優先度が16段階であることを仮定しているため,uint16_t型としている.
    367336 */
    368337extern uint16_t ready_primap;
    369338
    370339/*
    371  *  Žg—p‚µ‚Ä‚¢‚È‚¢TCB‚̃ŠƒXƒg
     340 *  使用していないTCBのリスト
    372341 */
    373342extern QUEUE    free_tcb;
    374343
    375344/*
    376  *  ƒ^ƒXƒNID‚̍őå’likernel_cfg.cj
     345 *  タスクIDの最大値(kernel_cfg.c)
    377346 */
    378347extern const ID tmax_tskid;
     
    380349
    381350/*
    382  *  ƒ^ƒXƒN‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     351 *  タスク初期化ブロックのエリア(kernel_cfg.c)
    383352 */
    384353extern const TINIB      tinib_table[];
     
    386355
    387356/*
    388  *  ƒ^ƒXƒN¶¬‡˜ƒe[ƒuƒ‹ikernel_cfg.cj
     357 *  タスク生成順序テーブル(kernel_cfg.c)
    389358 */
    390359extern const ID torder_table[];
    391360
    392361/*
    393  *  TCB‚̃GƒŠƒAikernel_cfg.cj
     362 *  TCBのエリア(kernel_cfg.c)
    394363 */
    395364extern TCB      tcb_table[];
    396365
    397366/*
    398  *  ƒ^ƒXƒN‚̐”
     367 *  タスクの数
    399368 */
    400369#define tnum_tsk        ((uint_t)(tmax_tskid - TMIN_TSKID + 1))
     
    402371
    403372/*
    404  *  ƒ^ƒXƒNID‚©‚çTCB‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     373 *  タスクIDからTCBを取り出すためのマクロ
    405374 */
    406375#define INDEX_TSK(tskid)        ((uint_t)((tskid) - TMIN_TSKID))
     
    409378
    410379/*
    411  *  TCB‚©‚çƒ^ƒXƒNID‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     380 *  TCBからタスクIDを取り出すためのマクロ
    412381 */
    413382#define TSKID(p_tcb)    ((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
    414383
    415384/*
    416  *  ƒ^ƒXƒNŠÇ—ƒ‚ƒWƒ
    417 [ƒ‹‚̏‰Šú‰»
     385 *  タスク管理モジュールの初期化
    418386 */
    419387extern void     initialize_task(void);
    420388
    421389/*
    422  *  Å‚—Dæ‡ˆÊƒ^ƒXƒN‚̃T[ƒ`
    423  *
    424  *  ƒŒƒfƒBƒLƒ
    425 [’†‚̍ō‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ðƒT[ƒ`‚µC‚»‚ÌTCB‚ւ̃|ƒCƒ“ƒ^
    426  *  ‚ð•Ô‚·DƒŒƒfƒBƒLƒ
    427 [‚ª‹ó‚̏ꍇ‚ɂ́C‚±‚̊֐”‚ðŒÄ‚яo‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     390 *  最高優先順位タスクのサーチ
     391 *
     392 *  レディキュー中の最高優先順位のタスクをサーチし,そのTCBへのポインタ
     393 *  を返す.レディキューが空の場合には,この関数を呼び出してはならない.
    428394 */
    429395extern TCB      *search_schedtsk(void);
    430396
    431397/*
    432  *  ŽÀs‚Å‚«‚éó‘Ô‚Ö‚Ì‘JˆÚ
    433  *
    434  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚ðƒŒƒfƒBƒLƒ
    435 [‚É‘}“ü‚·‚éDƒŒƒfƒBƒLƒ
    436 [‚É‘}“ü
    437  *  ‚µ‚½ƒ^ƒXƒN‚Ì—Dæ“x‚ªCÅ‚—Dæ‡ˆÊ‚̃^ƒXƒN‚Ì—Dæ“x‚æ‚è‚à‚‚¢ê‡‚́C
    438  *  Å‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ðXV‚µCƒfƒBƒXƒpƒbƒ`‹–‰Âó‘Ô‚Å‚ ‚ê‚Îtrue‚ð•Ô
    439  *  ‚·D‚»‚¤‚Å‚È‚¢ê‡‚Ífalse‚ð•Ô‚·D
     398 *  実行できる状態への遷移
     399 *
     400 *  p_tcbで指定されるタスクをレディキューに挿入する.レディキューに挿入
     401 *  したタスクの優先度が,最高優先順位のタスクの優先度よりも高い場合は,
     402 *  最高優先順位のタスクを更新し,ディスパッチ許可状態であればtrueを返
     403 *  す.そうでない場合はfalseを返す.
    440404 */
    441405extern bool_t   make_runnable(TCB *p_tcb);
    442406
    443407/*
    444  *  ŽÀs‚Å‚«‚éó‘Ô‚©‚瑼‚̏ó‘Ô‚Ö‚Ì‘JˆÚ
    445  *
    446  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚ðƒŒƒfƒBƒLƒ
    447 [‚©‚çíœ‚·‚éDp_tcb‚ÅŽw’肵‚½
    448  *  ƒ^ƒXƒN‚ªÅ‚—Dæ‡ˆÊ‚̃^ƒXƒN‚Å‚ ‚Á‚½ê‡‚ɂ́CÅ‚—Dæ‡ˆÊ‚̃^ƒXƒN
    449  *  ‚ðÝ’肵‚È‚¨‚µCƒfƒBƒXƒpƒbƒ`‹–‰Âó‘Ô‚Å‚ ‚ê‚Îtrue‚ð•Ô‚·D‚»‚¤‚Å‚È‚¢
    450  *  ê‡‚Ífalse‚ð•Ô‚·Dƒ^ƒXƒN‚̏ó‘Ԃ͍XV‚µ‚È‚¢D
     408 *  実行できる状態から他の状態への遷移
     409 *
     410 *  p_tcbで指定されるタスクをレディキューから削除する.p_tcbで指定した
     411 *  タスクが最高優先順位のタスクであった場合には,最高優先順位のタスク
     412 *  を設定しなおし,ディスパッチ許可状態であればtrueを返す.そうでない
     413 *  場合はfalseを返す.タスクの状態は更新しない.
    451414 */
    452415extern bool_t   make_non_runnable(TCB *p_tcb);
    453416
    454417/*
    455  *  ‹xŽ~ó‘Ô‚Ö‚Ì‘JˆÚ
    456  *
    457  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚̏ó‘Ô‚ð‹xŽ~ó‘Ô‚Æ‚·‚éD‚Ü‚½Cƒ^ƒXƒN‚Ì‹N“®
    458  *  Žž‚ɏ‰Šú‰»‚·‚ׂ«•Ï”‚̏‰Šú‰»‚ƁCƒ^ƒXƒN‹N“®‚Ì‚½‚߂̃Rƒ“ƒeƒLƒXƒg‚ðÝ
    459  *  ’è‚·‚éD
     418 *  休止状態への遷移
     419 *
     420 *  p_tcbで指定されるタスクの状態を休止状態とする.また,タスクの起動
     421 *  時に初期化すべき変数の初期化と,タスク起動のためのコンテキストを設
     422 *  定する.
    460423 */
    461424extern void     make_dormant(TCB *p_tcb);
    462425
    463426/*
    464  *  ‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô‚Ö‚Ì‘JˆÚ
    465  *
    466  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚̏ó‘Ô‚ð‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô‚Æ‚·‚éD
    467  *  ŽÀs‚Å‚«‚éó‘Ô‚É‘JˆÚ‚µ‚½ƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`‚ª•K—v‚ȏꍇ‚ÍtrueC
    468  *  ‚»‚¤‚Å‚È‚¢ê‡‚Ífalse‚ð•Ô‚·D
     427 *  休止状態から実行できる状態への遷移
     428 *
     429 *  p_tcbで指定されるタスクの状態を休止状態から実行できる状態とする.
     430 *  実行できる状態に遷移したタスクへのディスパッチが必要な場合はtrue,
     431 *  そうでない場合はfalseを返す.
    469432 */
    470433extern bool_t   make_active(TCB *p_tcb);
    471434
    472435/*
    473  *  ƒ^ƒXƒN‚Ì—Dæ“x‚̕ύX
    474  *
    475  *  p_tcb‚ÅŽw’肳‚ê‚éƒ^ƒXƒN‚Ì—Dæ“x‚ðnewprii“à•”•\Œ»j‚ɕύX‚·‚éD‚Ü‚½C
    476  *  •K—v‚ȏꍇ‚ɂ͍ō‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ðXV‚µCƒfƒBƒXƒpƒbƒ`‹–‰Âó‘Ô‚Å
    477  *  ‚ ‚ê‚Îtrue‚ð•Ô‚·D‚»‚¤‚Å‚È‚¢ê‡‚Ífalse‚ð•Ô‚·D
     436 *  タスクの優先度の変更
     437 *
     438 *  p_tcbで指定されるタスクの優先度をnewpri(内部表現)に変更する.また,
     439 *  必要な場合には最高優先順位のタスクを更新し,ディスパッチ許可状態で
     440 *  あればtrueを返す.そうでない場合はfalseを返す.
    478441 */
    479442extern bool_t   change_priority(TCB *p_tcb, uint_t newpri);
    480443
    481444/*
    482  *  ƒŒƒfƒBƒLƒ
    483 [‚̉ñ“]
    484  *
    485  *  ƒŒƒfƒBƒLƒ
    486 [’†‚́Cpri‚ÅŽw’肳‚ê‚é—Dæ“x‚̃^ƒXƒNƒLƒ
    487 [‚ð‰ñ“]‚³‚¹‚éD
    488  *  ‚Ü‚½C•K—v‚ȏꍇ‚ɂ͍ō‚—Dæ‡ˆÊ‚̃^ƒXƒN‚ð•ÏX‚µCƒfƒBƒXƒpƒbƒ`‚ª•Û
    489  *  —¯‚³‚ê‚Ä‚¢‚È‚¯‚ê‚Îtrue‚ð•Ô‚·D‚»‚¤‚Å‚È‚¢ê‡‚Ífalse‚ð•Ô‚·D
     445 *  レディキューの回転
     446 *
     447 *  レディキュー中の,priで指定される優先度のタスクキューを回転させる.
     448 *  また,必要な場合には最高優先順位のタスクを変更し,ディスパッチが保
     449 *  留されていなければtrueを返す.そうでない場合はfalseを返す.
    490450 */
    491451extern bool_t   rotate_ready_queue(uint_t pri);
    492452
    493453/*
    494  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚̌ďo‚µ
    495  *
    496  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·DŒÄ‚яo‚·‘O‚ɁCŽÀsó‘Ԃ̃^ƒXƒN‚Ì
    497  *  •Û—¯—áŠO—vˆö‚ðƒNƒŠƒA‚µCƒ^ƒXƒN—áŠOˆ—‹ÖŽ~ó‘Ô‚É‚µCCPUƒƒbƒN‚ð‰ð
    498  *  œ‚·‚éD
    499  *
    500  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚©‚ç–ß‚é‚ƁC‚Ü‚¸CPUƒƒbƒNó‘Ô‚É–ß‚µC‚»‚ÌŠÔ
    501  *  ‚É•Û—¯—áŠO—vˆö‚ª0‚Å‚È‚­‚È‚Á‚Ä‚¢‚ê‚΁CÄ‚у^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚ð
    502  *  ŒÄ‚яo‚·D•Û—¯—áŠO—vˆö‚ª0‚̏ꍇ‚ɂ́C—áŠOˆ—‹–‰Âó‘Ô‚É‚µ‚Ċ֐”‚©
    503  *  ‚烊ƒ^[ƒ“‚·‚éD
    504  *
    505  *  ‚±‚̊֐”‚́CŽÀsó‘Ԃ̃^ƒXƒN‚ªCƒ^ƒXƒN—áŠOˆ—‹–‰Âó‘ԁienatex‚ª
    506  *  truej‚ŁC•Û—¯—áŠO—vˆö‚ª0‚Å‚È‚¢itexptn‚ª0‚Å‚È‚¢jê‡‚ɌĂяo‚·‚±
    507  *  ‚Æ‚ð‘z’肵‚Ä‚¢‚éD‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԂŌĂяo‚³‚È‚¯‚ê‚΂Ȃç
    508  *  ‚È‚¢D
     454 *  タスク例外処理ルーチンの呼出し
     455 *
     456 *  タスク例外処理ルーチンを呼び出す.呼び出す前に,実行状態のタスクの
     457 *  保留例外要因をクリアし,タスク例外処理禁止状態にし,CPUロックを解
     458 *  除する.
     459 *
     460 *  タスク例外処理ルーチンから戻ると,まずCPUロック状態に戻し,その間
     461 *  に保留例外要因が0でなくなっていれば,再びタスク例外処理ルーチンを
     462 *  呼び出す.保留例外要因が0の場合には,例外処理許可状態にして関数か
     463 *  らリターンする.
     464 *
     465 *  この関数は,実行状態のタスクが,タスク例外処理許可状態(enatexが
     466 *  true)で,保留例外要因が0でない(texptnが0でない)場合に呼び出すこ
     467 *  とを想定している.この関数は,CPUロック状態で呼び出さなければなら
     468 *  ない.
    509469 */
    510470extern void     call_texrtn(void);
    511471
    512472/*
    513  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‹N“®
    514  *
    515  *  ŽÀsó‘Ԃ̃^ƒXƒN‚ªƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‹N“®ðŒ‚ð–ž‚½‚µ‚Ä‚¢‚ê‚΁C
    516  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·DCPU—áŠOˆ—ƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·Žž
    517  *  ‚́CˆêŽž“I‚ÉCPUƒƒbƒN‚ð‰ðœ‚·‚éD
    518  *
    519  *  ‚±‚̊֐”‚́CƒfƒBƒXƒpƒbƒ`ƒƒ‚⊄ž‚݃nƒ“ƒhƒ‰^CPU—áŠOƒnƒ“ƒhƒ‰‚̏oŒû
    520  *  ˆ—‚©‚çŒÄ‚яo‚³‚ê‚邱‚Æ‚ð‘z’肵‚Ä‚¢‚éD‚±‚̊֐”‚́CCPUƒƒbƒNó‘Ô
    521  *  ‚ŌĂяo‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢D
    522  *
    523  *  ŽÀsŒø—¦‚ðã‚°‚邽‚߂ɁC‚±‚̊֐”‚ðƒ^[ƒQƒbƒgˆË‘¶•”‚Å‹Lq‚µ‚Ä‚à‚æ‚¢D
    524  *  ‚»‚̏ꍇ‚ɂ́COMIT_CALLTEX‚ðƒ}ƒNƒ’è‹`‚·‚éD
     473 *  タスク例外処理ルーチンの起動
     474 *
     475 *  実行状態のタスクがタスク例外処理ルーチンの起動条件を満たしていれば,
     476 *  タスク例外処理ルーチンを呼び出す.CPU例外処理ルーチンを呼び出す時
     477 *  は,一時的にCPUロックを解除する.
     478 *
     479 *  この関数は,ディスパッチャや割込みハンドラ/CPU例外ハンドラの出口
     480 *  処理から呼び出されることを想定している.この関数は,CPUロック状態
     481 *  で呼び出さなければならない.
     482 *
     483 *  実行効率を上げるために,この関数をターゲット依存部で記述してもよい.
     484 *  その場合には,OMIT_CALLTEXをマクロ定義する.
    525485 */
    526486extern void     calltex(void);
  • UsbWattMeter/trunk/asp_dcre/kernel/task_except.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  $Id$
     
    4642
    4743/*
    48  *              ƒ^ƒXƒN—áŠOˆ—‹@”\
     44 *              タスク例外処理機能
    4945 */
    5046
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_DEF_TEX_ENTER
     
    113109
    114110/*
    115  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì’è‹`
     111 *  タスク例外処理ルーチンの定義
    116112 */
    117113#ifdef TOPPERS_def_tex
     
    175171
    176172/*
    177  *  ƒ^ƒXƒN—áŠOˆ—‚Ì—v‹
     173 *  タスク例外処理の要求
    178174 */
    179175#ifdef TOPPERS_ras_tex
     
    215211
    216212/*
    217  *  ƒ^ƒXƒN—áŠOˆ—‚Ì—v‹i”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     213 *  タスク例外処理の要求(非タスクコンテキスト用)
    218214 */
    219215#ifdef TOPPERS_iras_tex
     
    255251
    256252/*
    257  *  ƒ^ƒXƒN—áŠOˆ—‚Ì‹ÖŽ~
     253 *  タスク例外処理の禁止
    258254 */
    259255#ifdef TOPPERS_dis_tex
     
    285281
    286282/*
    287  *  ƒ^ƒXƒN—áŠOˆ—‚Ì‹–‰Â
     283 *  タスク例外処理の許可
    288284 */
    289285#ifdef TOPPERS_ena_tex
     
    318314
    319315/*
    320  *  ƒ^ƒXƒN—áŠOˆ—‹ÖŽ~ó‘Ô‚ÌŽQÆ
     316 *  タスク例外処理禁止状態の参照
    321317 */
    322318#ifdef TOPPERS_sns_tex
     
    336332
    337333/*
    338  *  ƒ^ƒXƒN—áŠOˆ—‚̏ó‘ÔŽQÆ
     334 *  タスク例外処理の状態参照
    339335 */
    340336#ifdef TOPPERS_ref_tex
  • UsbWattMeter/trunk/asp_dcre/kernel/task_manage.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒ^ƒXƒNŠÇ—‹@”\
     44 *              タスク管理機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     53 *  トレースログマクロのデフォルト定義
    5854 */
    5955#ifndef LOG_ACRE_TSK_ENTER
     
    138134
    139135/*
    140  *  ƒ^ƒXƒN‚̐¶¬
     136 *  タスクの生成
    141137 */
    142138#ifdef TOPPERS_acre_tsk
    143139
    144140#ifndef TARGET_MIN_STKSZ
    145 #define TARGET_MIN_STKSZ        1U              /* –¢’è‹`‚̏ꍇ‚Í0‚Å‚È‚¢‚±‚Æ‚ðƒ`ƒFƒbƒN */
     141#define TARGET_MIN_STKSZ        1U              /* 未定義の場合は0でないことをチェック */
    146142#endif /* TARGET_MIN_STKSZ */
    147143
     
    215211
    216212/*
    217  *  ƒ^ƒXƒN‚̍폜
     213 *  タスクの削除
    218214 */
    219215#ifdef TOPPERS_del_tsk
     
    261257
    262258/*
    263  *  ƒ^ƒXƒN‚Ì‹N“®
     259 *  タスクの起動
    264260 */
    265261#ifdef TOPPERS_act_tsk
     
    303299
    304300/*
    305  *  ƒ^ƒXƒN‚Ì‹N“®i”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     301 *  タスクの起動(非タスクコンテキスト用)
    306302 */
    307303#ifdef TOPPERS_iact_tsk
     
    345341
    346342/*
    347  *  ƒ^ƒXƒN‹N“®—v‹‚̃Lƒƒƒ“ƒZƒ‹
     343 *  タスク起動要求のキャンセル
    348344 */
    349345#ifdef TOPPERS_can_act
     
    378374
    379375/*
    380  *  Ž©ƒ^ƒXƒN‚̏I—¹
     376 *  自タスクの終了
    381377 */
    382378#ifdef TOPPERS_ext_tsk
     
    392388        if (t_sense_lock()) {
    393389                /*
    394                  *  CPUƒƒbƒNó‘Ô‚Åext_tsk‚ªŒÄ‚΂ꂽê‡‚́CCPUƒƒbƒN‚ð‰ðœ‚µ
    395                  *  ‚Ä‚©‚çƒ^ƒXƒN‚ðI—¹‚·‚éDŽÀ‘•ã‚́CƒT[ƒrƒXƒR[ƒ‹“à‚Å‚ÌCPU
    396                  *  ƒƒbƒN‚ðÈ—ª‚·‚ê‚΂悢‚¾‚¯D
     390                 *  CPUロック状態でext_tskが呼ばれた場合は,CPUロックを解除し
     391                 *  てからタスクを終了する.実装上は,サービスコール内でのCPU
     392                 *  ロックを省略すればよいだけ.
    397393                 */
    398394        }
     
    402398        if (disdsp) {
    403399                /*
    404                  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚Åext_tsk‚ªŒÄ‚΂ꂽê‡‚́CƒfƒBƒXƒpƒb
    405                  *  ƒ`‹–‰Âó‘Ô‚É‚µ‚Ä‚©‚çƒ^ƒXƒN‚ðI—¹‚·‚éD
     400                 *  ディスパッチ禁止状態でext_tskが呼ばれた場合は,ディスパッ
     401                 *  チ許可状態にしてからタスクを終了する.
    406402                 */
    407403                disdsp = false;
     
    409405        if (!ipmflg) {
    410406                /*
    411                  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒNiIPMj‚ªTIPM_ENAALLˆÈŠO‚̏ó‘Ô‚Åext_tsk
    412                  *  ‚ªŒÄ‚΂ꂽê‡‚́CIPM‚ðTIPM_ENAALL‚É‚µ‚Ä‚©‚çƒ^ƒXƒN‚ðI—¹‚·
    413                  *  ‚éD
     407                 *  割込み優先度マスク(IPM)がTIPM_ENAALL以外の状態でext_tsk
     408                 *  が呼ばれた場合は,IPMをTIPM_ENAALLにしてからタスクを終了す
     409                 *  る.
    414410                 */
    415411                t_set_ipm(TIPM_ENAALL);
     
    435431
    436432/*
    437  *  ƒ^ƒXƒN‚Ì‹­§I—¹
     433 *  タスクの強制終了
    438434 */
    439435#ifdef TOPPERS_ter_tsk
     
    461457                if (TSTAT_RUNNABLE(p_tcb->tstat)) {
    462458                        /*
    463                          *  p_tcb‚ÍŽ©ƒ^ƒXƒN‚Å‚È‚¢‚½‚߁CiƒVƒ“ƒOƒ‹ƒvƒƒZƒbƒT‚ł́jŽÀ
    464                          *  só‘Ô‚Å‚È‚­Cmake_non_runnable(p_tcb)‚Ń^ƒXƒNƒfƒBƒXƒpƒb
    465                          *  ƒ`‚ª•K—v‚ɂȂ邱‚Æ‚Í‚È‚¢D
     459                         *  p_tcbは自タスクでないため,(シングルプロセッサでは)実
     460                         *  行状態でなく,make_non_runnable(p_tcb)でタスクディスパッ
     461                         *  チが必要になることはない.
    466462                         */
    467463                        (void) make_non_runnable(p_tcb);
     
    490486
    491487/*
    492  *  ƒ^ƒXƒN‚̃x[ƒX—Dæ“x‚̕ύX
     488 *  タスクのベース優先度の変更
    493489 */
    494490#ifdef TOPPERS_chg_pri
     
    532528
    533529/*
    534  *  ƒ^ƒXƒN—Dæ“x‚ÌŽQÆ
     530 *  タスク優先度の参照
    535531 */
    536532#ifdef TOPPERS_get_pri
     
    568564
    569565/*
    570  *  Ž©ƒ^ƒXƒN‚ÌŠg’£î•ñ‚ÌŽQÆ
     566 *  自タスクの拡張情報の参照
    571567 */
    572568#ifdef TOPPERS_get_inf
  • UsbWattMeter/trunk/asp_dcre/kernel/task_refer.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
    35  *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
     31 *
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ƒ^ƒXƒN‚̏ó‘ÔŽQÆ‹@”\
     42 *              タスクの状態参照機能
    4743 */
    4844
     
    6056
    6157/*
    62  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     58 *  トレースログマクロのデフォルト定義
    6359 */
    6460#ifndef LOG_REF_TSK_ENTER
     
    7167
    7268/*
    73  *  ƒ^ƒXƒN‚̏ó‘ÔŽQÆ
     69 *  タスクの状態参照
    7470 */
    7571#ifdef TOPPERS_ref_tsk
     
    9591                if (TSTAT_DORMANT(tstat)) {
    9692                        /*
    97                          *  ‘Ώۃ^ƒXƒN‚ª‹xŽ~ó‘Ԃ̏ꍇ
     93                         *  対象タスクが休止状態の場合
    9894                         */
    9995                        pk_rtsk->tskstat = TTS_DMT;
     
    10197                else {
    10298                        /*
    103                          *  ƒ^ƒXƒNó‘Ô‚ÌŽæo‚µ
     99                         *  タスク状態の取出し
    104100                         */
    105101                        if (TSTAT_SUSPENDED(tstat)) {
     
    122118
    123119                        /*
    124                          *  Œ»Ý—Dæ“x‚ƃx[ƒX—Dæ“x‚ÌŽæo‚µ
     120                         *  現在優先度とベース優先度の取出し
    125121                         */
    126122                        pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
     
    129125                        if (TSTAT_WAITING(tstat)) {
    130126                                /*
    131                                  *  ‘Ò‚¿—vˆö‚Æ‘Ò‚¿‘Ώۂ̃IƒuƒWƒFƒNƒg‚ÌID‚ÌŽæo‚µ
     127                                 *  待ち要因と待ち対象のオブジェクトのIDの取出し
    132128                                 */
    133129                                switch (tstat & TS_WAIT_MASK) {
     
    181177
    182178                                /*
    183                                  *  ƒ^ƒCƒ€ƒAƒEƒg‚·‚é‚Ü‚Å‚ÌŽžŠÔ‚ÌŽæo‚µ
     179                                 *  タイムアウトするまでの時間の取出し
    184180                                 */
    185181                                if (p_tcb->p_winfo->p_tmevtb != NULL) {
     
    193189
    194190                        /*
    195                          *  ‹N°—v‹ƒLƒ
    196 [ƒCƒ“ƒO”‚ÌŽæo‚µ
     191                         *  起床要求キューイング数の取出し
    197192                         */
    198193                        pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
     
    200195
    201196                /*
    202                  *  ‹N“®—v‹ƒLƒ
    203 [ƒCƒ“ƒO”‚ÌŽæo‚µ
     197                 *  起動要求キューイング数の取出し
    204198                 */
    205199                pk_rtsk->actcnt = p_tcb->actque ? 1U : 0U;
  • UsbWattMeter/trunk/asp_dcre/kernel/task_sync.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒ^ƒXƒN•t‘®“¯Šú‹@”\
     44 *              タスク付属同期機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     53 *  トレースログマクロのデフォルト定義
    5854 */
    5955#ifndef LOG_SLP_TSK_ENTER
     
    138134
    139135/*
    140  *  ‹N°‘Ò‚¿
     136 *  起床待ち
    141137 */
    142138#ifdef TOPPERS_slp_tsk
     
    173169
    174170/*
    175  *  ‹N°‘Ò‚¿iƒ^ƒCƒ€ƒAƒEƒg‚ ‚èj
     171 *  起床待ち(タイムアウトあり)
    176172 */
    177173#ifdef TOPPERS_tslp_tsk
     
    213209
    214210/*
    215  *  ƒ^ƒXƒN‚Ì‹N°
     211 *  タスクの起床
    216212 */
    217213#ifdef TOPPERS_wup_tsk
     
    258254
    259255/*
    260  *  ƒ^ƒXƒN‚Ì‹N°i”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     256 *  タスクの起床(非タスクコンテキスト用)
    261257 */
    262258#ifdef TOPPERS_iwup_tsk
     
    303299
    304300/*
    305  *  ƒ^ƒXƒN‹N°—v‹‚̃Lƒƒƒ“ƒZƒ‹
     301 *  タスク起床要求のキャンセル
    306302 */
    307303#ifdef TOPPERS_can_wup
     
    339335
    340336/*
    341  *  ‘Ò‚¿ó‘Ô‚Ì‹­§‰ðœ
     337 *  待ち状態の強制解除
    342338 */
    343339#ifdef TOPPERS_rel_wai
     
    377373
    378374/*
    379  *  ‘Ò‚¿ó‘Ô‚Ì‹­§‰ðœi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     375 *  待ち状態の強制解除(非タスクコンテキスト用)
    380376 */
    381377#ifdef TOPPERS_irel_wai
     
    415411
    416412/*
    417  *  ‹­§‘Ò‚¿ó‘Ԃւ̈ڍs
     413 *  強制待ち状態への移行
    418414 */
    419415#ifdef TOPPERS_sus_tsk
     
    442438        else if (TSTAT_RUNNABLE(p_tcb->tstat)) {
    443439                /*
    444                  *  ŽÀs‚Å‚«‚éó‘Ô‚©‚ç‹­§‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚ
     440                 *  実行できる状態から強制待ち状態への遷移
    445441                 */
    446442                p_tcb->tstat = TS_SUSPENDED;
     
    456452        else {
    457453                /*
    458                  *  ‘Ò‚¿ó‘Ô‚©‚ç“ñd‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚ
     454                 *  待ち状態から二重待ち状態への遷移
    459455                 */
    460456                p_tcb->tstat |= TS_SUSPENDED;
     
    472468
    473469/*
    474  *  ‹­§‘Ò‚¿ó‘Ô‚©‚ç‚̍ĊJ
     470 *  強制待ち状態からの再開
    475471 */
    476472#ifdef TOPPERS_rsm_tsk
     
    496492        else if (!TSTAT_WAITING(p_tcb->tstat)) {
    497493                /*
    498                  *  ‹­§‘Ò‚¿ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô‚Ö‚Ì‘JˆÚ
     494                 *  強制待ち状態から実行できる状態への遷移
    499495                 */
    500496                p_tcb->tstat = TS_RUNNABLE;
     
    507503        else {
    508504                /*
    509                  *  “ñd‘Ò‚¿ó‘Ô‚©‚ç‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚ
     505                 *  二重待ち状態から待ち状態への遷移
    510506                 */
    511507                p_tcb->tstat &= ~TS_SUSPENDED;
     
    523519
    524520/*
    525  *  Ž©ƒ^ƒXƒN‚Ì’x‰„
     521 *  自タスクの遅延
    526522 */
    527523#ifdef TOPPERS_dly_tsk
  • UsbWattMeter/trunk/asp_dcre/kernel/time_event.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  $Id$
     
    4642
    4743/*
    48  *              ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—ƒ‚ƒWƒ
    49 [ƒ‹
     44 *              タイムイベント管理モジュール
    5045 */
    5146
     
    5449
    5550/*
    56  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‘€ìƒ}ƒNƒ
    57  */
    58 #define PARENT(index)           ((index) >> 1)          /* eƒm[ƒh‚ð‹‚ß‚é */
    59 #define LCHILD(index)           ((index) << 1)          /* ¶‚ÌŽqƒm[ƒh‚ð‹‚ß‚é */
     51 *  タイムイベントヒープ操作マクロ
     52 */
     53#define PARENT(index)           ((index) >> 1)          /* 親ノードを求める */
     54#define LCHILD(index)           ((index) << 1)          /* 左の子ノードを求める */
    6055#define TMEVT_NODE(index)       (tmevt_heap[(index) - 1])
    6156
    6257/*
    63  *  ƒCƒxƒ“ƒg”­¶Žž”äŠrƒ}ƒNƒ
    64  *
    65  *  ƒCƒxƒ“ƒg”­¶Žž‚́Cmin_time‚©‚ç‚Ì‘Š‘Î’l‚Å”äŠr‚·‚éD‚·‚È‚í‚¿C
    66  *  min_time‚ðÅ¬’liÅ‚à‹ß‚¢ŽžjCmit_time-1‚ªÅ‘å’liÅ‚à‰“‚¢Žžj
    67  *  ‚Æ‚Ý‚È‚µ‚Ä”äŠr‚·‚éD
     58 *  イベント発生時刻比較マクロ
     59 *
     60 *  イベント発生時刻は,min_timeからの相対値で比較する.すなわち,
     61 *  min_timeを最小値(最も近い時刻),mit_time-1が最大値(最も遠い時刻)
     62 *  とみなして比較する.
    6863 */
    6964#define EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time))
     
    7368
    7469/*
    75  *  Œ»Ý‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
    76  *
    77  *  Œµ–§‚ɂ́C‘O‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€ŽžD
     70 *  現在のシステム時刻(単位: 1ミリ秒)
     71 *
     72 *  厳密には,前のタイムティックのシステム時刻.
    7873 */
    7974EVTTIM  current_time;
    8075
    8176/*
    82  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv’†‚Å—LŒø‚ȍŏ¬‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     77 *  タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒)
    8378 */
    8479EVTTIM  min_time;
    8580
    8681/*
    87  *  ŽŸ‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     82 *  次のタイムティックのシステム時刻(単位: 1ミリ秒)
    8883 */
    8984EVTTIM  next_time;
    9085
    9186/*
    92  *  ƒVƒXƒeƒ€ŽžÏŽZ—p•Ï”i’PˆÊ: 1/TIC_DENOƒ~ƒŠ•bj
     87 *  システム時刻積算用変数(単位: 1/TIC_DENOミリ秒)
    9388 */
    9489#if TIC_DENO != 1U
     
    9792
    9893/*
    99  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚̍Ōã‚ÌŽg—p—̈æ‚̃Cƒ“ƒfƒbƒNƒX
     94 *  タイムイベントヒープの最後の使用領域のインデックス
    10095 */
    10196uint_t  last_index;
    10297
    10398/*
    104  *  ƒ^ƒCƒ}ƒ‚ƒWƒ
    105 [ƒ‹‚̏‰Šú‰»
     99 *  タイマモジュールの初期化
    106100 */
    107101void
     
    120114
    121115/*
    122  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ì‘}“üˆÊ’u‚ðãŒü‚«‚É’Tõ
    123  *
    124  *  Žžtime‚É”­¶‚·‚éƒ^ƒCƒ€ƒCƒxƒ“ƒg‚ð‘}“ü‚·‚éƒm[ƒh‚ð‹ó‚¯‚邽‚߂ɁC
    125  *  ƒq[ƒv‚̏ã‚ÉŒü‚©‚Á‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹‚éDˆÚ“®‘O‚Ì‹óƒm[ƒh‚̈ʒu‚ð
    126  *  index‚É“n‚·‚ƁCˆÚ“®Œã‚Ì‹óƒm[ƒh‚̈ʒui‚·‚È‚í‚¿‘}“üˆÊ’uj‚ð•Ô‚·D
     116 *  タイムイベントの挿入位置を上向きに探索
     117 *
     118 *  時刻timeに発生するタイムイベントを挿入するノードを空けるために,
     119 *  ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を
     120 *  indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    127121 */
    128122#ifdef TOPPERS_tmeup
     
    135129        while (index > 1) {
    136130                /*
    137                  *  eƒm[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚Ì•û‚ª‘‚¢i‚Ü‚½‚Í“¯‚¶j‚È‚ç‚΁C
    138                  *  index‚ª‘}“üˆÊ’u‚Ȃ̂Ń‹[ƒv‚𔲂¯‚éD
     131                 *  親ノードのイベント発生時刻の方が早い(または同じ)ならば,
     132                 *  indexが挿入位置なのでループを抜ける.
    139133                 */
    140134                parent = PARENT(index);
     
    144138
    145139                /*
    146                  *  eƒm[ƒh‚ðindex‚̈ʒu‚Ɉړ®‚³‚¹‚éD
     140                 *  親ノードをindexの位置に移動させる.
    147141                 */
    148142                TMEVT_NODE(index) = TMEVT_NODE(parent);
     
    150144
    151145                /*
    152                  *  index‚ðeƒm[ƒh‚̈ʒu‚ɍXVD
     146                 *  indexを親ノードの位置に更新.
    153147                 */
    154148                index = parent;
     
    160154
    161155/*
    162  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ì‘}“üˆÊ’u‚ð‰ºŒü‚«‚É’Tõ
    163  *
    164  *  Žžtime‚É”­¶‚·‚éƒ^ƒCƒ€ƒCƒxƒ“ƒg‚ð‘}“ü‚·‚éƒm[ƒh‚ð‹ó‚¯‚邽‚߂ɁC
    165  *  ƒq[ƒv‚̉º‚ÉŒü‚©‚Á‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹‚éDˆÚ“®‘O‚Ì‹óƒm[ƒh‚̈ʒu‚ð
    166  *  index‚É“n‚·‚ƁCˆÚ“®Œã‚Ì‹óƒm[ƒh‚̈ʒui‚·‚È‚í‚¿‘}“üˆÊ’uj‚ð•Ô‚·D
     156 *  タイムイベントの挿入位置を下向きに探索
     157 *
     158 *  時刻timeに発生するタイムイベントを挿入するノードを空けるために,
     159 *  ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を
     160 *  indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    167161 */
    168162#ifdef TOPPERS_tmedown
     
    175169        while ((child = LCHILD(index)) <= last_index) {
    176170                /*
    177                  *  ¶‰E‚ÌŽqƒm[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚ð”äŠr‚µC‘‚¢•û‚ÌŽqƒm[ƒh
    178                  *  ‚̈ʒu‚ðchild‚ɐݒ肷‚éDˆÈ‰º‚ÌŽqƒm[ƒh‚́C‚±‚±‚Å‘I‚΂ꂽ•û
    179                  *  ‚ÌŽqƒm[ƒh‚Ì‚±‚ƁD
     171                 *  左右の子ノードのイベント発生時刻を比較し,早い方の子ノード
     172                 *  の位置をchildに設定する.以下の子ノードは,ここで選ばれた方
     173                 *  の子ノードのこと.
    180174                 */
    181175                if (child + 1 <= last_index
     
    186180
    187181                /*
    188                  *  Žqƒm[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚Ì•û‚ª’x‚¢i‚Ü‚½‚Í“¯‚¶j‚È‚ç‚΁C
    189                  *  index‚ª‘}“üˆÊ’u‚Ȃ̂Ń‹[ƒv‚𔲂¯‚éD
     182                 *  子ノードのイベント発生時刻の方が遅い(または同じ)ならば,
     183                 *  indexが挿入位置なのでループを抜ける.
    190184                 */
    191185                if (EVTTIM_LE(time, TMEVT_NODE(child).time)) {
     
    194188
    195189                /*
    196                  *  Žqƒm[ƒh‚ðindex‚̈ʒu‚Ɉړ®‚³‚¹‚éD
     190                 *  子ノードをindexの位置に移動させる.
    197191                 */
    198192                TMEVT_NODE(index) = TMEVT_NODE(child);
     
    200194
    201195                /*
    202                  *  index‚ðŽqƒm[ƒh‚̈ʒu‚ɍXVD
     196                 *  indexを子ノードの位置に更新.
    203197                 */
    204198                index = child;
     
    210204
    211205/*
    212  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚Ö‚Ì“o˜^
    213  *
    214  *  p_tmevtb‚ÅŽw’肵‚½ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚ðCtime‚ÅŽw’肵‚½ŽžŠÔ‚ªŒo
    215  *  ‰ßŒã‚ɃCƒxƒ“ƒg‚ª”­¶‚·‚é‚悤‚ɁCƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚É“o˜^‚·‚éD
     206 *  タイムイベントヒープへの登録
     207 *
     208 *  p_tmevtbで指定したタイムイベントブロックを,timeで指定した時間が経
     209 *  過後にイベントが発生するように,タイムイベントヒープに登録する.
    216210 */
    217211#ifdef TOPPERS_tmeins
     
    223217
    224218        /*
    225          *  last_index‚ðƒCƒ“ƒNƒŠƒƒ“ƒg‚µC‚»‚±‚©‚çã‚É‘}“üˆÊ’u‚ð’T‚·D
     219         *  last_indexをインクリメントし,そこから上に挿入位置を探す.
    226220         */
    227221        index = tmevt_up(++last_index, time);
    228222
    229223        /*
    230          *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚ðindex‚̈ʒu‚É‘}“ü‚·‚éD
     224         *  タイムイベントをindexの位置に挿入する.
    231225         */
    232226        TMEVT_NODE(index).time = time;
     
    238232
    239233/*
    240  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚©‚ç‚̍폜
     234 *  タイムイベントヒープからの削除
    241235 */
    242236#ifdef TOPPERS_tmedel
     
    250244
    251245        /*
    252          *  íœ‚É‚æ‚èƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚ª‹ó‚É‚È‚éê‡‚͉½‚à‚µ‚È‚¢D
     246         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    253247         */
    254248        if (--last_index == 0) {
     
    257251
    258252        /*
    259          *  íœ‚µ‚½ƒm[ƒh‚̈ʒu‚ɍŌã‚̃m[ƒhilast_index+1‚̈ʒu‚̃m[ƒhj
    260          *  ‚ð‘}“ü‚µC‚»‚ê‚ð“KØ‚Ȉʒu‚ÖˆÚ“®‚³‚¹‚éDŽÀÛ‚ɂ́CÅŒã‚̃m[ƒh
    261          *  ‚ðŽÀÛ‚É‘}“ü‚·‚é‚Ì‚Å‚Í‚È‚­Cíœ‚µ‚½ƒm[ƒh‚̈ʒu‚ª‹óƒm[ƒh‚É‚È
    262          *  ‚é‚̂ŁCÅŒã‚̃m[ƒh‚ð‘}“ü‚·‚ׂ«ˆÊ’u‚ÖŒü‚¯‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹
    263          *  ‚éD
    264          *  ÅŒã‚̃m[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚ªCíœ‚µ‚½ƒm[ƒh‚̐eƒm[ƒh‚̃C
    265          *  ƒxƒ“ƒg”­¶Žž‚æ‚è‘O‚̏ꍇ‚ɂ́Cã‚ÉŒü‚©‚Á‚Ä‘}“üˆÊ’u‚ð’T‚·D‚»
    266          *  ‚¤‚Å‚È‚¢ê‡‚ɂ́C‰º‚ÉŒü‚©‚Á‚Ä’T‚·D
     253         *  削除したノードの位置に最後のノード(last_index+1の位置のノード)
     254         *  を挿入し,それを適切な位置へ移動させる.実際には,最後のノード
     255         *  を実際に挿入するのではなく,削除したノードの位置が空ノードにな
     256         *  るので,最後のノードを挿入すべき位置へ向けて空ノードを移動させ
     257         *  る.
     258         *  最後のノードのイベント発生時刻が,削除したノードの親ノードのイ
     259         *  ベント発生時刻より前の場合には,上に向かって挿入位置を探す.そ
     260         *  うでない場合には,下に向かって探す.
    267261         */
    268262        if (index > 1 && EVTTIM_LT(event_time,
    269263                                                                TMEVT_NODE(parent = PARENT(index)).time)) {
    270264                /*
    271                  *  eƒm[ƒh‚ðindex‚̈ʒu‚Ɉړ®‚³‚¹‚éD
     265                 *  親ノードをindexの位置に移動させる.
    272266                 */
    273267                TMEVT_NODE(index) = TMEVT_NODE(parent);
     
    275269
    276270                /*
    277                  *  íœ‚µ‚½ƒm[ƒh‚̐eƒm[ƒh‚©‚çã‚ÉŒü‚©‚Á‚Ä‘}“üˆÊ’u‚ð’T‚·D
     271                 *  削除したノードの親ノードから上に向かって挿入位置を探す.
    278272                 */
    279273                index = tmevt_up(parent, event_time);
     
    281275        else {
    282276                /*
    283                  *  íœ‚µ‚½ƒm[ƒh‚©‚牺‚ÉŒü‚©‚Á‚Ä‘}“üˆÊ’u‚ð’T‚·D
     277                 *  削除したノードから下に向かって挿入位置を探す.
    284278                 */
    285279                index = tmevt_down(index, event_time);
     
    287281
    288282        /*
    289          *  ÅŒã‚̃m[ƒh‚ðindex‚̈ʒu‚É‘}“ü‚·‚éD
     283         *  最後のノードをindexの位置に挿入する.
    290284         */
    291285        TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
     
    296290
    297291/*
    298  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚̐擪‚̃m[ƒh‚̍폜
     292 *  タイムイベントヒープの先頭のノードの削除
    299293 */
    300294Inline void
     
    305299
    306300        /*
    307          *  íœ‚É‚æ‚èƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚ª‹ó‚É‚È‚éê‡‚͉½‚à‚µ‚È‚¢D
     301         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    308302         */
    309303        if (--last_index == 0) {
     
    312306
    313307        /*
    314          *  ƒ‹[ƒgƒm[ƒh‚ɍŌã‚̃m[ƒhilast_index + 1 ‚̈ʒu‚̃m[ƒhj‚ð
    315          *  ‘}“ü‚µC‚»‚ê‚ð“KØ‚Ȉʒu‚ÖˆÚ“®‚³‚¹‚éDŽÀÛ‚ɂ́CÅŒã‚̃m[ƒh‚ð
    316          *  ŽÀÛ‚É‘}“ü‚·‚é‚Ì‚Å‚Í‚È‚­Cƒ‹[ƒgƒm[ƒh‚ª‹óƒm[ƒh‚É‚È‚é‚̂ŁCÅ
    317          *  Œã‚̃m[ƒh‚ð‘}“ü‚·‚ׂ«ˆÊ’u‚ÖŒü‚¯‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹‚éD
     308         *  ルートノードに最後のノード(last_index + 1 の位置のノード)を
     309         *  挿入し,それを適切な位置へ移動させる.実際には,最後のノードを
     310         *  実際に挿入するのではなく,ルートノードが空ノードになるので,最
     311         *  後のノードを挿入すべき位置へ向けて空ノードを移動させる.
    318312         */
    319313        index = tmevt_down(1, event_time);
    320314
    321315        /*
    322          *  ÅŒã‚̃m[ƒh‚ðindex‚̈ʒu‚É‘}“ü‚·‚éD
     316         *  最後のノードをindexの位置に挿入する.
    323317         */
    324318        TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
     
    327321
    328322/*
    329  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ü‚Å‚ÌŽc‚莞ŠÔ‚ÌŒvŽZ
     323 *  タイムイベントまでの残り時間の計算
    330324 */
    331325#ifdef TOPPERS_tmeltim
     
    339333        if (EVTTIM_LE(time, next_time)) {
    340334                /*
    341                  *  ŽŸ‚̃^ƒCƒ€ƒeƒBƒbƒN‚ŏˆ—‚³‚ê‚éê‡‚É‚Í0‚ð•Ô‚·D
     335                 *  次のタイムティックで処理される場合には0を返す.
    342336                 */
    343337                return(0U);
     
    351345
    352346/*
    353  *  ƒ^ƒCƒ€ƒeƒBƒbƒN‚Ì‹Ÿ‹‹
     347 *  タイムティックの供給
    354348 */
    355349#ifdef TOPPERS_sigtim
     
    366360
    367361        /*
    368          *  current_time‚ðXV‚·‚éD
     362         *  current_timeを更新する.
    369363         */
    370364        current_time = next_time;
    371365
    372366        /*
    373          *  next_timeCnext_subtime‚ðXV‚·‚éD
     367         *  next_time,next_subtimeを更新する.
    374368         */
    375369#if TIC_DENO == 1U
     
    385379
    386380        /*
    387          *  current_time‚æ‚èƒCƒxƒ“ƒg”­¶Žž‚Ì‘‚¢i‚Ü‚½‚Í“¯‚¶jƒ^ƒCƒ€ƒCƒx
    388          *  ƒ“ƒg‚ðCƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚©‚çíœ‚µCƒR[ƒ‹ƒoƒbƒNŠÖ”‚ðŒÄ‚Ñ
    389          *  o‚·D
     381         *  current_timeよりイベント発生時刻の早い(または同じ)タイムイベ
     382         *  ントを,タイムイベントヒープから削除し,コールバック関数を呼び
     383         *  出す.
    390384         */
    391385        while (last_index > 0 && EVTTIM_LE(TMEVT_NODE(1).time, current_time)) {
     
    396390
    397391        /*
    398          *  min_time‚ðXV‚·‚éD
     392         *  min_timeを更新する.
    399393         */
    400394        min_time = current_time;
  • UsbWattMeter/trunk/asp_dcre/kernel/time_event.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  *              ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—ƒ‚ƒWƒ
    49 [ƒ‹
     44 *              タイムイベント管理モジュール
    5045 */
    5146
     
    5449
    5550/*
    56  *  ƒCƒxƒ“ƒg”­¶Žž‚̃f[ƒ^Œ^‚Ì’è‹`
    57  *
    58  *  EVTTIM‚́CRELTIM‚Æ‚µ‚ÄŽw’è‚Å‚«‚é”͈͂æ‚è‚àL‚¢”͈͂ð•\Œ»‚Å‚«‚é•K—v
    59  *  ‚ª‚ ‚éDƒÊITRON4.0Žd—l‚̃Xƒ^ƒ“ƒ_[ƒhƒvƒƒtƒ@ƒCƒ‹‚ł́CRELTIM‚ª16ƒrƒb
    60  *  ƒgˆÈã‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢‚½‚߁CEVTTIM‚Í17ƒrƒbƒgˆÈã‚Å‚ ‚邱‚Æ‚ª•K—v
    61  *  ‚Å‚ ‚éD‚»‚Ì‚½‚߁C16ƒrƒbƒg‚É‚È‚éê‡‚ª‚ ‚éuint_t‚Å‚Í‚È‚­Culong_t‚É
    62  *  ’è‹`‚µ‚Ä‚¢‚éD
     51 *  イベント発生時刻のデータ型の定義
     52 *
     53 *  EVTTIMは,RELTIMとして指定できる範囲よりも広い範囲を表現できる必要
     54 *  がある.μITRON4.0仕様のスタンダードプロファイルでは,RELTIMが16ビッ
     55 *  ト以上でなければならないため,EVTTIMは17ビット以上であることが必要
     56 *  である.そのため,16ビットになる場合があるuint_tではなく,ulong_tに
     57 *  定義している.
    6358 */
    6459typedef ulong_t EVTTIM;
    6560
    6661/*
    67  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚̃f[ƒ^Œ^‚Ì’è‹`
    68  */
    69 typedef void    (*CBACK)(void *);       /* ƒR[ƒ‹ƒoƒbƒNŠÖ”‚ÌŒ^ */
     62 *  タイムイベントブロックのデータ型の定義
     63 */
     64typedef void    (*CBACK)(void *);       /* コールバック関数の型 */
    7065
    7166typedef struct time_event_block {
    72         uint_t  index;                  /* ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv’†‚ł̈ʒu */
    73         CBACK   callback;               /* ƒR[ƒ‹ƒoƒbƒNŠÖ” */
    74         void    *arg;                   /* ƒR[ƒ‹ƒoƒbƒNŠÖ”‚Ö“n‚·ˆø” */
     67        uint_t  index;                  /* タイムイベントヒープ中での位置 */
     68        CBACK   callback;               /* コールバック関数 */
     69        void    *arg;                   /* コールバック関数へ渡す引数 */
    7570} TMEVTB;
    7671
    7772/*
    78  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv’†‚̃m[ƒh‚̃f[ƒ^Œ^‚Ì’è‹`
     73 *  タイムイベントヒープ中のノードのデータ型の定義
    7974 */
    8075typedef struct time_event_node {
    81         EVTTIM  time;                   /* ƒCƒxƒ“ƒg”­¶Žž */
    82         TMEVTB  *p_tmevtb;              /* ‘Ήž‚·‚éƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN */
     76        EVTTIM  time;                   /* イベント発生時刻 */
     77        TMEVTB  *p_tmevtb;              /* 対応するタイムイベントブロック */
    8378} TMEVTN;
    8479
    8580/*
    86  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒvikernel_cfg.cj
     81 *  タイムイベントヒープ(kernel_cfg.c)
    8782 */
    8883extern TMEVTN   tmevt_heap[];
    8984
    9085/*
    91  *  Œ»Ý‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
    92  *
    93  *  ƒVƒXƒeƒ€‹N“®Žž‚É0‚ɏ‰Šú‰»‚³‚êCˆÈ~Cƒ^ƒCƒ€ƒeƒBƒbƒN‚ª‹Ÿ‹‹‚³‚ê‚é“x‚É
    94  *  ’P’²‚É‘‰Á‚·‚éD
     86 *  現在のシステム時刻(単位: 1ミリ秒)
     87 *
     88 *  システム起動時に0に初期化され,以降,タイムティックが供給される度に
     89 *  単調に増加する.
    9590 */
    9691extern EVTTIM   current_time;
    9792
    9893/*
    99  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv’†‚Å—LŒø‚ȍŏ¬‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     94 *  タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒)
    10095 */
    10196extern EVTTIM   min_time;
    10297
    10398/*
    104  *  ŽŸ‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     99 *  次のタイムティックのシステム時刻(単位: 1ミリ秒)
    105100 */
    106101extern EVTTIM   next_time;
    107102
    108103/*
    109  *  ƒVƒXƒeƒ€ŽžÏŽZ—p•Ï”i’PˆÊ: 1/TIC_DENOƒ~ƒŠ•bj
    110  *
    111  *  ŽŸ‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€Žž‚̉ºˆÊŒ
    112 ‚ðŽ¦‚·iãˆÊŒ
    113 ‚Ínext_timejD
    114  *  TIC_DENO‚ª1‚ÌŽž‚́C‰ºˆÊŒ
    115 ‚͏í‚É0‚Å‚ ‚邽‚߁C‚±‚̕ϐ”‚Í•K—v‚È‚¢D
     104 *  システム時刻積算用変数(単位: 1/TIC_DENOミリ秒)
     105 *
     106 *  次のタイムティックのシステム時刻の下位桁を示す(上位桁はnext_time).
     107 *  TIC_DENOが1の時は,下位桁は常に0であるため,この変数は必要ない.
    116108 */
    117109#if TIC_DENO != 1U
     
    120112
    121113/*
    122  *  ‘Š‘ÎŽžŠÔ‚̊Žži’PˆÊ: 1ƒ~ƒŠ•bj
    123  *
    124  *  ŽŸ‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€Žž‚ðØ‚èã‚°‚½ŽžDTIC_DENO‚ª1‚ÌŽž
    125  *  ‚́Cnext_time‚Ɉê’v‚·‚éD
     114 *  相対時間の基準時刻(単位: 1ミリ秒)
     115 *
     116 *  次のタイムティックのシステム時刻を切り上げた時刻.TIC_DENOが1の時
     117 *  は,next_timeに一致する.
    126118 */
    127119#if TIC_DENO == 1U
     
    132124
    133125/*
    134  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚̍Ōã‚ÌŽg—p—̈æ‚̃Cƒ“ƒfƒbƒNƒX
    135  *
    136  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚É“o˜^‚³‚ê‚Ä‚¢‚éƒ^ƒCƒ€ƒCƒxƒ“ƒg‚̐”‚Ɉê’v‚·‚éD
     126 *  タイムイベントヒープの最後の使用領域のインデックス
     127 *
     128 *  タイムイベントヒープに登録されているタイムイベントの数に一致する.
    137129 */
    138130extern uint_t   last_index;
    139131
    140132/*
    141  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—ƒ‚ƒWƒ
    142 [ƒ‹‚̏‰Šú‰»
     133 *  タイムイベント管理モジュールの初期化
    143134 */
    144135extern void     initialize_tmevt(void);
    145136
    146137/*
    147  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ì‘}“üˆÊ’u‚Ì’Tõ
     138 *  タイムイベントの挿入位置の探索
    148139 */
    149140extern uint_t   tmevt_up(uint_t index, EVTTIM time);
     
    151142
    152143/*
    153  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚Ö‚Ì“o˜^‚ƍ폜
     144 *  タイムイベントヒープへの登録と削除
    154145 */
    155146extern void     tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time);
     
    157148
    158149/*
    159  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚Ì“o˜^i‘Š‘ÎŽžŠÔŽw’èj
    160  *
    161  *  time‚ÅŽw’肵‚½‘Š‘ÎŽžŠÔ‚ªŒo‰ß‚µ‚½Œã‚ɁCarg‚ðˆø”‚Æ‚µ‚Äcallback‚ªŒÄ
    162  *  ‚яo‚³‚ê‚é‚悤‚ɁCp_tmevtb‚ÅŽw’肵‚½ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚ð“o˜^‚·
    163  *  ‚éD
     150 *  タイムイベントブロックの登録(相対時間指定)
     151 *
     152 *  timeで指定した相対時間が経過した後に,argを引数としてcallbackが呼
     153 *  び出されるように,p_tmevtbで指定したタイムイベントブロックを登録す
     154 *  る.
    164155 * 
    165156 */
     
    175166
    176167/*
    177  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚Ì“o˜^iƒCƒxƒ“ƒg”­¶ŽžŽw’èj
    178  *
    179  *  time‚ÅŽw’肵‚½ƒCƒxƒ“ƒg”­¶Žž‚ɁCarg‚ðˆø”‚Æ‚µ‚Äcallback‚ªŒÄ‚яo
    180  *  ‚³‚ê‚é‚悤‚ɁCp_tmevtb‚ÅŽw’肵‚½ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚ð“o˜^‚·‚éD
     168 *  タイムイベントブロックの登録(イベント発生時刻指定)
     169 *
     170 *  timeで指定したイベント発生時刻に,argを引数としてcallbackが呼び出
     171 *  されるように,p_tmevtbで指定したタイムイベントブロックを登録する.
    181172 */
    182173Inline void
     
    189180
    190181/*
    191  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚Ì“o˜^‰ðœ
     182 *  タイムイベントブロックの登録解除
    192183 */
    193184Inline void
     
    198189
    199190/*
    200  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ü‚Å‚ÌŽc‚莞ŠÔ‚ÌŒvŽZ
     191 *  タイムイベントまでの残り時間の計算
    201192 */
    202193extern RELTIM   tmevt_lefttim(TMEVTB *p_tmevtb);
    203194
    204195/*
    205  *  ƒ^ƒCƒ€ƒeƒBƒbƒN‚Ì‹Ÿ‹‹
     196 *  タイムティックの供給
    206197 */
    207198extern void     signal_time(void);
  • UsbWattMeter/trunk/asp_dcre/kernel/time_manage.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  $Id$
     
    4642
    4743/*
    48  *              ƒVƒXƒeƒ€ŽžŠÇ—‹@”\
     44 *              システム時刻管理機能
    4945 */
    5046
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_GET_TIM_ENTER
     
    7369
    7470/*
    75  *  ƒVƒXƒeƒ€Žž‚ÌŽQÆ
     71 *  システム時刻の参照
    7672 */
    7773#ifdef TOPPERS_get_tim
     
    9894
    9995/*
    100  *  «”\•]‰¿—pƒVƒXƒeƒ€Žž‚ÌŽQÆ
     96 *  性能評価用システム時刻の参照
    10197 */
    10298#ifdef TOPPERS_get_utm
  • UsbWattMeter/trunk/asp_dcre/kernel/wait.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     
    5449
    5550/*
    56  *  ‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚiƒ^ƒCƒ€ƒAƒEƒgŽw’èj
     51 *  待ち状態への遷移(タイムアウト指定)
    5752 */
    5853#ifdef TOPPERS_waimake
     
    7772
    7873/*
    79  *  ‘Ò‚¿‰ðœ
     74 *  待ち解除
    8075 */
    8176#ifdef TOPPERS_waicmp
     
    9287
    9388/*
    94  *  ƒ^ƒCƒ€ƒAƒEƒg‚É”º‚¤‘Ò‚¿‰ðœ
     89 *  タイムアウトに伴う待ち解除
    9590 */
    9691#ifdef TOPPERS_waitmo
     
    106101
    107102        /*
    108          *  ‚±‚±‚Å—Dæ“x‚̍‚‚¢Š„ž‚Ý‚ðŽó‚¯•t‚¯‚éD
     103         *  ここで優先度の高い割込みを受け付ける.
    109104         */
    110105        i_unlock_cpu();
     
    124119
    125120        /*
    126          *  ‚±‚±‚Å—Dæ“x‚̍‚‚¢Š„ž‚Ý‚ðŽó‚¯•t‚¯‚éD
     121         *  ここで優先度の高い割込みを受け付ける.
    127122         */
    128123        i_unlock_cpu();
     
    133128
    134129/*
    135  *  ‘Ò‚¿ó‘Ô‚Ì‹­§‰ðœ
     130 *  待ち状態の強制解除
    136131 */
    137132#ifdef TOPPERS_wairel
     
    149144
    150145/*
    151  *  ŽÀs’†‚̃^ƒXƒN‚Ì“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿ƒLƒ
    152 [‚Ö‚Ì‘}“ü
     146 *  実行中のタスクの同期・通信オブジェクトの待ちキューへの挿入
    153147 *
    154  *  ŽÀs’†‚̃^ƒXƒN‚ðC“¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚Ì‘Ò‚¿ƒLƒ
    155 [‚Ö‘}“ü‚·‚éDƒI
    156  *  ƒuƒWƒFƒNƒg‚Ì‘®«‚ɉž‚¶‚āCFIFO‡‚Ü‚½‚̓^ƒXƒN—Dæ“x‡‚Å‘}“ü‚·‚éD
     148 *  実行中のタスクを,同期・通信オブジェクトの待ちキューへ挿入する.オ
     149 *  ブジェクトの属性に応じて,FIFO順またはタスク優先度順で挿入する.
    157150 */
    158151Inline void
     
    168161
    169162/*
    170  *  “¯ŠúE’ʐMƒIƒuƒWƒFƒNƒg‚ɑ΂·‚é‘Ò‚¿ó‘Ô‚Ö‚Ì‘JˆÚ
     163 *  同期・通信オブジェクトに対する待ち状態への遷移
    171164 */
    172165#ifdef TOPPERS_wobjwai
     
    197190
    198191/*
    199  *  ‘Ò‚¿ƒLƒ
    200 [‚̏‰Šú‰»
     192 *  待ちキューの初期化
    201193 */
    202194#ifdef TOPPERS_iniwque
  • 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);
  • UsbWattMeter/trunk/asp_dcre/library/histogram.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              ŽÀsŽžŠÔ•ª•zWŒvƒ‚ƒWƒ
    46 [ƒ‹
     41 *              実行時間分布集計モジュール
    4742 */
    4843
     
    5449
    5550/*
    56  *  ŽÀsŽžŠÔ•ª•zŒv‘ª‚̐”
     51 *  実行時間分布計測の数
    5752 */
    5853#ifndef TNUM_HIST
     
    6156
    6257/*
    63  *  ƒ^[ƒQƒbƒgˆË‘¶•”‚Őݒè•ÏX‚·‚邽‚߂̃}ƒNƒ
     58 *  ターゲット依存部で設定変更するためのマクロ
    6459 */
    65 #ifndef HISTTIM                                         /* ŽÀsŽžŠÔŒv‘ª—p‚ÌŽž‚̃f[ƒ^Œ^ */
     60#ifndef HISTTIM                                         /* 実行時間計測用の時刻のデータ型 */
    6661#define HISTTIM                 SYSUTM
    6762#endif /* HISTTIM */
    6863
    69 #ifndef HIST_GET_TIM                            /* ŽÀsŽžŠÔŒv‘ª—p‚ÌŒ»ÝŽž‚̎擾 */
     64#ifndef HIST_GET_TIM                            /* 実行時間計測用の現在時刻の取得 */
    7065#ifndef TOPPERS_SUPPORT_GET_UTM
    7166#error get_utm is not supported.
     
    7469#endif /* HIST_GET_TIM */
    7570
    76 #ifndef HIST_CONV_TIM                           /* Žž‚̍·‚©‚çŽÀsŽžŠÔ‚Ö‚Ì•ÏŠ· */
     71#ifndef HIST_CONV_TIM                           /* 時刻の差から実行時間への変換 */
    7772#define HIST_CONV_TIM(time)             ((uint_t)(time))
    7873#endif /* HIST_CONV_TIM */
    7974
    80 #ifndef HIST_BM_HOOK                            /* ŽÀsŽžŠÔŒv‘ª’¼‘O‚ɍs‚¤‚ׂ«ˆ— */
     75#ifndef HIST_BM_HOOK                            /* 実行時間計測直前に行うべき処理 */
    8176#define HIST_BM_HOOK()                  ((void) 0)
    8277#endif
    8378
    8479/*
    85  *  ŽÀsŽžŠÔ•ª•zŒv‘ªŠÇ—ƒuƒƒbƒN
     80 *  実行時間分布計測管理ブロック
    8681 */
    8782typedef struct histogram_control_block {
    88         HISTTIM         begin_time;                     /* Œv‘ªŠJŽnŽž */
    89         uint_t          maxval;                         /* •ª•z‚ð‹L˜^‚·‚éÅ‘厞ŠÔ */
    90         uint_t          *histarea;                      /* •ª•z‚ð‹L˜^‚·‚郁ƒ‚ƒŠ—̈æ */
    91         uint_t          over;                           /* Å‘厞ŠÔ‚ð’´‚¦‚½“x” */
    92         uint_t          under;                          /* ŽžŠÔ‚Ì‹t“]‚ª‹^‚í‚ê‚é“x” */
     83        HISTTIM         begin_time;                     /* 計測開始時刻 */
     84        uint_t          maxval;                         /* 分布を記録する最大時間 */
     85        uint_t          *histarea;                      /* 分布を記録するメモリ領域 */
     86        uint_t          over;                           /* 最大時間を超えた度数 */
     87        uint_t          under;                          /* 時間の逆転が疑われる度数 */
    9388} HISTCB;
    9489
    9590/*
    96  *  ŽÀsŽžŠÔ•ª•zŒv‘ªŠÇ—ƒuƒƒbƒN‚̃GƒŠƒA
     91 *  実行時間分布計測管理ブロックのエリア
    9792 */
    9893static HISTCB   histcb_table[TNUM_HIST];
    9994
    10095/*
    101  *  ŽÀsŽžŠÔ•ª•zŒv‘ªID‚̍ŏ¬’l‚ƍőå’l
     96 *  実行時間分布計測IDの最小値と最大値
    10297 */
    10398#define TMIN_HISTID             1
     
    105100
    106101/*
    107  *  ŽÀsŽžŠÔ•ª•zŒv‘ª‚̏‰Šú‰»
     102 *  実行時間分布計測の初期化
    108103 */
    109104void
     
    126121
    127122/*
    128  *  ŽÀsŽžŠÔŒv‘ª‚ÌŠJŽn
     123 *  実行時間計測の開始
    129124 */
    130125void
     
    141136
    142137/*
    143  *  ŽÀsŽžŠÔŒv‘ª‚̏I—¹
     138 *  実行時間計測の終了
    144139 */
    145140void
     
    168163
    169164/*
    170  *  ŽÀsŽžŠÔ•ª•zŒv‘ª‚Ì•\Ž¦
     165 *  実行時間分布計測の表示
    171166 */
    172167void
  • UsbWattMeter/trunk/asp_dcre/library/log_output.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ƒVƒXƒeƒ€ƒƒO‚̃tƒH[ƒ}ƒbƒgo—Í
     43 *              システムログのフォーマット出力
    4844 */
    4945
     
    5349
    5450/*
    55  *  ”’l‚𕶎š—ñ‚É•ÏŠ·
     51 *  数値を文字列に変換
    5652 */
    5753#define CONVERT_BUFLEN  ((sizeof(uintptr_t) * CHAR_BIT + 2) / 3)
    58                                                                                 /* uintptr_tŒ^‚̐”’l‚̍ő啶Žš” */
     54                                                                                /* uintptr_t型の数値の最大文字数 */
    5955static void
    6056convert(uintptr_t val, uint_t radix, const char *radchar,
     
    8884
    8985/*
    90  *  •¶Žš—ñ®Œ`o—Í
     86 *  文字列整形出力
    9187 */
    9288static const char raddec[] = "0123456789";
     
    169165
    170166/*
    171  *  ƒƒOî•ñ‚̏o—Í
     167 *  ログ情報の出力
    172168 */
    173169void
     
    185181        default:
    186182                /*
    187                  *  ‘¼‚ÌŽí•Ê‚̃ƒOî•ñ‚ɂ͑Ήž‚µ‚Ä‚¢‚È‚¢D
     183                 *  他の種別のログ情報には対応していない.
    188184                 */
    189185                break;
     
    192188
    193189/*
    194  *  ƒƒOî•ñ‘rŽ¸ƒƒbƒZ[ƒW‚̏o—Í
     190 *  ログ情報喪失メッセージの出力
    195191 */
    196192void
  • UsbWattMeter/trunk/asp_dcre/library/mem_pool.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    11/*
    2  * ‘æ3‰ñ TOPPERSŠˆ—pƒAƒCƒfƒAEƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ƒRƒ“ƒeƒXƒg
    3  * ¼‰Y Œõ—m‚³‚ñ‚́ulwIP ‚̈ڐAv‚ðƒx[ƒX‚É‚µ‚Ü‚µ‚½B
     2 * 第3回 TOPPERS活用アイデア・アプリケーション開発コンテスト
     3 * 松浦 光洋さんの「lwIP の移植」をベースにしました。
    44 * http://www.toppers.jp/contest.html
    55 *
     
    77 */
    88//asp\doc\porting.txt
    9 //6.15.1‚æ‚è
     9//6.15.1より
    1010
    1111#include "kernel/kernel_impl.h"
  • UsbWattMeter/trunk/asp_dcre/library/strerror.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ƒGƒ‰[ƒƒbƒZ[ƒW•¶Žš—ñ‚ð•Ô‚·ŠÖ”
     43 *              エラーメッセージ文字列を返す関数
    4844 */
    4945
  • UsbWattMeter/trunk/asp_dcre/library/t_perror.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ƒGƒ‰[ƒƒbƒZ[ƒW‚̏o—Í
     43 *              エラーメッセージの出力
    4844 */
    4945
  • UsbWattMeter/trunk/asp_dcre/library/test_lib.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
    34  *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     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 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              ƒeƒXƒgƒvƒƒOƒ‰ƒ€—pƒ‰ƒCƒuƒ‰ƒŠ
     41 *              テストプログラム用ライブラリ
    4642 */
    4743
     
    5652
    5753/*
    58  *      ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
     54 *      チェックポイント
    5955 */
    6056static uint_t   check_count = 0u;
    6157
    6258/*
    63  *      Ž©ŒÈf’fŠÖ”
     59 *      自己診断関数
    6460 */
    6561static BIT_FUNC check_bit_func = NULL;
    6662
    6763/*
    68  *      Ž©ŒÈf’fŠÖ”‚̐ݒè
     64 *      自己診断関数の設定
    6965 */
    7066void
     
    7571
    7672/*
    77  *  ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ÌŠJŽn
     73 *  テストプログラムの開始
    7874 */
    7975void
     
    8480
    8581/*
    86  *  ƒVƒXƒeƒ€ƒƒO‚̏o—͏ˆ—
     82 *  システムログの出力処理
    8783 */
    8884void
     
    9389
    9490        /*
    95          *  ƒƒOƒoƒbƒtƒ@‚É‹L˜^‚³‚ꂽƒƒOî•ñ‚ðC’჌ƒxƒ‹o—Í‹@”\‚ð—p‚¢‚ďo
    96          *  —Í‚·‚éD
     91         *  ログバッファに記録されたログ情報を,低レベル出力機能を用いて出
     92         *  力する.
    9793         */
    9894        while ((rercd = syslog_rea_log(&logbuf)) >= 0) {
     
    108104
    109105/*
    110  *      ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̏I—¹
     106 *      テストプログラムの終了
    111107 */
    112108void
     
    119115        (void) ext_ker();
    120116
    121         /* ‚±‚±‚Ö—ˆ‚邱‚Æ‚Í‚È‚¢‚Í‚¸ */
     117        /* ここへ来ることはないはず */
    122118        SIL_UNL_INT();
    123119}
    124120
    125121/*
    126  *      ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
     122 *      チェックポイント
    127123 */
    128124void
     
    134130
    135131        /*
    136          *  Š„ž‚݃ƒbƒNó‘Ô‚É
     132         *  割込みロック状態に
    137133         */
    138134        SIL_LOC_INT();
    139135
    140136        /*
    141          *  ƒV[ƒPƒ“ƒXƒ`ƒFƒbƒN
     137         *  シーケンスチェック
    142138         */
    143139        if (++check_count == count) {
     
    150146
    151147        /*
    152          *  ƒJ[ƒlƒ‹‚Ì“à•”ó‘Ô‚ÌŒŸ¸
     148         *  カーネルの内部状態の検査
    153149         */
    154150        if (check_bit_func != NULL) {
     
    162158
    163159        /*
    164          *  ƒGƒ‰[‚ªŒŸo‚³‚ꂽê‡‚́CƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ðI—¹‚·‚éD
     160         *  エラーが検出された場合は,テストプログラムを終了する.
    165161         */
    166162        if (errorflag) {
     
    169165
    170166        /*
    171          *  Š„ž‚݃ƒbƒNó‘Ô‚ð‰ðœ
     167         *  割込みロック状態を解除
    172168         */
    173169        SIL_UNL_INT();
     
    175171
    176172/*
    177  *      Š®—¹ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
     173 *      完了チェックポイント
    178174 */
    179175void
     
    186182
    187183/*
    188  *      ðŒƒ`ƒFƒbƒN‚̃Gƒ‰[ˆ—
     184 *      条件チェックのエラー処理
    189185 */
    190186void
     
    197193
    198194/*
    199  *      ƒGƒ‰[ƒR[ƒhƒ`ƒFƒbƒN‚̃Gƒ‰[ˆ—
     195 *      エラーコードチェックのエラー処理
    200196 */
    201197void
  • UsbWattMeter/trunk/asp_dcre/library/vasyslog.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ‰Â•Ï”ˆø”‚̃VƒXƒeƒ€ƒƒOƒ‰ƒCƒuƒ‰ƒŠ
     43 *              可変数引数のシステムログライブラリ
    4844 */
    4945
  • UsbWattMeter/trunk/asp_dcre/pdic/rx600/rx630_uart.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4541
    4642/*
    47  * UART—p ŠÈˆÕSIOƒhƒ‰ƒCƒo
     43 * UART用 簡易SIOドライバ
    4844 */
    4945
     
    5450#include "rx630_uart.h"
    5551
    56 /* ƒVƒŠƒAƒ‹ƒ‚[ƒhƒŒƒWƒXƒ^iSMR) */
     52/* シリアルモードレジスタ(SMR) */
    5753#define CKS                     UINT_C(0x03)
    5854#define STOP            UINT_C(0x08)
     
    6460#define ASYNC_8BIT      UINT_C(0x40)
    6561
    66 /* ƒVƒŠƒAƒ‹ƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^iSCR) */
     62/* シリアルコントロールレジスタ(SCR) */
    6763#define CKE                     UINT_C(0x03)
    6864#define TEIE            UINT_C(0x04)
     
    7268#define TIE                     UINT_C(0x80)
    7369
    74 /* ƒVƒŠƒAƒ‹ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^iSSRj */
     70/* シリアルステータスレジスタ(SSR) */
    7571#define TEND            UINT_C(0x04)
    7672#define PER                     UINT_C(0x08)
     
    7874#define ORER            UINT_C(0x20)
    7975
    80 /* ƒVƒŠƒAƒ‹Šg’£ƒ‚[ƒhƒŒƒWƒXƒ^iSEMR) */
     76/* シリアル拡張モードレジスタ(SEMR) */
    8177#define ACS0            UINT_C(0x01)
    8278#define ABCS            UINT_C(0x10)
     
    8682
    8783/*
    88  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‰Šú‰»ƒuƒƒbƒN‚Ì’è‹`
     84 *  シリアルI/Oポート初期化ブロックの定義
    8985 */
    9086typedef struct sio_port_initialization_block {
    91         volatile uint8_t        *ctlreg;                /* ƒVƒŠƒAƒ‹ƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^iSCR) */
    92         volatile uint8_t        *modereg;               /* ƒVƒŠƒAƒ‹ƒ‚[ƒhƒŒƒWƒXƒ^iSMR) */
    93         volatile uint8_t        *extmodereg;    /* ƒVƒŠƒAƒ‹Šg’£ƒ‚[ƒhƒŒƒWƒXƒ^iSEMR) */
    94         volatile uint8_t        *statusreg;             /* ƒVƒŠƒAƒ‹ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^iSSRj */
    95         volatile uint8_t        *tdreg;                 /* ƒgƒ‰ƒ“ƒXƒ~ƒbƒgƒf[ƒ^ƒŒƒWƒXƒ^iTDR)*/
    96         volatile uint8_t        *rdreg;                 /* ƒŒƒV[ƒuƒf[ƒ^ƒŒƒWƒXƒ^iRDR) */
    97         volatile uint8_t        *bitratereg;    /* ƒrƒbƒgƒŒ[ƒgƒŒƒWƒXƒ^iBRR) */
    98         volatile uint32_t       *mstpcrreg;             /* ƒ‚ƒWƒ
    99 [ƒ‹ƒXƒgƒbƒvƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^iMSTPCRj */
    100         volatile uint8_t        *ssrreg;                /* ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^ */
    101         volatile uint8_t        *rxiirreg;              /* RXI—pŠ„ž‚Ý—v‹ƒŒƒWƒXƒ^ */
    102         uint8_t                         tx_intno;               /* ‘—Miƒf[ƒ^ƒGƒ“ƒvƒeƒBjŠ„‚荞‚ݔԍ† */
    103         uint8_t                         rx_intno;               /* ŽóMiƒf[ƒ^ƒtƒ‹jŠ„‚荞‚ݔԍ† */
    104         uint8_t                         te_intno;               /* ‘—MiI—¹jŠ„‚荞‚ݔԍ† */
    105         uint8_t                         sci_no;                 /* SCI‚̔ԍ†(SCI0`SCI6) */
    106         uint32_t                        mstpcr_offset;  /* MSTPCR‚̑Ήž‚·‚éƒrƒbƒgƒIƒtƒZƒbƒg */
     87        volatile uint8_t        *ctlreg;                /* シリアルコントロールレジスタ(SCR) */
     88        volatile uint8_t        *modereg;               /* シリアルモードレジスタ(SMR) */
     89        volatile uint8_t        *extmodereg;    /* シリアル拡張モードレジスタ(SEMR) */       
     90        volatile uint8_t        *statusreg;             /* シリアルステータスレジスタ(SSR) */
     91        volatile uint8_t        *tdreg;                 /* トランスミットデータレジスタ(TDR)*/
     92        volatile uint8_t        *rdreg;                 /* レシーブデータレジスタ(RDR) */
     93        volatile uint8_t        *bitratereg;    /* ビットレートレジスタ(BRR) */
     94        volatile uint32_t       *mstpcrreg;             /* モジュールストップコントロールレジスタ(MSTPCR) */
     95        volatile uint8_t        *ssrreg;                /* ステータスレジスタ */
     96        volatile uint8_t        *rxiirreg;              /* RXI用割込み要求レジスタ */
     97        uint8_t                         tx_intno;               /* 送信(データエンプティ)割り込み番号 */
     98        uint8_t                         rx_intno;               /* 受信(データフル)割り込み番号 */
     99        uint8_t                         te_intno;               /* 送信(終了)割り込み番号 */
     100        uint8_t                         sci_no;                 /* SCIの番号(SCI0〜SCI6) */
     101        uint32_t                        mstpcr_offset;  /* MSTPCRの対応するビットオフセット */
    107102} SIOPINIB;
    108103
    109104/*
    110  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN‚Ì’è‹`
     105 *  シリアルI/Oポート管理ブロックの定義
    111106 */
    112107struct sio_port_control_block {
    113         const SIOPINIB  *p_siopinib;                            /* ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‰Šú‰»ƒuƒƒbƒN */
    114         intptr_t        exinf;                                                  /* Šg’£î•ñ */
    115         bool_t          openflag;                                               /* ƒI[ƒvƒ“Ï‚݃tƒ‰ƒO */
    116         bool_t          sendflag;                                               /* ‘—MŠ„ž‚݃Cƒl[ƒuƒ‹ƒtƒ‰ƒO */
    117         bool_t          getready;                                               /* •¶Žš‚ðŽóM‚µ‚½ó‘Ô */
    118         bool_t          putready;                                               /* •¶Žš‚𑗐M‚Å‚«‚éó‘Ô */
    119         bool_t          is_initialized;                                 /* ƒfƒoƒCƒX‰Šú‰»Ï‚݃tƒ‰ƒO */
     108        const SIOPINIB  *p_siopinib;                            /* シリアルI/Oポート初期化ブロック */
     109        intptr_t        exinf;                                                  /* 拡張情報 */
     110        bool_t          openflag;                                               /* オープン済みフラグ */
     111        bool_t          sendflag;                                               /* 送信割込みイネーブルフラグ */
     112        bool_t          getready;                                               /* 文字を受信した状態 */
     113        bool_t          putready;                                               /* 文字を送信できる状態 */
     114        bool_t          is_initialized;                                 /* デバイス初期化済みフラグ */
    120115};
    121116
    122117/*
    123  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN‚̃GƒŠƒA
     118 *  シリアルI/Oポート管理ブロックのエリア
    124119 */
    125120static SIOPCB   siopcb_table[TNUM_SIOP];
    126121
    127 /* ƒŒƒWƒXƒ^ƒe[ƒuƒ‹ */
     122/* レジスタテーブル */
    128123static const SIOPINIB siopinib_table[TNUM_SIOP] =
    129124{
     
    167162
    168163/*
    169  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒgID‚©‚çŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     164 *  シリアルI/OポートIDから管理ブロックを取り出すためのマクロ
    170165 */
    171166#define INDEX_SIOP(siopid)       ((uint_t)((siopid) - 1))
     
    175170
    176171/*
    177  *  SIOƒhƒ‰ƒCƒo‚̃VƒŠƒAƒ‹ƒ‚[ƒhƒŒƒWƒXƒ^(SMR)
     172 *  SIOドライバのシリアルモードレジスタ(SMR)
    178173 */
    179174static void
     
    183178
    184179        /*
    185          *  SCIƒhƒ‰ƒCƒo‚̏‰Šú‰»ƒ‹[ƒ`ƒ“
    186          */
    187 
    188         /*
    189          *  Š„‚荞‚Ý—v‹æƒŒƒWƒXƒ^‚̐ݒè(ISELRi)
     180         *  SCIドライバの初期化ルーチン
     181         */
     182
     183        /*
     184         *  割り込み要求先レジスタの設定(ISELRi)
    190185         *
    191          *  ƒŠƒZƒbƒg’l‚Æ“¯‚¶’l‚ðÝ’è‚·‚邱‚ƂɂȂ邽‚ß,
    192          *  ˆ—‚͏ȗª‚·‚é.
    193          */
    194 
    195         /*
    196          *  ƒ‚ƒWƒ
    197 [ƒ‹ƒXƒgƒbƒv‹@”\‚̐ݒè
    198          */
    199         sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502);    /* ‘ž‚Ý‹–‰Â */
     186         *  リセット値と同じ値を設定することになるため,
     187         *  処理は省略する.
     188         */
     189
     190        /*
     191         *  モジュールストップ機能の設定
     192         */
     193        sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502);    /* 書込み許可 */
    200194        sil_wrw_mem((uint32_t *)p_siopinib->mstpcrreg,
    201195                sil_rew_mem((uint32_t *)p_siopinib->mstpcrreg) & ~p_siopinib->mstpcr_offset);
    202         sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500);    /* ‘ž‚Ý‹ÖŽ~ */
    203 
    204         /* ‘—ŽóM‹ÖŽ~, SCKn’[Žq‚Í“üo—̓|[ƒg‚Æ‚µ‚ÄŽg—p */
     196        sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500);    /* 書込み禁止 */
     197
     198        /* 送受信禁止, SCKn端子は入出力ポートとして使用 */
    205199        sil_wrb_mem((uint8_t *)p_siopinib->ctlreg, 0x00U);
    206200
    207         /* ƒNƒƒbƒN‘I‘ðƒrƒbƒg(SMR.CKS[1:0]ƒrƒbƒg‚ðÝ’è) */
     201        /* クロック選択ビット(SMR.CKS[1:0]ビットを設定) */
    208202        sil_wrb_mem((uint8_t *)p_siopinib->modereg,
    209203                                        sil_reb_mem((uint8_t *)p_siopinib->modereg) | clksrc);
    210204
    211         /* SMR‚É‘—M^ ŽóMƒtƒH[ƒ}ƒbƒg‚ðÝ’è) */
     205        /* SMRに送信/ 受信フォーマットを設定) */
    212206        sil_wrb_mem((uint8_t *)p_siopinib->modereg,
    213207                        sil_reb_mem((uint8_t *)p_siopinib->modereg) & (~SCI_SMR_FLG_ENABLE));
    214208
    215         /* ƒrƒbƒgƒŒ[ƒg‚ðÝ’è */
     209        /* ビットレートを設定 */
    216210        sil_wrb_mem((uint8_t *)p_siopinib->bitratereg, bitrate);
    217211
    218         /* ƒrƒbƒgŠúŠÔ(Šî–{ƒNƒƒbƒN16ƒTƒCƒNƒ‹‚ÌŠúŠÔ‚ª1ƒrƒbƒgŠúŠÔ‚Æ‚È‚é) */
     212        /* ビット期間(基本クロック16サイクルの期間が1ビット期間となる) */
    219213        for(i = 0; i < 16; i++) { }
    220214
    221         /* ‘—ŽóM‹–‰Â */
     215        /* 送受信許可 */
    222216        sil_wrb_mem((uint8_t *)p_siopinib->ctlreg,
    223217                (sil_reb_mem((uint8_t *)p_siopinib->ctlreg) | SCI_SCR_FLG_ENABLE));
     
    226220
    227221/*
    228  *  SIOƒhƒ‰ƒCƒo‚̏‰Šú‰»ƒ‹[ƒ`ƒ“
     222 *  SIOドライバの初期化ルーチン
    229223 */
    230224void
     
    235229
    236230        /*
    237          *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN‚̏‰Šú‰»
     231         *  シリアルI/Oポート管理ブロックの初期化
    238232         */
    239233        for (p_siopcb = siopcb_table, i = 0; i < TNUM_SIOP; p_siopcb++, i++){
     
    245239
    246240/*
    247  *  ƒJ[ƒlƒ‹‹N“®Žž‚̃oƒi[o—Í—p‚̏‰Šú‰»
     241 *  カーネル起動時のバナー出力用の初期化
    248242 */
    249243void
     
    252246        SIOPCB          *p_siopcb   = get_siopcb(siopid);
    253247        const SIOPINIB  *p_siopinib = get_siopinib(siopid);
    254         /*  ‚±‚ÌŽž“_‚ł́Ap_siopcb->p_siopinib‚͏‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢  */
    255 
    256         /*  “ñd‰Šú‰»‚Ì–hŽ~  */
     248        /*  この時点では、p_siopcb->p_siopinibは初期化されていない  */
     249
     250        /*  二重初期化の防止  */
    257251        p_siopcb->is_initialized = true;
    258252
    259         /*  ƒn[ƒhƒEƒFƒA‚̏‰Šú‰»ˆ—‚Æ‘—M‹–‰Â  */
     253        /*  ハードウェアの初期化処理と送信許可  */
    260254        rx630_uart_setmode(p_siopinib , bitrate, clksrc);
    261255        sil_wrb_mem((uint8_t *)p_siopinib->ctlreg,
     
    264258
    265259/*
    266  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚ւ̃|[ƒŠƒ“ƒO‚ł̏o—Í
     260 *  シリアルI/Oポートへのポーリングでの出力
    267261 */
    268262void
     
    274268
    275269        /*
    276          *  ‘—MƒŒƒWƒXƒ^‚ª‹ó‚É‚È‚é‚Ü‚Å‘Ò‚Â
     270         *  送信レジスタが空になるまで待つ
    277271         */
    278272        while((sil_reb_mem((uint8_t *)p_siopinib->ssrreg) & SCI_SSR_TEND_BIT) == 0U);
     
    282276
    283277/*
    284  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃I[ƒvƒ“
     278 *  シリアルI/Oポートのオープン
    285279 */
    286280SIOPCB *
     
    295289
    296290        /*
    297          *  ƒn[ƒhƒEƒFƒA‚̏‰Šú‰»
     291         *  ハードウェアの初期化
    298292         *
    299          *  Šù‚ɏ‰Šú‰»‚µ‚Ä‚¢‚éê‡‚Í, “ñd‚ɏ‰Šú‰»‚µ‚È‚¢.
     293         *  既に初期化している場合は, 二重に初期化しない.
    300294         */
    301295        if(!(p_siopcb->is_initialized)){
     
    312306
    313307/*
    314  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃Nƒ[ƒY
     308 *  シリアルI/Oポートのクローズ
    315309 */
    316310void
     
    318312{
    319313        /*
    320          *  UART’âŽ~
     314         *  UART停止
    321315         */
    322316        sil_wrh_mem((uint16_t *)p_siopcb->p_siopinib->ctlreg, 0x00U);
     
    326320
    327321/*
    328  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚Ö‚Ì•¶Žš‘—M
     322 *  シリアルI/Oポートへの文字送信
    329323 */
    330324bool_t
     
    343337
    344338/*
    345  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì•¶ŽšŽóM
     339 *  シリアルI/Oポートからの文字受信
    346340 */
    347341int_t
     
    351345
    352346        /*
    353          *  ŽóMƒtƒ‰ƒO‚ªON‚Ì‚Æ‚«‚Ì‚ÝŽóMƒoƒbƒtƒ@‚©‚當Žš‚ðŽæ“¾‚·‚é.
    354          *  ‚±‚ê‚Í, ƒ|[ƒŠƒ“ƒOŽóM‚ɑΉž‚·‚邽‚ß‚Å‚ ‚é.
    355          *  ‚µ‚©‚µ, RX600ƒVƒŠ[ƒY‚Å‚ÍŽóMƒtƒ‰ƒO‚ª‚È‚¢‚±‚Æ, ƒVƒXƒeƒ€ƒT[ƒrƒX
    356          *  ‚Å‚ÍŽóMŠ„ž‚Ý‚Ì’†‚©‚炵‚©ƒf[ƒ^‚ðŽóM‚µ‚É—ˆ‚È‚¢‚±‚Æ‚©‚ç, í‚É
    357          *  ŽóMƒoƒbƒtƒ@‚©‚當Žš‚ðŽæ“¾‚·‚é.
     347         *  受信フラグがONのときのみ受信バッファから文字を取得する.
     348         *  これは, ポーリング受信に対応するためである.
     349         *  しかし, RX600シリーズでは受信フラグがないこと, システムサービス
     350         *  では受信割込みの中からしかデータを受信しに来ないことから, 常に
     351         *  受信バッファから文字を取得する.
    358352         */
    359353        c = (int)(sil_reb_mem((uint8_t *)p_siopcb->p_siopinib->rdreg));
     
    363357
    364358/*
    365  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹–‰Â
     359 *  シリアルI/Oポートからのコールバックの許可
    366360 */
    367361void
     
    384378
    385379/*
    386  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹ÖŽ~
     380 *  シリアルI/Oポートからのコールバックの禁止
    387381 */
    388382void
     
    405399
    406400/*
    407  *  SIO‚ÌŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
     401 *  SIOの割込みサービスルーチン
    408402 */
    409403void
     
    415409                (void *)p_siopcb->p_siopinib->ssrreg) & SCI_SSR_TEND_BIT) != 0U){
    416410                /*
    417                  *  ‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒNƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·D
     411                 *  送信可能コールバックルーチンを呼び出す.
    418412                 */
    419413                rx630_uart_irdy_snd(p_siopcb->exinf);
     
    427421
    428422        /*
    429          *  ŽóMƒtƒ‰ƒO‚ªON‚Ì‚Æ‚«‚Ì‚ÝŽóM’Ê’mƒR[ƒ‹ƒoƒbƒNƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·.
    430          *  ‚µ‚©‚µ, RX600ƒVƒŠ[ƒY‚Å‚ÍŽóMƒtƒ‰ƒO‚ª‚È‚¢‚½‚ß, í‚ÉŽóM’Ê’m
    431          *  ƒR[ƒ‹ƒoƒbƒNƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·.
    432          *  ‚±‚±‚Å‚ÍŽóMŠ„ž‚Ý‚Ì”­¶‚ðM‚¶‚é.
    433          */
    434         /*
    435          *  ŽóM’Ê’mƒR[ƒ‹ƒoƒbƒNƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·D
     423         *  受信フラグがONのときのみ受信通知コールバックルーチンを呼び出す.
     424         *  しかし, RX600シリーズでは受信フラグがないため, 常に受信通知
     425         *  コールバックルーチンを呼び出す.
     426         *  ここでは受信割込みの発生を信じる.
     427         */
     428        /*
     429         *  受信通知コールバックルーチンを呼び出す.
    436430         */
    437431        rx630_uart_irdy_rcv(p_siopcb->exinf);
     
    440434
    441435/*
    442  *  ƒ|[ƒg”ԍ†‚©‚çŠÇ—ƒuƒƒbƒN‚̐擪”Ô’n‚Ö‚Ì•ÏŠ·
     436 *  ポート番号から管理ブロックの先頭番地への変換
    443437 */
    444438SIOPCB *
     
    449443
    450444/*
    451  * ŠÇ—ƒuƒƒbƒN‚̐擪”Ô’n‚©‚çŽóMŠ„ž‚ݔԍ†‚Ö‚Ì•ÏŠ·
     445 * 管理ブロックの先頭番地から受信割込み番号への変換
    452446 */
    453447INTNO
     
    458452
    459453/*
    460  * ŠÇ—ƒuƒƒbƒN‚̐擪”Ô’n‚©‚ç‘—MŠ„ž‚ݔԍ†‚Ö‚Ì•ÏŠ·
     454 * 管理ブロックの先頭番地から送信割込み番号への変換
    461455 */
    462456INTNO
  • UsbWattMeter/trunk/asp_dcre/pdic/rx600/rx630_uart.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *  UART—p ŠÈˆÕSIOƒhƒ‰ƒCƒo
     42 *  UART用 簡易SIOドライバ
    4743 */
    4844
     
    5046#define TOPPERS_RX630_UART_H
    5147
    52 /* Žw’è‰Â”\‚ȃNƒƒbƒNƒ\[ƒX */
     48/* 指定可能なクロックソース */
    5349#define CLK_F1  UINT_C(0x00)
    5450#define CLK_F4  UINT_C(0x01)
     
    5955
    6056/*
    61  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN‚Ì’è‹`
     57 *  シリアルI/Oポート管理ブロックの定義
    6258 */
    6359typedef struct sio_port_control_block   SIOPCB;
    6460
    6561/*
    66  *  ƒR[ƒ‹ƒoƒbƒNƒ‹[ƒ`ƒ“‚ÌŽ¯•Ê”ԍ†
     62 *  コールバックルーチンの識別番号
    6763 */
    68 #define SIO_RDY_SND    (1U)        /* ‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒN */
    69 #define SIO_RDY_RCV    (2U)        /* ŽóM’Ê’mƒR[ƒ‹ƒoƒbƒN */
     64#define SIO_RDY_SND    (1U)        /* 送信可能コールバック */
     65#define SIO_RDY_RCV    (2U)        /* 受信通知コールバック */
    7066
    7167/*
    72  *  SIOƒhƒ‰ƒCƒo‚̏‰Šú‰»ƒ‹[ƒ`ƒ“
     68 *  SIOドライバの初期化ルーチン
    7369 */
    7470extern void rx630_uart_initialize(void);
    7571
    7672/*
    77  * ƒJ[ƒlƒ‹‹N“®Žž‚̃oƒi[o—Í—p‚̏‰Šú‰»
     73 * カーネル起動時のバナー出力用の初期化
    7874 */
    7975extern void rx630_uart_init(ID siopid , uint8_t baud , uint8_t clksrc);
    8076
    8177/*
    82  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚ւ̃|[ƒŠƒ“ƒO‚ł̏o—Í
     78 *  シリアルI/Oポートへのポーリングでの出力
    8379 */
    8480extern void rx630_uart_pol_putc(char c, ID siopid);
    8581
    8682/*
    87  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃I[ƒvƒ“
     83 *  シリアルI/Oポートのオープン
    8884 */
    8985extern SIOPCB *rx630_uart_opn_por
     
    9187
    9288/*
    93  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃Nƒ[ƒY
     89 *  シリアルI/Oポートのクローズ
    9490 */
    9591extern void rx630_uart_cls_por(SIOPCB *p_siopcb);
    9692
    9793/*
    98  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚Ö‚Ì•¶Žš‘—M
     94 *  シリアルI/Oポートへの文字送信
    9995 */
    10096extern bool_t rx630_uart_snd_chr(SIOPCB *p_siopcb, char c);
    10197
    10298/*
    103  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì•¶ŽšŽóM
     99 *  シリアルI/Oポートからの文字受信
    104100 */
    105101extern int_t rx630_uart_rcv_chr(SIOPCB *p_siopcb);
    106102
    107103/*
    108  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹–‰Â
     104 *  シリアルI/Oポートからのコールバックの許可
    109105 */
    110106extern void  rx630_uart_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn);
    111107
    112108/*
    113  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹ÖŽ~
     109 *  シリアルI/Oポートからのコールバックの禁止
    114110 */
    115111extern void rx630_uart_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn);
    116112
    117113/*
    118  *  SIO‚ÌŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
     114 *  SIOの割込みサービスルーチン
    119115 */
    120116extern void rx630_uart_tx_isr(ID siopid);
     
    122118
    123119/*
    124  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒN
     120 *  シリアルI/Oポートからの送信可能コールバック
    125121 */
    126122extern void rx630_uart_irdy_snd(intptr_t exinf);
    127123
    128124/*
    129  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚ÌŽóM’Ê’mƒR[ƒ‹ƒoƒbƒN
     125 *  シリアルI/Oポートからの受信通知コールバック
    130126 */
    131127extern void rx630_uart_irdy_rcv(intptr_t exinf);
     
    133129
    134130/*
    135  *  ƒ|[ƒg”ԍ†‚©‚çŠÇ—ƒuƒƒbƒN‚̐擪”Ô’n‚Ö‚Ì•ÏŠ·
     131 *  ポート番号から管理ブロックの先頭番地への変換
    136132 */
    137133extern SIOPCB *rx630_uart_get_siopcb(ID siopid);
    138134
    139135/*
    140  * ŠÇ—ƒuƒƒbƒN‚̐擪”Ô’n‚©‚çŽóMŠ„ž‚ݔԍ†‚Ö‚Ì•ÏŠ·
     136 * 管理ブロックの先頭番地から受信割込み番号への変換
    141137 */
    142138extern INTNO rx630_uart_intno_rx(SIOPCB *p_siopcb);
    143139
    144140/*
    145  * ŠÇ—ƒuƒƒbƒN‚̐擪”Ô’n‚©‚ç‘—MŠ„ž‚ݔԍ†‚Ö‚Ì•ÏŠ·
     141 * 管理ブロックの先頭番地から送信割込み番号への変換
    146142 */
    147143extern INTNO rx630_uart_intno_tx(SIOPCB *p_siopcb);
  • UsbWattMeter/trunk/asp_dcre/syssvc/banner.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—Í
     44 *              カーネル起動メッセージの出力
    4945 */
    5046
  • UsbWattMeter/trunk/asp_dcre/syssvc/banner.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    44
    55/*
    6  *              ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—͂̃Rƒ“ƒtƒBƒMƒ
    7 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     6 *              カーネル起動メッセージの出力のコンフィギュレーションファイル
    87 */
    98
  • UsbWattMeter/trunk/asp_dcre/syssvc/banner.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    34  *      –Ɛӂ·‚邱‚ƁD
     9 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—Í
     42 *              カーネル起動メッセージの出力
    4743 */
    4844
     
    5147
    5248/*
    53  *  ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—Í
     49 *  カーネル起動メッセージの出力
    5450 */
    5551extern void     print_banner(intptr_t exinf) throw();
  • UsbWattMeter/trunk/asp_dcre/syssvc/logtask.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN
     44 *              システムログタスク
    4945 */
    5046
     
    5753
    5854/*
    59  *  ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN‚̏o—͐æ‚̃|[ƒgID
     55 *  システムログタスクの出力先のポートID
    6056 */
    6157static ID       logtask_portid;
    6258
    6359/*
    64  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒX‚Ö‚Ì1•¶Žšo—Í
     60 *  シリアルインタフェースへの1文字出力
    6561 */
    6662static void
     
    7167
    7268/*
    73  *  ƒVƒXƒeƒ€ƒƒOo—Í‚Ì‘Ò‚¿‡‚킹
     69 *  システムログ出力の待ち合わせ
    7470 */
    7571ER
     
    9288                                if (count == 0U) {
    9389                                        /*
    94                                          *  count‚ª0‚̏ꍇ‚ɂ́CƒVƒŠƒAƒ‹ƒoƒbƒtƒ@‚ª‹ó‚©‚ðŠm
    95                                          *  ”F‚·‚éD
     90                                         *  countが0の場合には,シリアルバッファが空かを確
     91                                         *  認する.
    9692                                         */
    9793                                        if (serial_ref_por(logtask_portid, &rpor) < 0) {
     
    111107
    112108                        /*
    113                          *  LOGTASK_FLUSH_WAITƒ~ƒŠ•b‘҂D
     109                         *  LOGTASK_FLUSH_WAITミリ秒待つ.
    114110                         */
    115111                        rercd = dly_tsk(LOGTASK_FLUSH_WAIT);
     
    126122
    127123/*
    128  *  ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN‚Ì–{‘Ì
     124 *  システムログタスクの本体
    129125 */
    130126void
     
    161157
    162158/*
    163  *  ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN‚̏I—¹ˆ—
     159 *  システムログタスクの終了処理
    164160 */
    165161void
     
    172168
    173169        /*
    174          *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚Ì‘—Mƒoƒbƒtƒ@‚É’~Ï‚³‚ꂽƒf[ƒ^
    175          *  ‚ðC’჌ƒxƒ‹o—Í‹@”\‚ð—p‚¢‚ďo—Í‚·‚éD
     170         *  シリアルインタフェースドライバの送信バッファに蓄積されたデータ
     171         *  を,低レベル出力機能を用いて出力する.
    176172         */
    177173        while (serial_get_chr(logtask_portid, &c)) {
     
    180176
    181177        /*
    182          *  ƒƒOƒoƒbƒtƒ@‚É‹L˜^‚³‚ꂽƒƒOî•ñ‚ðC’჌ƒxƒ‹o—Í‹@”\‚ð—p‚¢‚ďo
    183          *  —Í‚·‚éD
     178         *  ログバッファに記録されたログ情報を,低レベル出力機能を用いて出
     179         *  力する.
    184180         */
    185181        while ((rercd = syslog_rea_log(&logbuf)) >= 0) {
    186182                if (!msgflg) {
    187183                        /*
    188                          *  ƒƒOƒoƒbƒtƒ@‚ÉŽc‚Á‚½ƒƒOî•ñ‚Å‚ ‚邱‚Æ‚ðŽ¦‚·•¶Žš—ñ‚ðo
    189                          *  —Í‚·‚éD
     184                         *  ログバッファに残ったログ情報であることを示す文字列を出
     185                         *  力する.
    190186                         */
    191187                        syslog_printf("-- buffered messages --\n", NULL, target_fput_log);
  • UsbWattMeter/trunk/asp_dcre/syssvc/logtask.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    44
    55/*
    6  *              ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN‚̃Rƒ“ƒtƒBƒMƒ
    7 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     6 *              システムログタスクのコンフィギュレーションファイル
    87 */
    98
  • UsbWattMeter/trunk/asp_dcre/syssvc/logtask.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN
     44 *              システムログタスク
    4945 */
    5046
     
    5955
    6056/*
    61  *  ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒNŠÖ˜A‚̒萔‚̃fƒtƒHƒ‹ƒg’l‚Ì’è‹`
     57 *  システムログタスク関連の定数のデフォルト値の定義
    6258 */
    6359#ifndef LOGTASK_PRIORITY
    64 #define LOGTASK_PRIORITY        3               /* ‰Šú—Dæ“x */
     60#define LOGTASK_PRIORITY        3               /* 初期優先度 */
    6561#endif /* LOGTASK_PRIORITY */
    6662
    6763#ifndef LOGTASK_STACK_SIZE
    68 #define LOGTASK_STACK_SIZE      1024    /* ƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY */
     64#define LOGTASK_STACK_SIZE      1024    /* スタック領域のサイズ */
    6965#endif /* LOGTASK_STACK_SIZE */
    7066
    7167#ifndef LOGTASK_PORTID
    72 #define LOGTASK_PORTID          1               /* ƒVƒXƒeƒ€ƒƒO—p‚̃VƒŠƒAƒ‹ƒ|[ƒg”ԍ† */
     68#define LOGTASK_PORTID          1               /* システムログ用のシリアルポート番号 */
    7369#endif /* LOGTASK_PORTID */
    7470
    7571#ifndef LOGTASK_INTERVAL
    76 #define LOGTASK_INTERVAL        10U             /* ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN‚Ì“®ìŠÔŠuiƒ~ƒŠ•bj*/
     72#define LOGTASK_INTERVAL        10U             /* システムログタスクの動作間隔(ミリ秒)*/
    7773#endif /* LOGTASK_INTERVAL */
    7874
    7975#ifndef LOGTASK_FLUSH_WAIT
    80 #define LOGTASK_FLUSH_WAIT      1U              /* ƒtƒ‰ƒbƒVƒ
    81 ‘Ò‚¿‚Ì’PˆÊŽžŠÔiƒ~ƒŠ•bj*/
     76#define LOGTASK_FLUSH_WAIT      1U              /* フラッシュ待ちの単位時間(ミリ秒)*/
    8277#endif /* LOGTASK_FLUSH_WAIT */
    8378
    8479/*
    85  *  ƒVƒXƒeƒ€ƒƒOo—Í‚Ì‘Ò‚¿‡‚킹
     80 *  システムログ出力の待ち合わせ
    8681 *
    87  *  ƒƒOƒoƒbƒtƒ@’†‚̃ƒO‚̐”‚ªcountˆÈ‰º‚É‚È‚é‚܂ő҂Dcount‚ª0‚̏ꍇ‚É
    88  *  ‚́CƒVƒŠƒAƒ‹ƒoƒbƒtƒ@‚ª‹ó‚É‚È‚é‚Ì‚à‘҂D
     82 *  ログバッファ中のログの数がcount以下になるまで待つ.countが0の場合に
     83 *  は,シリアルバッファが空になるのも待つ.
    8984 */
    9085extern ER       logtask_flush(uint_t count) throw();
    9186
    9287/*
    93  *  ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN‚Ì–{‘Ì
     88 *  システムログタスクの本体
    9489 */
    9590extern void     logtask_main(intptr_t exinf) throw();
    9691
    9792/*
    98  *  ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒN‚̏I—¹ˆ—
     93 *  システムログタスクの終了処理
    9994 */
    10095extern void     logtask_terminate(intptr_t exinf) throw();
  • UsbWattMeter/trunk/asp_dcre/syssvc/serial.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo
     44 *              シリアルインタフェースドライバ
    4945 */
    5046
     
    5753
    5854/*
    59  *  ƒoƒbƒtƒ@ƒTƒCƒY‚̃fƒtƒHƒ‹ƒg’l‚ƃoƒbƒtƒ@‚Ì’è‹`
     55 *  バッファサイズのデフォルト値とバッファの定義
    6056 */
    6157#ifndef SERIAL_RCV_BUFSZ1
    62 #define SERIAL_RCV_BUFSZ1       256                     /* ƒ|[ƒg1‚ÌŽóMƒoƒbƒtƒ@ƒTƒCƒY */
     58#define SERIAL_RCV_BUFSZ1       256                     /* ポート1の受信バッファサイズ */
    6359#endif /* SERIAL_RCV_BUFSZ1 */
    6460
    6561#ifndef SERIAL_SND_BUFSZ1
    66 #define SERIAL_SND_BUFSZ1       256                     /* ƒ|[ƒg1‚Ì‘—Mƒoƒbƒtƒ@ƒTƒCƒY */
     62#define SERIAL_SND_BUFSZ1       256                     /* ポート1の送信バッファサイズ */
    6763#endif /* SERIAL_SND_BUFSZ1 */
    6864
     
    7066static char     snd_buffer1[SERIAL_SND_BUFSZ1];
    7167
    72 #if TNUM_PORT >= 2                                              /* ƒ|[ƒg2‚ÉŠÖ‚·‚é’è‹` */
     68#if TNUM_PORT >= 2                                              /* ポート2に関する定義 */
    7369
    7470#ifndef SERIAL_RCV_BUFSZ2
    75 #define SERIAL_RCV_BUFSZ2       256                     /* ƒ|[ƒg2‚ÌŽóMƒoƒbƒtƒ@ƒTƒCƒY */
     71#define SERIAL_RCV_BUFSZ2       256                     /* ポート2の受信バッファサイズ */
    7672#endif /* SERIAL_RCV_BUFSZ2 */
    7773
    7874#ifndef SERIAL_SND_BUFSZ2
    79 #define SERIAL_SND_BUFSZ2       256                     /* ƒ|[ƒg2‚Ì‘—Mƒoƒbƒtƒ@ƒTƒCƒY */
     75#define SERIAL_SND_BUFSZ2       256                     /* ポート2の送信バッファサイズ */
    8076#endif /* SERIAL_SND_BUFSZ2 */
    8177
     
    8581#endif /* TNUM_PORT >= 2 */
    8682
    87 #if TNUM_PORT >= 3                                              /* ƒ|[ƒg3‚ÉŠÖ‚·‚é’è‹` */
     83#if TNUM_PORT >= 3                                              /* ポート3に関する定義 */
    8884
    8985#ifndef SERIAL_RCV_BUFSZ3
    90 #define SERIAL_RCV_BUFSZ3       256                     /* ƒ|[ƒg3‚ÌŽóMƒoƒbƒtƒ@ƒTƒCƒY */
     86#define SERIAL_RCV_BUFSZ3       256                     /* ポート3の受信バッファサイズ */
    9187#endif /* SERIAL_RCV_BUFSZ3 */
    9288
    9389#ifndef SERIAL_SND_BUFSZ3
    94 #define SERIAL_SND_BUFSZ3       256                     /* ƒ|[ƒg3‚Ì‘—Mƒoƒbƒtƒ@ƒTƒCƒY */
     90#define SERIAL_SND_BUFSZ3       256                     /* ポート3の送信バッファサイズ */
    9591#endif /* SERIAL_SND_BUFSZ3 */
    9692
     
    10096#endif /* TNUM_PORT >= 3 */
    10197
    102 #if TNUM_PORT >= 4                                              /* ƒ|[ƒg4‚ÉŠÖ‚·‚é’è‹` */
     98#if TNUM_PORT >= 4                                              /* ポート4に関する定義 */
    10399
    104100#ifndef SERIAL_RCV_BUFSZ4
    105 #define SERIAL_RCV_BUFSZ4       256                     /* ƒ|[ƒg4‚ÌŽóMƒoƒbƒtƒ@ƒTƒCƒY */
     101#define SERIAL_RCV_BUFSZ4       256                     /* ポート4の受信バッファサイズ */
    106102#endif /* SERIAL_RCV_BUFSZ4 */
    107103
    108104#ifndef SERIAL_SND_BUFSZ4
    109 #define SERIAL_SND_BUFSZ4       256                     /* ƒ|[ƒg4‚Ì‘—Mƒoƒbƒtƒ@ƒTƒCƒY */
     105#define SERIAL_SND_BUFSZ4       256                     /* ポート4の送信バッファサイズ */
    110106#endif /* SERIAL_SND_BUFSZ4 */
    111107
     
    115111#endif /* TNUM_PORT >= 4 */
    116112
    117 #if TNUM_PORT >= 5                                              /* ƒ|[ƒg5‚ÉŠÖ‚·‚é’è‹` */
     113#if TNUM_PORT >= 5                                              /* ポート5に関する定義 */
    118114
    119115#ifndef SERIAL_RCV_BUFSZ5
    120 #define SERIAL_RCV_BUFSZ5       256                     /* ƒ|[ƒg5‚ÌŽóMƒoƒbƒtƒ@ƒTƒCƒY */
     116#define SERIAL_RCV_BUFSZ5       256                     /* ポート5の受信バッファサイズ */
    121117#endif /* SERIAL_RCV_BUFSZ5 */
    122118
    123119#ifndef SERIAL_SND_BUFSZ5
    124 #define SERIAL_SND_BUFSZ5       256                     /* ƒ|[ƒg5‚Ì‘—Mƒoƒbƒtƒ@ƒTƒCƒY */
     120#define SERIAL_SND_BUFSZ5       256                     /* ポート5の送信バッファサイズ */
    125121#endif /* SERIAL_SND_BUFSZ5 */
    126122
     
    130126#endif /* TNUM_PORT >= 5 */
    131127
    132 #if TNUM_PORT >= 6                                              /* ƒ|[ƒg6‚ÉŠÖ‚·‚é’è‹` */
     128#if TNUM_PORT >= 6                                              /* ポート6に関する定義 */
    133129
    134130#ifndef SERIAL_RCV_BUFSZ6
    135 #define SERIAL_RCV_BUFSZ6       256                     /* ƒ|[ƒg6‚ÌŽóMƒoƒbƒtƒ@ƒTƒCƒY */
     131#define SERIAL_RCV_BUFSZ6       256                     /* ポート6の受信バッファサイズ */
    136132#endif /* SERIAL_RCV_BUFSZ6 */
    137133
    138134#ifndef SERIAL_SND_BUFSZ6
    139 #define SERIAL_SND_BUFSZ6       256                     /* ƒ|[ƒg6‚Ì‘—Mƒoƒbƒtƒ@ƒTƒCƒY */
     135#define SERIAL_SND_BUFSZ6       256                     /* ポート6の送信バッファサイズ */
    140136#endif /* SERIAL_SND_BUFSZ6 */
    141137
     
    150146
    151147/*
    152  *  ƒtƒ[§Œä‚ÉŠÖ˜A‚·‚é’萔‚ƃ}ƒNƒ
    153  */
    154 #define FC_STOP                 '\023'          /* ƒRƒ“ƒgƒ[ƒ‹-S */
    155 #define FC_START                '\021'          /* ƒRƒ“ƒgƒ[ƒ‹-Q */
    156 
    157 #define BUFCNT_STOP(bufsz)              ((bufsz) * 3 / 4)       /* STOP‚ð‘—‚éŠî€•¶Žš” */
    158 #define BUFCNT_START(bufsz)             ((bufsz) / 2)           /* START‚ð‘—‚éŠî€•¶Žš” */
    159 
    160 /*
    161  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‰Šú‰»ƒuƒƒbƒN
     148 *  フロー制御に関連する定数とマクロ
     149 */
     150#define FC_STOP                 '\023'          /* コントロール-S */
     151#define FC_START                '\021'          /* コントロール-Q */
     152
     153#define BUFCNT_STOP(bufsz)              ((bufsz) * 3 / 4)       /* STOPを送る基準文字数 */
     154#define BUFCNT_START(bufsz)             ((bufsz) / 2)           /* STARTを送る基準文字数 */
     155
     156/*
     157 *  シリアルポート初期化ブロック
    162158 */
    163159typedef struct serial_port_initialization_block {
    164         ID              rcv_semid;              /* ŽóMƒoƒbƒtƒ@ŠÇ——pƒZƒ}ƒtƒH‚ÌID */
    165         ID              snd_semid;              /* ‘—Mƒoƒbƒtƒ@ŠÇ——pƒZƒ}ƒtƒH‚ÌID */
    166         uint_t  rcv_bufsz;              /* ŽóMƒoƒbƒtƒ@ƒTƒCƒY */
    167         char    *rcv_buffer;    /* ŽóMƒoƒbƒtƒ@ */
    168         uint_t  snd_bufsz;              /* ‘—Mƒoƒbƒtƒ@ƒTƒCƒY */
    169         char    *snd_buffer;    /* ‘—Mƒoƒbƒtƒ@ */
     160        ID              rcv_semid;              /* 受信バッファ管理用セマフォのID */
     161        ID              snd_semid;              /* 送信バッファ管理用セマフォのID */
     162        uint_t  rcv_bufsz;              /* 受信バッファサイズ */
     163        char    *rcv_buffer;    /* 受信バッファ */
     164        uint_t  snd_bufsz;              /* 送信バッファサイズ */
     165        char    *snd_buffer;    /* 送信バッファ */
    170166} SPINIB;
    171167
     
    192188
    193189/*
    194  *  ƒVƒŠƒAƒ‹ƒ|[ƒgŠÇ—ƒuƒƒbƒN
     190 *  シリアルポート管理ブロック
    195191 */
    196192typedef struct serial_port_control_block {
    197         const SPINIB *p_spinib;         /* ƒVƒŠƒAƒ‹ƒ|[ƒg‰Šú‰»ƒuƒƒbƒN */
    198         SIOPCB  *p_siopcb;                      /* ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN */
    199         bool_t  openflag;                       /* ƒI[ƒvƒ“Ï‚݃tƒ‰ƒO */
    200         bool_t  errorflag;                      /* ƒGƒ‰[ƒtƒ‰ƒO */
    201         uint_t  ioctl;                          /* “®ì§Œä‚̐ݒè’l */
    202 
    203         uint_t  rcv_read_ptr;           /* ŽóMƒoƒbƒtƒ@“Ǐo‚µƒ|ƒCƒ“ƒ^ */
    204         uint_t  rcv_write_ptr;          /* ŽóMƒoƒbƒtƒ@‘ž‚݃|ƒCƒ“ƒ^ */
    205         uint_t  rcv_count;                      /* ŽóMƒoƒbƒtƒ@’†‚Ì•¶Žš” */
    206         char    rcv_fc_chr;                     /* ‘—‚é‚ׂ«START/STOP */
    207         bool_t  rcv_stopped;            /* STOP‚ð‘—‚Á‚½ó‘Ô‚©H */
    208 
    209         uint_t  snd_read_ptr;           /* ‘—Mƒoƒbƒtƒ@“Ǐo‚µƒ|ƒCƒ“ƒ^ */
    210         uint_t  snd_write_ptr;          /* ‘—Mƒoƒbƒtƒ@‘ž‚݃|ƒCƒ“ƒ^ */
    211         uint_t  snd_count;                      /* ‘—Mƒoƒbƒtƒ@’†‚Ì•¶Žš” */
    212         bool_t  snd_stopped;            /* STOP‚ðŽó‚¯Žæ‚Á‚½ó‘Ô‚©H */
     193        const SPINIB *p_spinib;         /* シリアルポート初期化ブロック */
     194        SIOPCB  *p_siopcb;                      /* シリアルI/Oポート管理ブロック */
     195        bool_t  openflag;                       /* オープン済みフラグ */
     196        bool_t  errorflag;                      /* エラーフラグ */
     197        uint_t  ioctl;                          /* 動作制御の設定値 */
     198
     199        uint_t  rcv_read_ptr;           /* 受信バッファ読出しポインタ */
     200        uint_t  rcv_write_ptr;          /* 受信バッファ書込みポインタ */
     201        uint_t  rcv_count;                      /* 受信バッファ中の文字数 */
     202        char    rcv_fc_chr;                     /* 送るべきSTART/STOP */
     203        bool_t  rcv_stopped;            /* STOPを送った状態か? */
     204
     205        uint_t  snd_read_ptr;           /* 送信バッファ読出しポインタ */
     206        uint_t  snd_write_ptr;          /* 送信バッファ書込みポインタ */
     207        uint_t  snd_count;                      /* 送信バッファ中の文字数 */
     208        bool_t  snd_stopped;            /* STOPを受け取った状態か? */
    213209} SPCB;
    214210
     
    216212
    217213/*
    218  *  ƒVƒŠƒAƒ‹ƒ|[ƒgID‚©‚çƒVƒŠƒAƒ‹ƒ|[ƒgŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     214 *  シリアルポートIDからシリアルポート管理ブロックを取り出すためのマクロ
    219215 */
    220216#define INDEX_PORT(portid)      ((uint_t)((portid) - 1))
     
    222218
    223219/*
    224  *  ƒ|ƒCƒ“ƒ^‚̃Cƒ“ƒNƒŠƒƒ“ƒg
     220 *  ポインタのインクリメント
    225221 */
    226222#define INC_PTR(ptr, bufsz) do {        \
     
    231227
    232228/*
    233  *  ƒT[ƒrƒXƒR[ƒ‹ŒÄo‚µƒ}ƒNƒ
     229 *  サービスコール呼出しマクロ
    234230 *
    235  *  ƒT[ƒrƒXƒR[ƒ‹ŒÄo‚µ‚ðŠÜ‚ÞŽ®exp‚ð•]‰¿‚µC•Ô’l‚ªƒGƒ‰[i•‰‚Ì’lj‚̏ê
    236  *  ‡‚ɂ́Cerc‚Éercd_exp‚ð•]‰¿‚µ‚½’l‚ð‘ã“ü‚µCerror_exit‚Égoto‚·‚éD
     231 *  サービスコール呼出しを含む式expを評価し,返値がエラー(負の値)の場
     232 *  合には,ercにercd_expを評価した値を代入し,error_exitにgotoする.
    237233 */
    238234#define SVC(exp, ercd_exp) do {         \
     
    244240
    245241/*
    246  *  E_SYSƒGƒ‰[‚̐¶¬
     242 *  E_SYSエラーの生成
    247243 */
    248244static ER
     
    254250
    255251/*
    256  *  ‘Ò‚¿‚É“ü‚éƒT[ƒrƒXƒR[ƒ‹‚©‚ç‚̃Gƒ‰[‚Ì•ÏŠ·
     252 *  待ちに入るサービスコールからのエラーの変換
    257253 */
    258254static ER
     
    270266
    271267/*
    272  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚̏‰Šú‰»ƒ‹[ƒ`ƒ“
     268 *  シリアルインタフェースドライバの初期化ルーチン
    273269 */
    274270void
     
    286282
    287283/*
    288  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚̃I[ƒvƒ“iƒT[ƒrƒXƒR[ƒ‹j
     284 *  シリアルポートのオープン(サービスコール)
    289285 */
    290286ER
     
    294290        ER              ercd;
    295291
    296         if (sns_dpn()) {                                /* ƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒN */
     292        if (sns_dpn()) {                                /* コンテキストのチェック */
    297293                return(E_CTX);
    298294        }
    299295        if (!(1 <= portid && portid <= TNUM_PORT)) {
    300                 return(E_ID);                           /* ƒ|[ƒg”ԍ†‚̃`ƒFƒbƒN */
     296                return(E_ID);                           /* ポート番号のチェック */
    301297        }
    302298        p_spcb = get_spcb(portid);
    303299
    304300        SVC(dis_dsp(), gen_ercd_sys(p_spcb));
    305         if (p_spcb->openflag) {                 /* ƒI[ƒvƒ“Ï‚Ý‚©‚̃`ƒFƒbƒN */
     301        if (p_spcb->openflag) {                 /* オープン済みかのチェック */
    306302                ercd = E_OBJ;
    307303        }
    308304        else {
    309305                /*
    310                  *  •Ï”‚̏‰Šú‰»
     306                 *  変数の初期化
    311307                 */
    312308                p_spcb->ioctl = (IOCTL_ECHO | IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV);
     
    324320
    325321                /*
    326                  *  ‚±‚êˆÈ~CŠ„ž‚Ý‚ð‹ÖŽ~‚·‚éD
     322                 *  これ以降,割込みを禁止する.
    327323                 */
    328324                if (loc_cpu() < 0) {
     
    332328
    333329                /*
    334                  *  ƒn[ƒhƒEƒFƒAˆË‘¶‚̃I[ƒvƒ“ˆ—
     330                 *  ハードウェア依存のオープン処理
    335331                 */
    336332                p_spcb->p_siopcb = sio_opn_por(portid, (intptr_t) p_spcb);
    337333
    338334                /*
    339                  *  ŽóM’Ê’mƒR[ƒ‹ƒoƒbƒN‚ð‹–‰Â‚·‚éD
     335                 *  受信通知コールバックを許可する.
    340336                 */
    341337                sio_ena_cbr(p_spcb->p_siopcb, SIO_RDY_RCV);
     
    359355
    360356/*
    361  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚̃Nƒ[ƒYiƒT[ƒrƒXƒR[ƒ‹j
     357 *  シリアルポートのクローズ(サービスコール)
    362358 */
    363359ER
     
    368364        bool_t  eflag = false;
    369365
    370         if (sns_dpn()) {                                /* ƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒN */
     366        if (sns_dpn()) {                                /* コンテキストのチェック */
    371367                return(E_CTX);
    372368        }
    373369        if (!(1 <= portid && portid <= TNUM_PORT)) {
    374                 return(E_ID);                           /* ƒ|[ƒg”ԍ†‚̃`ƒFƒbƒN */
     370                return(E_ID);                           /* ポート番号のチェック */
    375371        }
    376372        p_spcb = get_spcb(portid);
    377373
    378374        SVC(dis_dsp(), gen_ercd_sys(p_spcb));
    379         if (!(p_spcb->openflag)) {              /* ƒI[ƒvƒ“Ï‚Ý‚©‚̃`ƒFƒbƒN */
     375        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    380376                ercd = E_OBJ;
    381377        }
    382378        else {
    383379                /*
    384                  *  ƒn[ƒhƒEƒFƒAˆË‘¶‚̃Nƒ[ƒYˆ—
     380                 *  ハードウェア依存のクローズ処理
    385381                 */
    386382                if (loc_cpu() < 0) {
     
    394390
    395391                /*
    396                  *  ƒZƒ}ƒtƒH‚̏‰Šú‰»
     392                 *  セマフォの初期化
    397393                 */
    398394                if (ini_sem(p_spcb->p_spinib->snd_semid) < 0) {
     
    404400
    405401                /*
    406                  *  ƒGƒ‰[ƒR[ƒh‚̐ݒè
     402                 *  エラーコードの設定
    407403                 */
    408404                if (eflag) {
     
    420416
    421417/*
    422  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚Ö‚Ì•¶Žš‘—M
     418 *  シリアルポートへの文字送信
    423419 *
    424  *  p_spcb‚ÅŽw’肳‚ê‚éƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚ɑ΂µ‚āC•¶Žšc‚𑗐M‚·‚éD•¶Žš
    425  *  ‚𑗐MƒŒƒWƒXƒ^‚É‚¢‚ꂽê‡‚É‚Ítrue‚ð•Ô‚·D‚»‚¤‚Å‚È‚¢ê‡‚ɂ́C‘—M
    426  *  ƒŒƒWƒXƒ^‚ª‹ó‚¢‚½‚±‚Æ‚ð’Ê’m‚·‚éƒR[ƒ‹ƒoƒbƒNŠÖ”‚ð‹–‰Â‚µCfalse‚ð•Ô‚·D
    427  *  ‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԂŌĂяo‚³‚ê‚éD
     420 *  p_spcbで指定されるシリアルI/Oポートに対して,文字cを送信する.文字
     421 *  を送信レジスタにいれた場合にはtrueを返す.そうでない場合には,送信
     422 *  レジスタが空いたことを通知するコールバック関数を許可し,falseを返す.
     423 *  この関数は,CPUロック状態で呼び出される.
    428424 */
    429425Inline bool_t
     
    440436
    441437/*
    442  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚Ö‚Ì1•¶Žš‘—M
     438 *  シリアルポートへの1文字送信
    443439 */
    444440static ER_BOOL
     
    449445
    450446        /*
    451          *  LF‚Ì‘O‚ÉCR‚𑗐M‚·‚éD
     447         *  LFの前にCRを送信する.
    452448         */
    453449        if (c == '\n' && (p_spcb->ioctl & IOCTL_CRLF) != 0U) {
    454450                /*
    455                  *  ˆÈ‰º‚̃R[ƒh‚͍ċAŒÄo‚µ‚É‚È‚Á‚Ä‚¢‚邪Cˆø”c‚ª'\n'‚̏ꍇ‚É
    456                  *  ˆø”c‚ð'\r'‚Æ‚µ‚ČĂяo‚·‚±‚Æ‚©‚çC‚±‚̍ċAŒÄo‚µ‚Í2‰ñ–Ú‚Ì
    457                  *  ŒÄ‚яo‚µ‚Å•K‚¸Ž~‚Ü‚éD
     451                 *  以下のコードは再帰呼出しになっているが,引数cが'\n'の場合に
     452                 *  引数cを'\r'として呼び出すことから,この再帰呼出しは2回目の
     453                 *  呼び出しで必ず止まる.
    458454                 */
    459455                SVC(rercd = serial_wri_chr(p_spcb, '\r'), rercd);
     
    468464                                                                && serial_snd_chr(p_spcb, c)) {
    469465                /*
    470                  *  ƒVƒŠƒAƒ‹I/OƒfƒoƒCƒX‚Ì‘—MƒŒƒWƒXƒ^‚É•¶Žš‚ð“ü‚ê‚邱‚Ƃɐ¬Œ÷‚µ
    471                  *  ‚½ê‡D
     466                 *  シリアルI/Oデバイスの送信レジスタに文字を入れることに成功し
     467                 *  た場合.
    472468                 */
    473469                buffer_full = false;
     
    475471        else {
    476472                /*
    477                  *  ‘—Mƒoƒbƒtƒ@‚É•¶Žš‚ð“ü‚ê‚éD
     473                 *  送信バッファに文字を入れる.
    478474                 */
    479475                p_spcb->p_spinib->snd_buffer[p_spcb->snd_write_ptr] = c;
     
    491487
    492488/*
    493  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚Ö‚Ì•¶Žš—ñ‘—MiƒT[ƒrƒXƒR[ƒ‹j
     489 *  シリアルポートへの文字列送信(サービスコール)
    494490 */
    495491ER_UINT
     
    501497        ER              ercd, rercd;
    502498
    503         if (sns_dpn()) {                                /* ƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒN */
     499        if (sns_dpn()) {                                /* コンテキストのチェック */
    504500                return(E_CTX);
    505501        }
    506502        if (!(1 <= portid && portid <= TNUM_PORT)) {
    507                 return(E_ID);                           /* ƒ|[ƒg”ԍ†‚̃`ƒFƒbƒN */
     503                return(E_ID);                           /* ポート番号のチェック */
    508504        }
    509505
    510506        p_spcb = get_spcb(portid);
    511         if (!(p_spcb->openflag)) {              /* ƒI[ƒvƒ“Ï‚Ý‚©‚̃`ƒFƒbƒN */
     507        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    512508                return(E_OBJ);
    513509        }
    514         if (p_spcb->errorflag) {                /* ƒGƒ‰[ó‘Ô‚©‚̃`ƒFƒbƒN */
     510        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    515511                return(E_SYS);
    516512        }
    517513
    518         buffer_full = true;                             /* ƒ‹[ƒv‚Ì1‰ñ‚ß‚Íwai_sem‚·‚é */
     514        buffer_full = true;                             /* ループの1回めはwai_semする */
    519515        while (wricnt < len) {
    520516                if (buffer_full) {
     
    536532
    537533/*
    538  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚©‚ç‚Ì1•¶ŽšŽóM
     534 *  シリアルポートからの1文字受信
    539535 */
    540536static bool_t
     
    547543
    548544        /*
    549          *  ŽóMƒoƒbƒtƒ@‚©‚當Žš‚ðŽæ‚èo‚·D
     545         *  受信バッファから文字を取り出す.
    550546         */
    551547        *p_c = p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_read_ptr];
     
    555551
    556552        /*
    557          *  START‚𑗐M‚·‚éD
     553         *  STARTを送信する.
    558554         */
    559555        if (p_spcb->rcv_stopped && p_spcb->rcv_count
     
    573569
    574570/*
    575  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚©‚ç‚Ì•¶Žš—ñŽóMiƒT[ƒrƒXƒR[ƒ‹j
     571 *  シリアルポートからの文字列受信(サービスコール)
    576572 */
    577573ER_UINT
     
    581577        bool_t  buffer_empty;
    582578        uint_t  reacnt = 0U;
    583         char    c = '\0';               /* ƒRƒ“ƒpƒCƒ‰‚ÌŒx‚ð—}Ž~‚·‚邽‚߂ɏ‰Šú‰»‚·‚é */
     579        char    c = '\0';               /* コンパイラの警告を抑止するために初期化する */
    584580        ER              ercd, rercd;
    585581
    586         if (sns_dpn()) {                                /* ƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒN */
     582        if (sns_dpn()) {                                /* コンテキストのチェック */
    587583                return(E_CTX);
    588584        }
    589585        if (!(1 <= portid && portid <= TNUM_PORT)) {
    590                 return(E_ID);                           /* ƒ|[ƒg”ԍ†‚̃`ƒFƒbƒN */
     586                return(E_ID);                           /* ポート番号のチェック */
    591587        }
    592588
    593589        p_spcb = get_spcb(portid);
    594         if (!(p_spcb->openflag)) {              /* ƒI[ƒvƒ“Ï‚Ý‚©‚̃`ƒFƒbƒN */
     590        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    595591                return(E_OBJ);
    596592        }
    597         if (p_spcb->errorflag) {                /* ƒGƒ‰[ó‘Ô‚©‚̃`ƒFƒbƒN */
     593        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    598594                return(E_SYS);
    599595        }
    600596
    601         buffer_empty = true;                    /* ƒ‹[ƒv‚Ì1‰ñ‚ß‚Íwai_sem‚·‚é */
     597        buffer_empty = true;                    /* ループの1回めはwai_semする */
    602598        while (reacnt < len) {
    603599                if (buffer_empty) {
     
    611607
    612608                /*
    613                  *  ƒGƒR[ƒoƒbƒNˆ—D
     609                 *  エコーバック処理.
    614610                 */
    615611                if ((p_spcb->ioctl & IOCTL_ECHO) != 0U) {
     
    633629
    634630/*
    635  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚̐§ŒäiƒT[ƒrƒXƒR[ƒ‹j
     631 *  シリアルポートの制御(サービスコール)
    636632 */
    637633ER
     
    640636        SPCB    *p_spcb;
    641637
    642         if (sns_dpn()) {                                /* ƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒN */
     638        if (sns_dpn()) {                                /* コンテキストのチェック */
    643639                return(E_CTX);
    644640        }
    645641        if (!(1 <= portid && portid <= TNUM_PORT)) {
    646                 return(E_ID);                           /* ƒ|[ƒg”ԍ†‚̃`ƒFƒbƒN */
     642                return(E_ID);                           /* ポート番号のチェック */
    647643        }
    648644
    649645        p_spcb = get_spcb(portid);
    650         if (!(p_spcb->openflag)) {              /* ƒI[ƒvƒ“Ï‚Ý‚©‚̃`ƒFƒbƒN */
     646        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    651647                return(E_OBJ);
    652648        }
    653         if (p_spcb->errorflag) {                /* ƒGƒ‰[ó‘Ô‚©‚̃`ƒFƒbƒN */
     649        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    654650                return(E_SYS);
    655651        }
     
    660656
    661657/*
    662  *  ƒVƒŠƒAƒ‹ƒ|[ƒgó‘Ô‚ÌŽQÆiƒT[ƒrƒXƒR[ƒ‹j
     658 *  シリアルポート状態の参照(サービスコール)
    663659 */
    664660ER
     
    667663        SPCB    *p_spcb;
    668664
    669         if (sns_dpn()) {                                /* ƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒN */
     665        if (sns_dpn()) {                                /* コンテキストのチェック */
    670666                return(E_CTX);
    671667        }
    672668        if (!(1 <= portid && portid <= TNUM_PORT)) {
    673                 return(E_ID);                           /* ƒ|[ƒg”ԍ†‚̃`ƒFƒbƒN */
     669                return(E_ID);                           /* ポート番号のチェック */
    674670        }
    675671
    676672        p_spcb = get_spcb(portid);
    677         if (!(p_spcb->openflag)) {              /* ƒI[ƒvƒ“Ï‚Ý‚©‚̃`ƒFƒbƒN */
     673        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    678674                return(E_OBJ);
    679675        }
    680         if (p_spcb->errorflag) {                /* ƒGƒ‰[ó‘Ô‚©‚̃`ƒFƒbƒN */
     676        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    681677                return(E_SYS);
    682678        }
     
    688684
    689685/*
    690  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚©‚ç‚Ì‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒN
     686 *  シリアルポートからの送信可能コールバック
    691687 */
    692688void
     
    698694        if (p_spcb->rcv_fc_chr != '\0') {
    699695                /*
    700                  *  START/STOP ‚𑗐M‚·‚éD
     696                 *  START/STOP を送信する.
    701697                 */
    702698                (void) sio_snd_chr(p_spcb->p_siopcb, p_spcb->rcv_fc_chr);
     
    705701        else if (!(p_spcb->snd_stopped) && p_spcb->snd_count > 0U) {
    706702                /*
    707                  *  ‘—Mƒoƒbƒtƒ@’†‚©‚當Žš‚ðŽæ‚èo‚µ‚Ä‘—M‚·‚éD
     703                 *  送信バッファ中から文字を取り出して送信する.
    708704                 */
    709705                (void) sio_snd_chr(p_spcb->p_siopcb,
     
    719715        else {
    720716                /*
    721                  *  ‘—M‚·‚ׂ«•¶Žš‚ª‚È‚¢ê‡‚́C‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒN‚ð‹ÖŽ~‚·‚éD
     717                 *  送信すべき文字がない場合は,送信可能コールバックを禁止する.
    722718                 */
    723719                sio_dis_cbr(p_spcb->p_siopcb, SIO_RDY_SND);
     
    726722
    727723/*
    728  *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚©‚ç‚ÌŽóM’Ê’mƒR[ƒ‹ƒoƒbƒN
     724 *  シリアルポートからの受信通知コールバック
    729725 */
    730726void
     
    738734        if ((p_spcb->ioctl & IOCTL_FCSND) != 0U && c == FC_STOP) {
    739735                /*
    740                  *  ‘—M‚ðˆêŽž’âŽ~‚·‚éD‘—M’†‚Ì•¶Žš‚Í‚»‚Ì‚Ü‚Ü‘—M‚·‚éD
     736                 *  送信を一時停止する.送信中の文字はそのまま送信する.
    741737                 */
    742738                p_spcb->snd_stopped = true;
     
    745741                                || (p_spcb->ioctl & IOCTL_FCANY) != 0U)) {
    746742                /*
    747                  *  ‘—M‚ðÄŠJ‚·‚éD
     743                 *  送信を再開する.
    748744                 */
    749745                p_spcb->snd_stopped = false;
     
    763759        else if ((p_spcb->ioctl & IOCTL_FCSND) != 0U && c == FC_START) {
    764760                /*
    765                  *  ‘—M‚ɑ΂µ‚ătƒ[§Œä‚µ‚Ä‚¢‚éê‡CSTART ‚ÍŽÌ‚Ä‚éD
     761                 *  送信に対してフロー制御している場合,START は捨てる.
    766762                 */
    767763        }
    768764        else if (p_spcb->rcv_count == p_spcb->p_spinib->rcv_bufsz) {
    769765                /*
    770                  *  ƒoƒbƒtƒ@ƒtƒ‹‚̏ꍇCŽóM‚µ‚½•¶Žš‚ðŽÌ‚Ä‚éD
     766                 *  バッファフルの場合,受信した文字を捨てる.
    771767                 */
    772768        }
    773769        else {
    774770                /*
    775                  *  ŽóM‚µ‚½•¶Žš‚ðŽóMƒoƒbƒtƒ@‚É“ü‚ê‚éD
     771                 *  受信した文字を受信バッファに入れる.
    776772                 */
    777773                p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_write_ptr] = c;
     
    785781
    786782                /*
    787                  *  STOP‚𑗐M‚·‚éD
     783                 *  STOPを送信する.
    788784                 */
    789785                if ((p_spcb->ioctl & IOCTL_FCRCV) != 0U && !(p_spcb->rcv_stopped)
     
    799795
    800796/*
    801  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚©‚ç‚Ì–¢‘—M•¶Žš‚ÌŽæo‚µ
     797 *  シリアルインタフェースドライバからの未送信文字の取出し
    802798 */
    803799bool_t
     
    806802        SPCB    *p_spcb;
    807803
    808         if (1 <= portid && portid <= TNUM_PORT) {       /* ƒ|[ƒg”ԍ†‚̃`ƒFƒbƒN */
     804        if (1 <= portid && portid <= TNUM_PORT) {       /* ポート番号のチェック */
    809805                p_spcb = get_spcb(portid);
    810                 if (p_spcb->openflag) {                                 /* ƒI[ƒvƒ“Ï‚Ý‚©‚̃`ƒFƒbƒN */
     806                if (p_spcb->openflag) {                                 /* オープン済みかのチェック */
    811807                        if (p_spcb->snd_count > 0U) {
    812808                                *p_c = p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr];
  • UsbWattMeter/trunk/asp_dcre/syssvc/serial.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    44
    55/*
    6  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚̃Rƒ“ƒtƒBƒMƒ
    7 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     6 *  シリアルインタフェースドライバのコンフィギュレーションファイル
    87 */
    98
  • UsbWattMeter/trunk/asp_dcre/syssvc/serial.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo
     44 *              シリアルインタフェースドライバ
    4945 */
    5046
     
    5753
    5854/*
    59  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚Ì—p‚¢‚éƒpƒPƒbƒg
     55 *  シリアルインタフェースドライバの用いるパケット
    6056 */
    6157typedef struct {
    62         uint_t          reacnt;                 /* ŽóMƒoƒbƒtƒ@’†‚Ì•¶Žš” */
    63         uint_t          wricnt;                 /* ‘—Mƒoƒbƒtƒ@’†‚Ì•¶Žš” */
     58        uint_t          reacnt;                 /* 受信バッファ中の文字数 */
     59        uint_t          wricnt;                 /* 送信バッファ中の文字数 */
    6460} T_SERIAL_RPOR;
    6561
    6662/*
    67  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚̏‰Šú‰»ƒ‹[ƒ`ƒ“
     63 *  シリアルインタフェースドライバの初期化ルーチン
    6864 */
    6965extern void             serial_initialize(intptr_t exinf) throw();
    7066
    7167/*
    72  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚©‚ç‚Ì–¢‘—M•¶Žš‚ÌŽæo‚µ
     68 *  シリアルインタフェースドライバからの未送信文字の取出し
    7369 */
    7470extern bool_t   serial_get_chr(ID portid, char *p_c) throw();
    7571
    7672/*
    77  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚̃T[ƒrƒXƒR[ƒ‹
     73 *  シリアルインタフェースドライバのサービスコール
    7874 */
    7975extern ER               serial_opn_por(ID portid) throw();
     
    8581
    8682/*
    87  *  ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚Ì“®ì§Œä—p‚Ì‚½‚߂̒萔
     83 *  シリアルインタフェースドライバの動作制御用のための定数
    8884 *
    89  *  ˆÈ‰º‚̒萔‚́Cƒrƒbƒg–ˆ‚ɘ_—˜a‚ð‚Æ‚Á‚Ä—p‚¢‚éD
     85 *  以下の定数は,ビット毎に論理和をとって用いる.
    9086 */
    91 #define IOCTL_NULL      0U                      /* Žw’è‚È‚µ */
    92 #define IOCTL_ECHO      0x0001U         /* ŽóM‚µ‚½•¶Žš‚ðƒGƒR[ƒoƒbƒN */
    93 #define IOCTL_CRLF      0x0010U         /* LF‚𑗐M‚·‚é‘O‚ÉCR‚ð•t‰Á */
    94 #define IOCTL_FCSND     0x0100U         /* ‘—M‚ɑ΂µ‚ătƒ[§Œä‚ðs‚¤ */
    95 #define IOCTL_FCANY     0x0200U         /* ‚ǂ̂悤‚È•¶Žš‚Å‚à‘—MÄŠJ */
    96 #define IOCTL_FCRCV     0x0400U         /* ŽóM‚ɑ΂µ‚ătƒ[§Œä‚ðs‚¤ */
     87#define IOCTL_NULL      0U                      /* 指定なし */
     88#define IOCTL_ECHO      0x0001U         /* 受信した文字をエコーバック */
     89#define IOCTL_CRLF      0x0010U         /* LFを送信する前にCRを付加 */
     90#define IOCTL_FCSND     0x0100U         /* 送信に対してフロー制御を行う */
     91#define IOCTL_FCANY     0x0200U         /* どのような文字でも送信再開 */
     92#define IOCTL_FCRCV     0x0400U         /* 受信に対してフロー制御を行う */
    9793
    9894#ifdef __cplusplus
  • UsbWattMeter/trunk/asp_dcre/syssvc/syslog.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; 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  *              ƒVƒXƒeƒ€ƒƒO‹@”\
     44 *              システムログ機能
    4945 */
    5046
     
    5753
    5854/*
    59  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     55 *  トレースログマクロのデフォルト定義
    6056 */
    6157#ifndef LOG_SYSLOG_WRI_LOG_ENTER
     
    9288
    9389/*
    94  *  Œ»Ý‚̃VƒXƒeƒ€Žž
     90 *  現在のシステム時刻
    9591 *
    96  *  ƒƒOŽž‚ðŽæ‚èo‚·‚½‚߂ɁC‚â‚Þ‚È‚­CƒJ[ƒlƒ‹‚Ì“à•”•Ï”‚ðŽQÆ‚µ‚Ä‚¢
    97  *  ‚éD
     92 *  ログ時刻を取り出すために,やむなく,カーネルの内部変数を参照してい
     93 *  る.
    9894 */
    9995extern ulong_t  _kernel_current_time;
    10096
    10197/*
    102  *  ƒƒOƒoƒbƒtƒ@‚Æ‚»‚ê‚ɃAƒNƒZƒX‚·‚邽‚߂̃|ƒCƒ“ƒ^
    103  */
    104 static SYSLOG   syslog_buffer[TCNT_SYSLOG_BUFFER];      /* ƒƒOƒoƒbƒtƒ@ */
    105 static uint_t   syslog_count;                   /* ƒƒOƒoƒbƒtƒ@’†‚̃ƒO‚̐” */
    106 static uint_t   syslog_head;                    /* æ“ª‚̃ƒO‚ÌŠi”[ˆÊ’u */
    107 static uint_t   syslog_tail;                    /* ŽŸ‚̃ƒO‚ÌŠi”[ˆÊ’u */
    108 static uint_t   syslog_lost;                    /* Ž¸‚í‚ꂽƒƒO‚̐” */
    109 
    110 /*
    111  *  o—Í‚·‚ׂ«ƒƒOî•ñ‚̏d—v“xiƒrƒbƒgƒ}ƒbƒvj
    112  */
    113 static uint_t   syslog_logmask;                 /* ƒƒOƒoƒbƒtƒ@‚É‹L˜^‚·‚ׂ«d—v“x */
    114 static uint_t   syslog_lowmask_not;             /* ’჌ƒxƒ‹o—Í‚·‚ׂ«d—v“xi”½“]j*/
    115 
    116 /*
    117  *  ƒVƒXƒeƒ€ƒƒO‹@”\‚̏‰Šú‰»
     98 *  ログバッファとそれにアクセスするためのポインタ
     99 */
     100static SYSLOG   syslog_buffer[TCNT_SYSLOG_BUFFER];      /* ログバッファ */
     101static uint_t   syslog_count;                   /* ログバッファ中のログの数 */
     102static uint_t   syslog_head;                    /* 先頭のログの格納位置 */
     103static uint_t   syslog_tail;                    /* 次のログの格納位置 */
     104static uint_t   syslog_lost;                    /* 失われたログの数 */
     105
     106/*
     107 *  出力すべきログ情報の重要度(ビットマップ)
     108 */
     109static uint_t   syslog_logmask;                 /* ログバッファに記録すべき重要度 */
     110static uint_t   syslog_lowmask_not;             /* 低レベル出力すべき重要度(反転)*/
     111
     112/*
     113 *  システムログ機能の初期化
    118114 */
    119115void
     
    129125
    130126/*
    131  *  ƒƒOî•ñ‚̏o—Í
     127 *  ログ情報の出力
    132128 *
    133  *  CPUƒƒbƒNó‘Ô‚âŽÀsƒRƒ“ƒeƒLƒXƒg‚É‚æ‚炸“®ì‚Å‚«‚é‚悤‚ÉŽÀ‘•‚µ‚Ä‚ ‚éD
     129 *  CPUロック状態や実行コンテキストによらず動作できるように実装してある.
    134130 */
    135131ER
     
    142138
    143139        /*
    144          *  ƒƒOŽž‚̐ݒè
     140         *  ログ時刻の設定
    145141         */
    146142        ((SYSLOG *) p_syslog)->logtim = _kernel_current_time;
    147143
    148144        /*
    149          *  ƒƒOƒoƒbƒtƒ@‚É‹L˜^
     145         *  ログバッファに記録
    150146         */
    151147        if ((syslog_logmask & LOG_MASK(prio)) != 0U) {
     
    165161
    166162        /*
    167          *  ’჌ƒxƒ‹o—Í
     163         *  低レベル出力
    168164         */
    169165        if (((~syslog_lowmask_not) & LOG_MASK(prio)) != 0U) {
     
    178174
    179175/*
    180  *  ƒƒOƒoƒbƒtƒ@‚©‚ç‚̓Ǐo‚µ
     176 *  ログバッファからの読出し
    181177 *
    182  *  CPUƒƒbƒNó‘Ô‚âŽÀsƒRƒ“ƒeƒLƒXƒg‚É‚æ‚炸“®ì‚Å‚«‚é‚悤‚ÉŽÀ‘•‚µ‚Ä‚ ‚éD
     178 *  CPUロック状態や実行コンテキストによらず動作できるように実装してある.
    183179 */
    184180ER_UINT
     
    192188
    193189        /*
    194          *  ƒƒOƒoƒbƒtƒ@‚©‚ç‚ÌŽæo‚µ
     190         *  ログバッファからの取出し
    195191         */
    196192        if (syslog_count > 0U) {
     
    214210
    215211/*
    216  *  o—Í‚·‚ׂ«ƒƒOî•ñ‚̏d—v“x‚̐ݒè
     212 *  出力すべきログ情報の重要度の設定
    217213 */
    218214ER
     
    227223
    228224/*
    229  *  ƒƒOƒoƒbƒtƒ@‚̏ó‘ÔŽQÆ
     225 *  ログバッファの状態参照
    230226 */
    231227ER
  • UsbWattMeter/trunk/asp_dcre/syssvc/syslog.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    44
    55/*
    6  *              ƒVƒXƒeƒ€ƒƒO‹@”\‚̃Rƒ“ƒtƒBƒMƒ
    7 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     6 *              システムログ機能のコンフィギュレーションファイル
    87 */
    98
  • UsbWattMeter/trunk/asp_dcre/syssvc/syslog.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
     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 *      免責すること.
    3733 *
    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
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *              ƒVƒXƒeƒ€ƒƒO‹@”\
     44 *              システムログ機能
    4945 */
    5046
     
    5753
    5854/*
    59  *  ƒVƒXƒeƒ€ƒƒOo—Í‚ðs‚¤‚½‚ß‚Ì’è‹`
     55 *  システムログ出力を行うための定義
    6056 */
    6157#include <t_syslog.h>
    6258
    6359/*
    64  *  ƒƒOƒoƒbƒtƒ@‚Æ‚»‚ê‚ɃAƒNƒZƒX‚·‚邽‚߂̃|ƒCƒ“ƒ^
     60 *  ログバッファとそれにアクセスするためのポインタ
    6561 */
    6662#ifndef TCNT_SYSLOG_BUFFER
    67 #define TCNT_SYSLOG_BUFFER      32              /* ƒƒOƒoƒbƒtƒ@‚̃TƒCƒY */
     63#define TCNT_SYSLOG_BUFFER      32              /* ログバッファのサイズ */
    6864#endif /* TCNT_SYSLOG_BUFFER */
    6965
    7066/*
    71  *  ƒVƒXƒeƒ€ƒƒO‹@”\‚̏‰Šú‰»
     67 *  システムログ機能の初期化
    7268 */
    7369extern void     syslog_initialize(intptr_t exinf) throw();
    7470
    7571/*
    76  *  ƒƒOî•ñ‚̏o—Í
     72 *  ログ情報の出力
    7773 */
    7874extern ER       syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) throw();
    7975
    8076/*
    81  *  ƒƒOƒoƒbƒtƒ@‚©‚ç‚̃ƒOî•ñ‚̓Ǐo‚µ
     77 *  ログバッファからのログ情報の読出し
    8278 */
    8379extern ER_UINT  syslog_rea_log(SYSLOG *p_syslog) throw();
    8480
    8581/*
    86  *  o—Í‚·‚ׂ«ƒƒOî•ñ‚̏d—v“x‚̐ݒè
     82 *  出力すべきログ情報の重要度の設定
    8783 */
    8884extern ER       syslog_msk_log(uint_t logmask, uint_t lowmask) throw();
    8985
    9086/*
    91  *  ƒƒOƒoƒbƒtƒ@‚̏ó‘ÔŽQÆ
     87 *  ログバッファの状態参照
    9288 */
    9389extern ER       syslog_ref_log(T_SYSLOG_RLOG *pk_rlog) throw();
  • UsbWattMeter/trunk/asp_dcre/syssvc/vasyslog.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4541
    4642/*
    47  *              ‰Â•Ï”ˆø”‚̃VƒXƒeƒ€ƒƒOƒ‰ƒCƒuƒ‰ƒŠ
     43 *              可変数引数のシステムログライブラリ
    4844 */
    4945
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/asm_config.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11/*
    2  *  asm_config.inc ¶¬ƒvƒƒWƒFƒNƒg—pƒRƒ“ƒtƒBƒMƒ
    3 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     2 *  asm_config.inc 生成プロジェクト用コンフィギュレーションファイル
    43 *
    5  *  ƒRƒ“ƒtƒBƒMƒ
    6 ƒŒ[ƒVƒ‡ƒ“‚͍s‚È‚í‚È‚¢‚½‚ß‹óƒtƒ@ƒCƒ‹‚Æ‚·‚é.
     4 *  コンフィギュレーションは行なわないため空ファイルとする.
    75 */
    86
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/grsakura.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    66 *  Copyright (C) 2010 by Witz Corporation, JAPAN
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
    4238 */
    4339
    44 /* GR-SAKURA—pƒwƒbƒ_ƒtƒ@ƒ‹ */
     40/* GR-SAKURA用ヘッダファル */
    4541
    4642#ifndef TOPPERS_GRSAKURA_H
     
    4945
    5046/*
    51  *  MCUˆË‘¶î•ñ‚̓ǂݍž‚Ý
     47 *  MCU依存情報の読み込み
    5248 */
    5349#ifdef __RX
     
    5854
    5955/*
    60  *  ƒNƒƒbƒNÝ’è
     56 *  クロック設定
    6157 */
    6258
    6359/*
    64  *  ƒVƒXƒeƒ€ƒNƒƒbƒNICLK(kHz)
     60 *  システムクロックICLK(kHz)
    6561 *
    66  *  CPUCDTCCDMACACETHERCCEDMACCROMCRAM—p
     62 *  CPU,DTC,DMACA,ETHERC,EDMAC,ROM,RAM用
    6763 * 
    6864 */
     
    7066
    7167/*
    72  *  ƒNƒƒbƒNPCLK(kHz)
     68 *  クロックPCLK(kHz)
    7369 *
    74  *  ƒ^ƒCƒ}CƒVƒŠƒAƒ‹‚È‚ÇŽü•Óƒ‚ƒWƒ
    75 [ƒ‹—p
     70 *  タイマ,シリアルなど周辺モジュール用
    7671 */
    7772#define FREQ_PCLK  (48000U)
     
    7974
    8075/*
    81  *  ƒ{[ƒŒ[ƒgÝ’è
     76 *  ボーレート設定
    8277 */
    8378#define BAUD_19200BPS           UINT_C( 78 )
     
    9085
    9186/*
    92  *  ƒNƒƒbƒNƒ\[ƒX
     87 *  クロックソース
    9388 */
    9489#define UART_CLKSRC                     CLK_F1
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    66$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    77$
    8 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17 $      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22 $      ‚ƁD
    23 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28 $        •ñ‚·‚邱‚ƁD
    29 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33 $      –Ɛӂ·‚邱‚ƁD
     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$      免責すること.
    3430$
    35 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39 ‚̐ӔC‚𕉂í‚È‚¢D
     31本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35の責任を負わない.
    4036$
    4137$  @(#) $Id$
     
    4339
    4440$
    45 ƒ^[ƒQƒbƒgˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiGR-SAKURA—pj
     41ターゲット依存テンプレート(GR-SAKURA用)
    4642$
    4743
     
    5349
    5450$
    55 $  RX630ˆË‘¶•”‚̓ǂݍž‚Ý
     51$  RX630依存部の読み込み
    5652$
    5753$INCLUDE "rx630_ccrx/rx630.tf"$
    5854
    5955$
    60 ƒAƒZƒ“ƒuƒŠƒtƒ@ƒCƒ‹—p‚̃wƒbƒ_ƒtƒ@ƒCƒ‹‚̐¶¬
     56アセンブリファイル用のヘッダファイルの生成
    6157$
    6258$INCLUDE "target_asm_config.tf"$
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_asm_config.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $     asm_config.inc ¶¬—p
    3 $     ƒpƒX2‚̃^[ƒQƒbƒgˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiGR-SAKURA—pj
     2$     asm_config.inc 生成用
     3$     パス2のターゲット依存テンプレート(GR-SAKURA用)
    44$
    55$     Copyright (C) 2010 by Witz Corporation, JAPAN
     
    88
    99$
    10 ƒvƒƒZƒbƒTˆË‘¶‚̃eƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     10プロセッサ依存のテンプレートファイルのインクルード
    1111$
    1212$INCLUDE"rx630_ccrx/prc_asm_config.tf"$
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_ccrx_echonet.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    88$  Copyright (C) 2014 Cores Co., Ltd. Japan
    99$
    10 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19 $      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24 $      ‚ƁD
    25 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30 $        •ñ‚·‚邱‚ƁD
    31 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35 $      –Ɛӂ·‚邱‚ƁD
     10$  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12$  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14$      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15$      スコード中に含まれていること.
     16$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17$      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18$      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19$      の無保証規定を掲載すること.
     20$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21$      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22$      と.
     23$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24$        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26$        報告すること.
     27$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28$      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29$      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30$      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31$      免責すること.
    3632$
    37 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41 ‚̐ӔC‚𕉂í‚È‚¢D
     33本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37の責任を負わない.
    4238$
    4339$  @(#) $Id$
     
    4541
    4642$
    47 ƒ^[ƒQƒbƒgˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiGR-SAKURA—pj
     43ターゲット依存テンプレート(GR-SAKURA用)
    4844$
    4945
     
    5551
    5652$
    57 $  RX630ˆË‘¶•”‚̓ǂݍž‚Ý
     53$  RX630依存部の読み込み
    5854$
    5955$INCLUDE "rx630_ccrx/rx630.tf"$
    6056
    6157$
    62 ƒAƒZƒ“ƒuƒŠƒtƒ@ƒCƒ‹—p‚̃wƒbƒ_ƒtƒ@ƒCƒ‹‚̐¶¬
     58アセンブリファイル用のヘッダファイルの生成
    6359$
    6460$INCLUDE "target_asm_config.tf"$
    6561
    66 $ ECHONET Liteƒ~ƒhƒ‹ƒEƒFƒATFƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     62$ ECHONET LiteミドルウェアTFファイルのインクルード
    6763$INCLUDE "../../echonet/echonet.tf"$
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_ccrx_ecnl_lwip.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    88$  Copyright (C) 2014 Cores Co., Ltd. Japan
    99$
    10 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19 $      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24 $      ‚ƁD
    25 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30 $        •ñ‚·‚邱‚ƁD
    31 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35 $      –Ɛӂ·‚邱‚ƁD
     10$  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12$  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14$      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15$      スコード中に含まれていること.
     16$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17$      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18$      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19$      の無保証規定を掲載すること.
     20$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21$      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22$      と.
     23$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24$        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26$        報告すること.
     27$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28$      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29$      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30$      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31$      免責すること.
    3632$
    37 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41 ‚̐ӔC‚𕉂í‚È‚¢D
     33本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37の責任を負わない.
    4238$
    4339$  @(#) $Id$
     
    4541
    4642$
    47 ƒ^[ƒQƒbƒgˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiGR-SAKURA—pj
     43ターゲット依存テンプレート(GR-SAKURA用)
    4844$
    4945
     
    5551
    5652$
    57 $  RX630ˆË‘¶•”‚̓ǂݍž‚Ý
     53$  RX630依存部の読み込み
    5854$
    5955$INCLUDE "rx630_ccrx/rx630.tf"$
    6056
    6157$
    62 ƒAƒZƒ“ƒuƒŠƒtƒ@ƒCƒ‹—p‚̃wƒbƒ_ƒtƒ@ƒCƒ‹‚̐¶¬
     58アセンブリファイル用のヘッダファイルの生成
    6359$
    6460$INCLUDE "target_asm_config.tf"$
    6561
    66 $ ECHONET Liteƒ~ƒhƒ‹ƒEƒFƒATFƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     62$ ECHONET LiteミドルウェアTFファイルのインクルード
    6763$INCLUDE "../../ecnl_lwip/echonet.tf"$
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_cfg1_out.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    11/*
    2  *              cfg1_out.c‚̃Šƒ“ƒN‚É•K—v‚ȃXƒ^ƒu‚Ì’è‹`
     2 *              cfg1_out.cのリンクに必要なスタブの定義
    33 */
    44
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_check.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    66$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    77$
    8 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17 $      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22 $      ‚ƁD
    23 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28 $        •ñ‚·‚邱‚ƁD
    29 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33 $      –Ɛӂ·‚邱‚ƁD
     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$      免責すること.
    3430$
    35 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39 ‚̐ӔC‚𕉂í‚È‚¢D
     31本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35の責任を負わない.
    4036$
    4137$  @(#) $Id$
     
    4339
    4440$
    45 $     ƒpƒX3‚̃^[ƒQƒbƒgˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiGR-SAKURA—pj
     41$     パス3のターゲット依存テンプレート(GR-SAKURA用)
    4642$
    4743
    4844$
    49 ƒpƒX3‚̃vƒƒZƒbƒTˆË‘¶‚̃eƒ“ƒvƒŒ[ƒg‚̃Cƒ“ƒNƒ‹[ƒh
     45パス3のプロセッサ依存のテンプレートのインクルード
    5046$
    5147$INCLUDE"rx630_ccrx/prc_check.tf"$
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_config.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    1111 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    15  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    17  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—p
    22  *      ŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    24  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    26  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27  *      ‚ƁD
    28  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33  *        •ñ‚·‚邱‚ƁD
    34  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38  *      –Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18 *      スコード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22 *      の無保証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25 *      と.
     26 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     28 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29 *        報告すること.
     30 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34 *      免責すること.
    3935 *
    40  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44  *  ‚̐ӔC‚𕉂í‚È‚¢D
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    4541 *
    4642 *  @(#) $Id$
     
    4844
    4945/*
    50  *      ƒ^[ƒQƒbƒgƒVƒXƒeƒ€ˆË‘¶ƒ‚ƒWƒ
    51 [ƒ‹iGR-SAKURA—pj
     46 *      ターゲットシステム依存モジュール(GR-SAKURA用)
    5247 */
    5348
     
    5853
    5954/*
    60  *  ƒ^[ƒQƒbƒgƒVƒXƒeƒ€ˆË‘¶ ‰Šú‰»ƒ‹[ƒ`ƒ“
     55 *  ターゲットシステム依存 初期化ルーチン
    6156 */
    6257void
     
    6459{
    6560        /*
    66          *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»
     61         *  プロセッサ依存の初期化
    6762         */
    6863        prc_initialize();
    6964
    70         /* IOƒ|[ƒg‰Šú‰» */
    71         /* P25‚ðo—̓|[ƒg‚É‚·‚é */
     65        /* IOポート初期化 */
     66        /* P25を出力ポートにする */
    7267        sil_wrb_mem((uint8_t *)PORT2_PDR_ADDR,
    7368                sil_reb_mem((uint8_t *)PORT2_PDR_ADDR) | PORT_PDR_B5_BIT);
    74         /* PA0, PA1, PA2, PA6‚ðo—̓|[ƒg‚É‚·‚é */
     69        /* PA0, PA1, PA2, PA6を出力ポートにする */
    7570        sil_wrb_mem((uint8_t *)PORTA_PDR_ADDR,
    7671                sil_reb_mem((uint8_t *)PORTA_PDR_ADDR) | PORT_PDR_B0_BIT | PORT_PDR_B1_BIT | PORT_PDR_B2_BIT | PORT_PDR_B6_BIT);
    77         /* PA7‚ð“ü—̓|[ƒg‚É‚·‚é */
     72        /* PA7を入力ポートにする */
    7873        sil_wrb_mem((uint8_t *)PORTA_PDR_ADDR,
    7974                sil_reb_mem((uint8_t *)PORTA_PDR_ADDR) & ~PORT_PDR_B7_BIT);
    8075
    8176        /*
    82          *  ƒVƒŠƒAƒ‹ƒ|[ƒg‚̐ݒè
     77         *  シリアルポートの設定
    8378         */
    8479        rx630_uart_init(TARGET_PUTC_PORTID, UART_BAUDRATE, UART_CLKSRC);
    8580
    86         /* ƒ|[ƒgP20‚ðTxD0, ƒ|[ƒgP21‚ðRxD0‚É */
     81        /* ポートP20をTxD0, ポートP21をRxD0に */
    8782        sil_wrb_mem((uint8_t *)PORT2_PMR_ADDR, 0x03);
    8883
    89         /* ƒf[ƒ^ƒfƒBƒŒƒNƒVƒ‡ƒ“ƒŒƒWƒXƒ^(PDR)‚̐ݒè P21(RxD0)‚ð“ü—̓|[ƒg‚É‚·‚é */
     84        /* データディレクションレジスタ(PDR)の設定 P21(RxD0)を入力ポートにする */
    9085        sil_wrb_mem((uint8_t *)PORT2_PDR_ADDR,
    9186                sil_reb_mem((uint8_t *)PORT2_PDR_ADDR) & ~PORT_PDR_B1_BIT);
    9287
    93         /* ƒf[ƒ^ƒfƒBƒŒƒNƒVƒ‡ƒ“ƒŒƒWƒXƒ^(PDR)‚̐ݒè P20(TxD0)‚ðo—̓|[ƒg‚É‚·‚é */
     88        /* データディレクションレジスタ(PDR)の設定 P20(TxD0)を出力ポートにする */
    9489        sil_wrb_mem((uint8_t *)PORT2_PDR_ADDR,
    9590                sil_reb_mem((uint8_t *)PORT2_PDR_ADDR) | PORT_PDR_B0_BIT);
    9691
    97         /* ƒ|[ƒgP40`P47‚ðŽü•Ó‹@Ší‚É */
     92        /* ポートP40〜P47を周辺機器に */
    9893        sil_wrb_mem((uint8_t *)PORT4_PMR_ADDR, 0xFF);
    9994
    100         /* ƒ|[ƒgP40`P47‚ð“ü—̓|[ƒg‚É‚·‚é */
     95        /* ポートP40〜P47を入力ポートにする */
    10196        sil_wrb_mem((uint8_t *)PORT4_PDR_ADDR, 0x00);
    10297
    103         /* ‘‚«ž‚݃vƒƒeƒNƒgƒŒƒWƒXƒ^‚̐ݒè PFSWEƒrƒbƒg‚ւ̏‘‚«ž‚Ý‚ð‹–‰Â */
     98        /* 書き込みプロテクトレジスタの設定 PFSWEビットへの書き込みを許可 */
    10499        sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x00);
    105         /* ‘‚«ž‚݃vƒƒeƒNƒgƒŒƒWƒXƒ^‚̐ݒè PxxFSƒŒƒWƒXƒ^‚ւ̏‘‚«ž‚Ý‚ð‹–‰Â */
     100        /* 書き込みプロテクトレジスタの設定 PxxFSレジスタへの書き込みを許可 */
    106101        sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x40);
    107102
    108         /* P21’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ RXD0‚Æ‚·‚é */
     103        /* P21端子機能制御レジスタ RXD0とする */
    109104        sil_wrb_mem((uint8_t *)MPC_P21PFS_ADDR, 0x0a);
    110         /* P20’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ TXD0‚Æ‚·‚é */
     105        /* P20端子機能制御レジスタ TXD0とする */
    111106        sil_wrb_mem((uint8_t *)MPC_P20PFS_ADDR, 0x0a);
    112107
    113         /* P40’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN000‚Æ‚·‚é */
     108        /* P40端子機能制御レジスタ アナログ入力AN000とする */
    114109        sil_wrb_mem((uint8_t *)MPC_P40PFS_ADDR, 0x80);
    115         /* P41’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN001‚Æ‚·‚é */
     110        /* P41端子機能制御レジスタ アナログ入力AN001とする */
    116111        sil_wrb_mem((uint8_t *)MPC_P41PFS_ADDR, 0x80);
    117         /* P42’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN002‚Æ‚·‚é */
     112        /* P42端子機能制御レジスタ アナログ入力AN002とする */
    118113        sil_wrb_mem((uint8_t *)MPC_P42PFS_ADDR, 0x80);
    119         /* P43’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN003‚Æ‚·‚é */
     114        /* P43端子機能制御レジスタ アナログ入力AN003とする */
    120115        sil_wrb_mem((uint8_t *)MPC_P43PFS_ADDR, 0x80);
    121         /* P44’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN004‚Æ‚·‚é */
     116        /* P44端子機能制御レジスタ アナログ入力AN004とする */
    122117        sil_wrb_mem((uint8_t *)MPC_P44PFS_ADDR, 0x80);
    123         /* P45’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN005‚Æ‚·‚é */
     118        /* P45端子機能制御レジスタ アナログ入力AN005とする */
    124119        sil_wrb_mem((uint8_t *)MPC_P45PFS_ADDR, 0x80);
    125         /* P46’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN006‚Æ‚·‚é */
     120        /* P46端子機能制御レジスタ アナログ入力AN006とする */
    126121        sil_wrb_mem((uint8_t *)MPC_P46PFS_ADDR, 0x80);
    127         /* P47’[Žq‹@”\§ŒäƒŒƒWƒXƒ^ ƒAƒiƒƒO“ü—ÍAN007‚Æ‚·‚é */
     122        /* P47端子機能制御レジスタ アナログ入力AN007とする */
    128123        sil_wrb_mem((uint8_t *)MPC_P47PFS_ADDR, 0x80);
    129124
    130         /* ‘‚«ž‚݃vƒƒeƒNƒgƒŒƒWƒXƒ^‚ÌÝ’è ‘‚«ž‚Ý‚ð‹ÖŽ~ */
     125        /* 書き込みプロテクトレジスタの設定 書き込みを禁止 */
    131126        sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x80);
    132127}
     
    134129
    135130/*
    136  *  ƒ^[ƒQƒbƒgƒVƒXƒeƒ€‚̏I—¹ƒ‹[ƒ`ƒ“
     131 *  ターゲットシステムの終了ルーチン
    137132 */
    138133void
     
    140135{
    141136        /*
    142          *      ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹ˆ—
     137         *      プロセッサ依存の終了処理
    143138         */
    144139        prc_terminate();
     
    149144
    150145/*
    151  *  ƒVƒXƒeƒ€ƒƒO‚̒჌ƒxƒ‹o—Í‚Ì‚½‚ß‚Ì•¶Žšo—Í
     146 *  システムログの低レベル出力のための文字出力
    152147 */
    153148void
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_config.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1010 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1111 *
    12  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    14  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    16  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    17  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—p
    21  *      ŽÒƒ}ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    23  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    25  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    26  *      ‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    30  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    32  *        •ñ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    34  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    35  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    36  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    37  *      –Ɛӂ·‚邱‚ƁD
     12 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17 *      スコード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21 *      の無保証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24 *      と.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28 *        報告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33 *      免責すること.
    3834 *
    39  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    40  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    41  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    42  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    43  *  ‚̐ӔC‚𕉂í‚È‚¢D
     35 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39 *  の責任を負わない.
    4440 *
    4541 *  @(#) $Id$
     
    4743
    4844/*
    49  *              ƒ^[ƒQƒbƒgˆË‘¶ƒ‚ƒWƒ
    50 [ƒ‹iGR-SAKURA—pj
     45 *              ターゲット依存モジュール(GR-SAKURA用)
    5146 *
    52  *  ƒJ[ƒlƒ‹‚̃^[ƒQƒbƒgˆË‘¶•”‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹Dkernel_impl.h‚̃^[
    53  *  ƒQƒbƒgˆË‘¶•”‚̈ʒu•t‚¯‚Æ‚È‚éD
     47 *  カーネルのターゲット依存部のインクルードファイル.kernel_impl.hのター
     48 *  ゲット依存部の位置付けとなる.
    5449 */
    5550
     
    5853
    5954/*
    60  *  ƒ^[ƒQƒbƒgƒVƒXƒeƒ€‚̃n[ƒhƒEƒFƒAŽ‘Œ¹‚Ì’è‹`
     55 *  ターゲットシステムのハードウェア資源の定義
    6156 */
    6257#include "grsakura.h"
     
    6459
    6560/*
    66  *  ƒfƒtƒHƒ‹ƒg‚Ì”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æ‚Ì’è‹`
     61 *  デフォルトの非タスクコンテキスト用のスタック領域の定義
    6762 *
    68  *  ƒXƒ^ƒbƒNƒTƒCƒY‚ð•ÏX‚·‚éê‡‚Í, sectrx.inc‚Ì_DEFAULT_ISTACK
    69  *  ƒ‰ƒxƒ‹‚̈ʒu‚É‚ ‚é.blkb–½—߂̃TƒCƒY‚Æ, ˆÈ‰ºDEFAULT_ISTKSZ‚Ì
    70  *  ƒTƒCƒY‚ð‡‚í‚¹‚Ä“¯‚¶’l‚ɕύX‚·‚邱‚Æ.
     63 *  スタックサイズを変更する場合は, sectrx.incの_DEFAULT_ISTACK
     64 *  ラベルの位置にある.blkb命令のサイズと, 以下DEFAULT_ISTKSZの
     65 *  サイズを合わせて同じ値に変更すること.
    7166 */
    7267#ifndef _MSC_VER
     
    7974
    8075/*
    81  *  ƒ^[ƒQƒbƒgˆË‘¶‚Ì•¶Žšo—Í‚ÉŽg—p‚·‚éƒ|[ƒg‚Ì’è‹` 
     76 *  ターゲット依存の文字出力に使用するポートの定義 
    8277 */
    8378#define TARGET_PUTC_PORTID      ( 1 )
     
    8782
    8883/*
    89  *  ƒ^[ƒQƒbƒgƒVƒXƒeƒ€ˆË‘¶‚̏‰Šú‰»
     84 *  ターゲットシステム依存の初期化
    9085 */
    9186extern void     target_initialize( void );
    9287
    9388/*
    94  *  ƒ^[ƒQƒbƒgƒVƒXƒeƒ€‚̏I—¹
     89 *  ターゲットシステムの終了
    9590 *
    96  *  ƒVƒXƒeƒ€‚ðI—¹‚·‚鎞‚ÉŽg‚¤D
     91 *  システムを終了する時に使う.
    9792 */
    9893extern void     target_exit( void )     NoReturn;
     
    10297
    10398/*
    104  *  ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    105 [ƒ‹iRX630—pj
     99 *  プロセッサ依存モジュール(RX630用)
    106100 */
    107101#ifdef __RX
     
    112106
    113107/*
    114  *  ƒgƒŒ[ƒXƒƒO‚ÉŠÖ‚·‚éÝ’è
     108 *  トレースログに関する設定
    115109 */
    116110#define TCNT_TRACE_BUFFER       ( 32 )
    117111
    118112/*
    119  *  ƒgƒŒ[ƒXƒƒOo—Í‚·‚é‰ÓŠ‚Ì‘I‘ð
    120  *    ƒƒOo—Í‚·‚é‰ÓŠ‚ð1‚Å’è‹`
    121  *    ƒƒOo—Í‚µ‚È‚¢‰ÓŠ‚ð0‚Å’è‹`
     113 *  トレースログ出力する箇所の選択
     114 *    ログ出力する箇所を1で定義
     115 *    ログ出力しない箇所を0で定義
    122116 */
    123117#ifdef TOPPERS_ENABLE_TRACE
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_def.csv

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_kernel.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1212 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1313 *
    14  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    15  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    16  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    17  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    18  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    19  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    20  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—p
    23  *      ŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    25  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    27  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    28  *      ‚ƁD
    29  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    30 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    31 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    32  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    33  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    34  *        •ñ‚·‚邱‚ƁD
    35  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    36  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    37  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    38  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    39  *      –Ɛӂ·‚邱‚ƁD
     14 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     15 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     16 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     17 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     18 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     19 *      スコード中に含まれていること.
     20 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     21 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     22 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     23 *      の無保証規定を掲載すること.
     24 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     25 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     26 *      と.
     27 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     28 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     29 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     30 *        報告すること.
     31 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     32 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     33 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     34 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     35 *      免責すること.
    4036 *
    41  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    42  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    43  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    44  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    45  *  ‚̐ӔC‚𕉂í‚È‚¢D
     37 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     38 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     39 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     40 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     41 *  の責任を負わない.
    4642 *
    4743 *  @(#) $Id$
     
    4945
    5046/*
    51  *  ƒJ[ƒlƒ‹‚̃^[ƒQƒbƒgˆË‘¶’è‹`iGR-SAKURA—pj
     47 *  カーネルのターゲット依存定義(GR-SAKURA用)
    5248 */
    5349
    5450/*
    55  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ckernel.h‚ŃCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@
    56  *  ƒCƒ‹‚©‚ç’¼ÚƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚Æ‚Í‚È‚¢D‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh
    57  *  ‚·‚é‘O‚ɁCt_stddef.h‚ªƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚é‚̂ŁC‚»‚ê‚ç‚Ɉˑ¶‚µ‚Ä‚à‚æ
    58  *  ‚¢D
     51 *  このインクルードファイルは,kernel.hでインクルードされる.他のファ
     52 *  イルから直接インクルードすることはない.このファイルをインクルード
     53 *  する前に,t_stddef.hがインクルードされるので,それらに依存してもよ
     54 *  い.
    5955 */
    6056
     
    6460
    6561/*
    66  *  ƒvƒƒZƒbƒT‚Å‹¤’Ê‚È’è‹`
     62 *  プロセッサで共通な定義
    6763 */
    6864#ifdef __RX
     
    7369
    7470/*
    75  *  ƒTƒ|[ƒg‚·‚é‹@”\‚Ì’è‹`
     71 *  サポートする機能の定義
    7672 */
    77 #define TOPPERS_TARGET_SUPPORT_GET_UTM          /* get_utm‚ðƒTƒ|[ƒg‚·‚é */
     73#define TOPPERS_TARGET_SUPPORT_GET_UTM          /* get_utmをサポートする */
    7874
    7975
    8076/*
    81  *  ƒ^ƒCƒ€ƒeƒBƒbƒN‚Ì’è‹`
     77 *  タイムティックの定義
    8278 */
    83 #define TIC_NUME                ( 1U )          /* ƒ^ƒCƒ€ƒeƒBƒbƒN‚ÌŽüŠú‚Ì•ªŽq */
    84 #define TIC_DENO                ( 1U )          /* ƒ^ƒCƒ€ƒeƒBƒbƒN‚ÌŽüŠú‚Ì•ª•ê */
     79#define TIC_NUME                ( 1U )          /* タイムティックの周期の分子 */
     80#define TIC_DENO                ( 1U )          /* タイムティックの周期の分母 */
    8581
    8682#endif /* TOPPERS_TARGET_KERNEL_H */
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_offset.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $       ƒIƒtƒZƒbƒgƒtƒ@ƒCƒ‹¶¬—pƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹iGR-SAKURA—pj
     2$       オフセットファイル生成用テンプレートファイル(GR-SAKURA用)
    33$
    44
    55$
    6 •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     6標準テンプレートファイルのインクルード
    77$
    88$INCLUDE "kernel/genoffset.tf"$
    99
    1010$
    11 ƒRƒAˆË‘¶ƒeƒ“ƒvƒŒ[ƒg‚̃Cƒ“ƒNƒ‹[ƒhiRX630—pj
     11コア依存テンプレートのインクルード(RX630用)
    1212$
    1313$INCLUDE"../../arch/rx630_ccrx/prc_offset.tf"$
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_rename.def

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_rename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_serial.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    1313 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    1414 *
    15  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    16  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    17  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    18  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    19  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    20  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    21  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—p
    24  *      ŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    26  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    28  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    29  *      ‚ƁD
    30  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    31 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    32 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    33  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    34  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    35  *        •ñ‚·‚邱‚ƁD
    36  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    37  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    38  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    39  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    40  *      –Ɛӂ·‚邱‚ƁD
     15 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     16 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     17 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     18 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     19 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     20 *      スコード中に含まれていること.
     21 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     22 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     23 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     24 *      の無保証規定を掲載すること.
     25 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     26 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     27 *      と.
     28 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     29 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     30 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     31 *        報告すること.
     32 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     33 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     34 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     35 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     36 *      免責すること.
    4137 *
    42  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    43  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    44  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    45  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    46  *  ‚̐ӔC‚𕉂í‚È‚¢D
     38 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     39 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     40 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     41 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     42 *  の責任を負わない.
    4743 *
    4844 *  @(#) $Id$
     
    5046
    5147/*
    52  *      RX630 UART—pƒVƒŠƒAƒ‹I/Oƒ‚ƒWƒ
    53 [ƒ‹
     48 *      RX630 UART用シリアルI/Oモジュール
    5449 */
    5550#include "kernel_impl.h"
     
    5853
    5954/*
    60  *  SIOƒhƒ‰ƒCƒo‚̏‰Šú‰»
     55 *  SIOドライバの初期化
    6156 */
    6257void
     
    6762
    6863/*
    69  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃I[ƒvƒ“
     64 *  シリアルI/Oポートのオープン
    7065 */
    7166SIOPCB *
     
    7772       
    7873        /*
    79          *  ƒVƒŠƒAƒ‹I/OŠ„ž‚Ý‚ðƒ}ƒXƒN‚·‚éD
    80          *  (dis_intŠÖ”‚́A"\kernel\interrupt.c"‚É‹Lq)
     74         *  シリアルI/O割込みをマスクする.
     75         *  (dis_int関数は、"\kernel\interrupt.c"に記述)
    8176         */
    8277        p_siopcb = rx630_uart_get_siopcb(siopid);
     
    9287
    9388        /*
    94          *  ƒVƒŠƒAƒ‹I/OŠ„ž‚Ý‚ðƒ}ƒXƒN‰ðœ‚·‚éD
    95          *  (ena_intŠÖ”‚́A"\kernel\interrupt.c"‚É‹Lq)
     89         *  シリアルI/O割込みをマスク解除する.
     90         *  (ena_int関数は、"\kernel\interrupt.c"に記述)
    9691         */
    9792        ercd = ena_int(intno_sio_tx);
     
    10499
    105100/*
    106  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃Nƒ[ƒY
     101 *  シリアルI/Oポートのクローズ
    107102 */
    108103void
     
    113108
    114109        /*
    115          *  ƒfƒoƒCƒXˆË‘¶‚̃Nƒ[ƒYˆ—D
     110         *  デバイス依存のクローズ処理.
    116111         */
    117112        rx630_uart_cls_por(p_siopcb);
    118113       
    119114        /*
    120          *  ƒVƒŠƒAƒ‹I/OŠ„ž‚Ý‚ðƒ}ƒXƒN‚·‚éD
     115         *  シリアルI/O割込みをマスクする.
    121116         */
    122117        intno_sio_tx = rx630_uart_intno_tx(p_siopcb);
     
    129124
    130125/*
    131  *  SIO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰
     126 *  SIOの割込みハンドラ
    132127 */
    133128void sio_tx_isr(intptr_t exinf)
     
    137132
    138133/*
    139  *  SIO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰
     134 *  SIOの割込みハンドラ
    140135 */
    141136void sio_rx_isr(intptr_t exinf)
     
    145140
    146141/*
    147  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚Ö‚Ì•¶Žš‘—M
     142 *  シリアルI/Oポートへの文字送信
    148143 */
    149144bool_t
     
    154149
    155150/*
    156  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì•¶ŽšŽóM
     151 *  シリアルI/Oポートからの文字受信
    157152 */
    158153int_t
     
    163158
    164159/*
    165  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹–‰Â
     160 *  シリアルI/Oポートからのコールバックの許可
    166161 */
    167162void
     
    172167
    173168/*
    174  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹ÖŽ~
     169 *  シリアルI/Oポートからのコールバックの禁止
    175170 */
    176171void
     
    181176
    182177/*
    183  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒN
     178 *  シリアルI/Oポートからの送信可能コールバック
    184179 */
    185180void
    186181rx630_uart_irdy_snd(intptr_t exinf)
    187182{
    188         /* ‹¤’Ê•”isyssvc\serial.cj‚É‚ ‚ésio_irdy_sndŠÖ”‚ðŒÄ‚яo‚µ*/
     183        /* 共通部(syssvc\serial.c)にあるsio_irdy_snd関数を呼び出し*/
    189184        sio_irdy_snd(exinf);
    190185}
    191186
    192187/*
    193  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚ÌŽóM’Ê’mƒR[ƒ‹ƒoƒbƒN
     188 *  シリアルI/Oポートからの受信通知コールバック
    194189 */
    195190void
    196191rx630_uart_irdy_rcv(intptr_t exinf)
    197192{
    198         /* ‹¤’Ê•”isyssvc\serial.cj‚É‚ ‚ésio_irdy_rcvŠÖ”‚ðŒÄ‚яo‚µ*/
     193        /* 共通部(syssvc\serial.c)にあるsio_irdy_rcv関数を呼び出し*/
    199194        sio_irdy_rcv(exinf);
    200195}
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_serial.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11/*
    2  *      SIOƒhƒ‰ƒCƒoiGR-SAKURA—pj‚̃Rƒ“ƒtƒBƒMƒ
    3 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     2 *      SIOドライバ(GR-SAKURA用)のコンフィギュレーションファイル
    43 */
    54
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_serial.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1313 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    1414 *
    15  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    16  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    17  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    18  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    19  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    20  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    21  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—p
    24  *      ŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    26  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    28  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    29  *      ‚ƁD
    30  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    31 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    32 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    33  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    34  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    35  *        •ñ‚·‚邱‚ƁD
    36  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    37  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    38  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    39  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    40  *      –Ɛӂ·‚邱‚ƁD
     15 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     16 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     17 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     18 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     19 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     20 *      スコード中に含まれていること.
     21 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     22 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     23 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     24 *      の無保証規定を掲載すること.
     25 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     26 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     27 *      と.
     28 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     29 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     30 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     31 *        報告すること.
     32 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     33 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     34 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     35 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     36 *      免責すること.
    4137 *
    42  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    43  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    44  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    45  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    46  *  ‚̐ӔC‚𕉂í‚È‚¢D
     38 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     39 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     40 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     41 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     42 *  の責任を負わない.
    4743 *
    4844 *  @(#) $Id$
     
    5046
    5147/*
    52  *              ƒVƒŠƒAƒ‹I/OƒfƒoƒCƒXiSIOjƒhƒ‰ƒCƒoiGR-SAKURA—pj
     48 *              シリアルI/Oデバイス(SIO)ドライバ(GR-SAKURA用)
    5349 */
    5450
     
    6056
    6157/*
    62  *  SIO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚̃xƒNƒ^”ԍ†
     58 *  SIOの割込みハンドラのベクタ番号
    6359 */
    64 #define INHNO_SIO_TX    INT_SCI0_TEI                    /* Š„ž‚݃nƒ“ƒhƒ‰”ԍ† */
    65 #define INTNO_SIO_TX    INT_SCI0_TEI                    /* Š„ž‚ݔԍ† */
    66 #define INHNO_SIO_RX    INT_SCI0_RXI                    /* Š„ž‚݃nƒ“ƒhƒ‰”ԍ† */
    67 #define INTNO_SIO_RX    INT_SCI0_RXI                    /* Š„ž‚ݔԍ† */
    68 #define INTPRI_SIO              -4                                              /* Š„ž‚Ý—Dæ“x */
    69 #define INTATR_SIO              (TA_NULL)                               /* Š„ž‚Ý‘®« */
     60#define INHNO_SIO_TX    INT_SCI0_TEI                    /* 割込みハンドラ番号 */
     61#define INTNO_SIO_TX    INT_SCI0_TEI                    /* 割込み番号 */
     62#define INHNO_SIO_RX    INT_SCI0_RXI                    /* 割込みハンドラ番号 */
     63#define INTNO_SIO_RX    INT_SCI0_RXI                    /* 割込み番号 */
     64#define INTPRI_SIO              -4                                              /* 割込み優先度 */
     65#define INTATR_SIO              (TA_NULL)                               /* 割込み属性 */
    7066
    7167#ifndef TOPPERS_MACRO_ONLY
     
    7369
    7470/*
    75  *  SIOƒhƒ‰ƒCƒo‚̏‰Šú‰»
     71 *  SIOドライバの初期化
    7672 */
    7773extern void             sio_initialize(intptr_t exinf);
    7874
    7975/*
    80  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃I[ƒvƒ“
     76 *  シリアルI/Oポートのオープン
    8177 */
    8278extern SIOPCB   *sio_opn_por(ID siopid, intptr_t exinf);
    8379
    8480/*
    85  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃Nƒ[ƒY
     81 *  シリアルI/Oポートのクローズ
    8682 */
    8783extern void             sio_cls_por(SIOPCB *p_siopcb);
    8884
    8985/*
    90  *  SIO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰
     86 *  SIOの割込みハンドラ
    9187 */
    9288extern void     sio_tx_isr(intptr_t exinf);
     
    9490
    9591/*
    96  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚Ö‚Ì•¶Žš‘—M
     92 *  シリアルI/Oポートへの文字送信
    9793 */
    9894extern bool_t   sio_snd_chr(SIOPCB *siopcb, char c);
    9995
    10096/*
    101  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì•¶ŽšŽóM
     97 *  シリアルI/Oポートからの文字受信
    10298 */
    10399extern int_t    sio_rcv_chr(SIOPCB *siopcb);
    104100
    105101/*
    106  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹–‰Â
     102 *  シリアルI/Oポートからのコールバックの許可
    107103 */
    108104extern void             sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
    109105
    110106/*
    111  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹ÖŽ~
     107 *  シリアルI/Oポートからのコールバックの禁止
    112108 */
    113109extern void             sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
    114110
    115111/*
    116  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒN
     112 *  シリアルI/Oポートからの送信可能コールバック
    117113 */
    118114extern void             sio_irdy_snd(intptr_t exinf);
    119115
    120116/*
    121  *  ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚ÌŽóM’Ê’mƒR[ƒ‹ƒoƒbƒN
     117 *  シリアルI/Oポートからの受信通知コールバック
    122118 */
    123119extern void             sio_irdy_rcv(intptr_t exinf);
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_sil.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    55 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    66 *
    7  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    9  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    11  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    12  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    14  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—p
    16  *      ŽÒƒ}ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    18  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    21  *      ‚ƁD
    22  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    25  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    27  *        •ñ‚·‚邱‚ƁD
    28  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    29  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    30  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    31  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    32  *      –Ɛӂ·‚邱‚ƁD
     7 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     8 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12 *      スコード中に含まれていること.
     13 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16 *      の無保証規定を掲載すること.
     17 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19 *      と.
     20 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     22 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23 *        報告すること.
     24 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28 *      免責すること.
    3329 *
    34  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    35  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    36  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    37  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    38  *  ‚̐ӔC‚𕉂í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34 *  の責任を負わない.
    3935 *
    4036 *  @(#) $Id$
     
    4238
    4339/*
    44  *              sil.h‚̃^[ƒQƒbƒgˆË‘¶•”iGR-SAKURA—pj
     40 *              sil.hのターゲット依存部(GR-SAKURA用)
    4541 *
    46  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Csil.h‚̐擪‚ŃCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@
    47  *  ƒCƒ‹‚©‚ç‚Í’¼ÚƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚Æ‚Í‚È‚¢D‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[
    48  *  ƒh‚·‚é‘O‚ɁCt_stddef.h‚ªƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚é‚̂ŁC‚»‚ê‚ç‚Ɉˑ¶‚µ‚Ä‚à
    49  *  ‚æ‚¢D
     42 *  このインクルードファイルは,sil.hの先頭でインクルードされる.他のファ
     43 *  イルからは直接インクルードすることはない.このファイルをインクルー
     44 *  ドする前に,t_stddef.hがインクルードされるので,それらに依存しても
     45 *  よい.
    5046 */
    5147
     
    5450
    5551/*
    56  *  ”÷­ŽžŠÔ‘Ò‚¿‚Ì‚½‚ß‚Ì’è‹`
     52 *  微少時間待ちのための定義
    5753 */
    5854#define SIL_DLY_TIM1     69
     
    6056
    6157/*
    62  *  ƒvƒƒZƒbƒT‚Å‹¤’Ê‚È’è‹`
     58 *  プロセッサで共通な定義
    6359 */
    6460#ifdef __RX
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_stddef.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1111 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    15  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    17  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—p
    22  *      ŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    24  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    26  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27  *      ‚ƁD
    28  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33  *        •ñ‚·‚邱‚ƁD
    34  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38  *      –Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18 *      スコード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22 *      の無保証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25 *      と.
     26 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     28 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29 *        報告すること.
     30 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34 *      免責すること.
    3935 *
    40  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44  *  ‚̐ӔC‚𕉂í‚È‚¢D
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    4541 *
    4642 *  @(#) $Id$
     
    4844
    4945/*
    50  *  t_stddef.h‚̃^[ƒQƒbƒgˆË‘¶•”iGR-SAKURA—pj
     46 *  t_stddef.hのターゲット依存部(GR-SAKURA用)
    5147 *
    52  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ct_stddef.h‚̐擪‚ŃCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD
    53  *  ‘¼‚̃tƒ@ƒCƒ‹‚©‚ç‚Í’¼ÚƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚Æ‚Í‚È‚¢D‘¼‚̃Cƒ“ƒNƒ‹[ƒh
    54  *  ƒtƒ@ƒCƒ‹‚ɐ旧‚Á‚ďˆ—‚³‚ê‚邽‚߁C‘¼‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚Ɉˑ¶‚µ
    55  *  ‚Ä‚Í‚È‚ç‚È‚¢D
     48 *  このインクルードファイルは,t_stddef.hの先頭でインクルードされる.
     49 *  他のファイルからは直接インクルードすることはない.他のインクルード
     50 *  ファイルに先立って処理されるため,他のインクルードファイルに依存し
     51 *  てはならない.
    5652 */
    5753
     
    6056
    6157/*
    62  *  ƒ^[ƒQƒbƒg‚ðŽ¯•Ê‚·‚邽‚߂̃}ƒNƒ‚Ì’è‹`
     58 *  ターゲットを識別するためのマクロの定義
    6359 */
    64 #define TOPPERS_GRSAKURA                        /* ƒVƒXƒeƒ€—ªÌ */
     60#define TOPPERS_GRSAKURA                        /* システム略称 */
    6561
    6662
    6763#ifdef __RX
    6864/*
    69  *  ŠJ”­ŠÂ‹«‚Å‹¤’Ê‚È’è‹`
     65 *  開発環境で共通な定義
    7066 */
    7167/*#define TOPPERS_STDINT_TYPE1*/
     
    7470
    7571/*
    76  *  ƒvƒƒZƒbƒT‚Å‹¤’Ê‚È’è‹`
     72 *  プロセッサで共通な定義
    7773 */
    7874#include "rx630_ccrx/prc_stddef.h"
    7975#else /* __RX */
    8076/*
    81  *  ŠJ”­ŠÂ‹«‚Å‹¤’Ê‚È’è‹`
     77 *  開発環境で共通な定義
    8278 */
    8379#include <stdint.h>
     
    8581
    8682/*
    87  *  ƒvƒƒZƒbƒT‚Å‹¤’Ê‚È’è‹`
     83 *  プロセッサで共通な定義
    8884 */
    8985#include "rx630_msvc/prc_stddef.h"
     
    9389
    9490/*
    95  *  ƒAƒT[ƒVƒ‡ƒ“‚ÌŽ¸”sŽž‚ÌŽÀs’†’fˆ—
     91 *  アサーションの失敗時の実行中断処理
    9692 */
    9793#ifndef TOPPERS_MACRO_ONLY
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_support.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    77
    88/*
    9  *      ƒ^[ƒQƒbƒgƒVƒXƒeƒ€ˆË‘¶ƒ‚ƒWƒ
    10 [ƒ‹iAP-RX62N-0A—pj
     9 *      ターゲットシステム依存モジュール(AP-RX62N-0A用)
    1110 */
    1211
     
    1716{
    1817        /*
    19          * “®ìƒ‚[ƒhÝ’è
     18         * 動作モード設定
    2019         *
    21          * “®ìƒ‚[ƒh‚̓{[ƒhã‚Ì’[Žq‚É‚æ‚Á‚ÄŒˆ’肳‚ê‚邽‚ß,
    22          * ‚±‚±‚Å‚Í“Á•ÊÝ’肵‚È‚¢.
    23          * ‚½‚¾‚µ, ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“/ƒVƒ“ƒOƒ‹ƒ`ƒbƒvƒ‚[ƒh
    24          * ‚Å‚ ‚邱‚Æ‚ð‘O’ñ‚Æ‚·‚é.
     20         * 動作モードはボード上の端子によって決定されるため,
     21         * ここでは特別設定しない.
     22         * ただし, リトルエンディアン/シングルチップモード
     23         * であることを前提とする.
    2524         *
    26          * ‚Ü‚½ƒŠƒZƒbƒgŒã, “à‘ ROMF—LŒø, “à‘ RAMF—LŒø, ŠO•”ƒoƒXF–³Œø
    27          * ‚Å‚ ‚é.
     25         * またリセット後, 内蔵ROM:有効, 内蔵RAM:有効, 外部バス:無効
     26         * である.
    2827         */
    2928
    3029        /*
    31          * ƒNƒƒbƒNÝ’è
     30         * クロック設定
    3231         *
    33          * “ü—́F12MHz
    34          * PLL‰ñ˜HF12 x 8 = 96MHz
    35          * ƒVƒXƒeƒ€ƒNƒƒbƒNF96MHz
    36          * Žü•Óƒ‚ƒWƒ
    37 [ƒ‹ƒNƒƒbƒNF48MHz
    38          * ŠO•”ƒoƒXƒNƒƒbƒNF96MHz
    39          * ‚Æ‚·‚é.
     32         * 入力:12MHz
     33         * PLL回路:12 x 8 = 96MHz
     34         * システムクロック:96MHz
     35         * 周辺モジュールクロック:48MHz
     36         * 外部バスクロック:96MHz
     37         * とする.
    4038         */
    4139        sil_wrb_mem(PORT3_PDR_ADDR,
     
    5048        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xa503);
    5149
    52         /* ƒƒCƒ“ƒNƒƒbƒN”­UŠí‹­§”­U */
     50        /* メインクロック発振器強制発振 */
    5351        while((sil_reb_mem(SYSTEM_MOFCR_ADDR) & SYSTEM_MOFCR_MOFXIN) == 0)
    5452                sil_wrb_mem(SYSTEM_MOFCR_ADDR,
    5553                        sil_reb_mem(SYSTEM_MOFCR_ADDR) | SYSTEM_MOFCR_MOFXIN);
    5654
    57         /* ƒƒCƒ“ƒNƒƒbƒN”­UŠí“®ì */
     55        /* メインクロック発振器動作 */
    5856        while((sil_reb_mem(SYSTEM_MOSCCR_ADDR) & SYSTEM_MOSCCR_MOSTP) != 0)
    5957                sil_wrb_mem(SYSTEM_MOSCCR_ADDR,
     
    6967        sil_wrw_mem(SYSTEM_SCKCR_ADDR, 0x21021211);
    7068
    71         /* PLL‰ñ˜H‘I‘ð */
     69        /* PLL回路選択 */
    7270        sil_wrh_mem(SYSTEM_SCKCR3_ADDR,
    7371                (sil_reh_mem(SYSTEM_SCKCR3_ADDR) & ~SYSTEM_SCKCR3_CKSEL_MASK)
     
    7573
    7674        /*
    77          * ƒ‚ƒWƒ
    78 [ƒ‹ƒXƒgƒbƒv
     75         * モジュールストップ
    7976         *
    80          * ƒŠƒZƒbƒgŒã, “®ì‚µ‚Ä‚¢‚é“à‘ Žü•Óƒ‚ƒWƒ
    81 [ƒ‹‚ÍDMAC, DTC,
    82          * “à‘ RAM‚Ì‚Ý‚Å‚ ‚é.
    83          * ‚»‚êˆÈŠO‚Ì“à‘ Žü•Óƒ‚ƒWƒ
    84 [ƒ‹‚ÉŠÖ‚µ‚Ä‚ÍŽg—p‚·‚鑤‚Å
    85          * Ý’è‚·‚邱‚Æ.
     77         * リセット後, 動作している内蔵周辺モジュールはDMAC, DTC,
     78         * 内蔵RAMのみである.
     79         * それ以外の内蔵周辺モジュールに関しては使用する側で
     80         * 設定すること.
    8681         */
    8782        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xa500);
     
    9186{
    9287        /*
    93          * –{ƒRƒ“ƒpƒCƒ‰‚Å‚Íweak definition‚Ì‹@”\‚ª–³‚¢‚½‚ß,
    94          * “Á‚É•K—v‚ȏˆ—‚Í‚È‚¢‚ª, •K‚¸ŒÄ‚яo‚·‚±‚Æ‚Æ‚·‚é.
     88         * 本コンパイラではweak definitionの機能が無いため,
     89         * 特に必要な処理はないが, 必ず呼び出すこととする.
    9590         */
    9691}
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_support.src

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
    r164 r167  
    1414;*  Copyright (C) 2013      by Mitsuhiro Matsuura
    1515;*
    16 ;*  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    17 ;*  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    18 ;*  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    19 ;*  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    20 ;*      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    21 ;*      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    22 ;*  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23 ;*      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—p
    25 ;*      ŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    27 ;*      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28 ;*  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    29 ;*      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    30 ;*      ‚ƁD
    31 ;*    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    32 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    33 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    34 ;*        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    35 ;*    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    36 ;*        •ñ‚·‚邱‚ƁD
    37 ;*  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    38 ;*      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    39 ;*      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    40 ;*      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    41 ;*      –Ɛӂ·‚邱‚ƁD
     16;*  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     17;*  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     18;*  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     19;*  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     20;*      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     21;*      スコード中に含まれていること.
     22;*  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     23;*      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     24;*      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     25;*      の無保証規定を掲載すること.
     26;*  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     27;*      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     28;*      と.
     29;*    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     30;*        作権表示,この利用条件および下記の無保証規定を掲載すること.
     31;*    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     32;*        報告すること.
     33;*  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     34;*      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     35;*      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     36;*      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     37;*      免責すること.
    4238;*
    43 ;*  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    44 ;*  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    45 ;*  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    46 ;*  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    47 ;*  ‚̐ӔC‚𕉂í‚È‚¢D
     39;*  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     40;*  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     41;*  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     42;*  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     43;*  の責任を負わない.
    4844;*
    4945;*  @(#) $Id: target_support.src 536 2014-10-09 23:11:40Z coas-nagasima $
     
    5955_hardware_init_hook:
    6056        ;
    61         ;  “®ìƒ‚[ƒhÝ’è
     57        ;  動作モード設定
    6258        ;
    63         ;  “®ìƒ‚[ƒh‚̓{[ƒhã‚Ì’[Žq‚É‚æ‚Á‚ÄŒˆ’肳‚ê‚邽‚ß,
    64         ;  ‚±‚±‚Å‚Í“Á•ÊÝ’肵‚È‚¢.
    65         ;  ‚½‚¾‚µ, ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“/ƒVƒ“ƒOƒ‹ƒ`ƒbƒvƒ‚[ƒh
    66         ;  ‚Å‚ ‚邱‚Æ‚ð‘O’ñ‚Æ‚·‚é.
     59        ;  動作モードはボード上の端子によって決定されるため,
     60        ;  ここでは特別設定しない.
     61        ;  ただし, リトルエンディアン/シングルチップモード
     62        ;  であることを前提とする.
    6763        ;
    68         ;  ‚Ü‚½ƒŠƒZƒbƒgŒã, “à‘ ROMF—LŒø, “à‘ RAMF—LŒø, ŠO•”ƒoƒXF–³Œø
    69         ;  ‚Å‚ ‚é.
     64        ;  またリセット後, 内蔵ROM:有効, 内蔵RAM:有効, 外部バス:無効
     65        ;  である.
    7066        ;
    7167
    7268        ;
    73         ;  ƒNƒƒbƒNÝ’è
     69        ;  クロック設定
    7470        ;
    75         ;  “ü—́F12MHz
    76         ;  PLL‰ñ˜HF12 x 8 = 96MHz
    77         ;  ƒVƒXƒeƒ€ƒNƒƒbƒNF96MHz
    78         ;  Žü•Óƒ‚ƒWƒ
    79 [ƒ‹ƒNƒƒbƒNF48MHz
    80         ;  ŠO•”ƒoƒXƒNƒƒbƒNF96MHz
    81         ;  ‚Æ‚·‚é.
     71        ;  入力:12MHz
     72        ;  PLL回路:12 x 8 = 96MHz
     73        ;  システムクロック:96MHz
     74        ;  周辺モジュールクロック:48MHz
     75        ;  外部バスクロック:96MHz
     76        ;  とする.
    8277        ;
    8378
     
    109104        ;while(SYSTEM.MOFCR.BIT.MOFXIN == 0)
    110105        BRA.B   _hardware_init_hook_01
    111         ;SYSTEM.MOFCR.BIT.MOFXIN = 1;   // ƒƒCƒ“ƒNƒƒbƒN”­UŠí‹­§”­U
     106        ;SYSTEM.MOFCR.BIT.MOFXIN = 1;   // メインクロック発振器強制発振
    112107_hardware_init_hook_00:
    113108        MOV.L   #080000H,R11
     
    125120        ;while(SYSTEM.MOSCCR.BIT.MOSTP == 1)
    126121        BRA.B   _hardware_init_hook_11
    127         ;SYSTEM.MOSCCR.BIT.MOSTP = 0;   // ƒƒCƒ“ƒNƒƒbƒN”­UŠí“®ì
     122        ;SYSTEM.MOSCCR.BIT.MOSTP = 0;   // メインクロック発振器動作
    128123_hardware_init_hook_10:
    129124        MOV.L   #080000H,R11
     
    155150        MOV.L   #21021211H,20H[R10]
    156151        ;
    157         ;SYSTEM.SCKCR3.BIT.CKSEL = 4;           // PLL‰ñ˜H‘I‘ð
     152        ;SYSTEM.SCKCR3.BIT.CKSEL = 4;           // PLL回路選択
    158153        MOV.L   #080000H,R10
    159154        MOV.W   26H[R10],R11
     
    163158
    164159        ;
    165         ;  ƒ‚ƒWƒ
    166 [ƒ‹ƒXƒgƒbƒv
     160        ;  モジュールストップ
    167161        ;
    168         ;  ƒŠƒZƒbƒgŒã, “®ì‚µ‚Ä‚¢‚é“à‘ Žü•Óƒ‚ƒWƒ
    169 [ƒ‹‚ÍDMAC, DTC,
    170         ;  “à‘ RAM‚Ì‚Ý‚Å‚ ‚é.
    171         ;  ‚»‚êˆÈŠO‚Ì“à‘ Žü•Óƒ‚ƒWƒ
    172 [ƒ‹‚ÉŠÖ‚µ‚Ä‚ÍŽg—p‚·‚鑤‚Å
    173         ;  Ý’è‚·‚邱‚Æ.
     162        ;  リセット後, 動作している内蔵周辺モジュールはDMAC, DTC,
     163        ;  内蔵RAMのみである.
     164        ;  それ以外の内蔵周辺モジュールに関しては使用する側で
     165        ;  設定すること.
    174166        ;
    175167
     
    182174_software_init_hook:
    183175        ;
    184         ;  –{ƒRƒ“ƒpƒCƒ‰‚Å‚Íweak definition‚Ì‹@”\‚ª–³‚¢‚½‚ß,
    185         ;  “Á‚É•K—v‚ȏˆ—‚Í‚È‚¢‚ª, •K‚¸ŒÄ‚яo‚·‚±‚Æ‚Æ‚·‚é.
     176        ;  本コンパイラではweak definitionの機能が無いため,
     177        ;  特に必要な処理はないが, 必ず呼び出すこととする.
    186178        ;
    187179        rts
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_syssvc.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1212 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1313 *
    14  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    15  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    16  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    17  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    18  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    19  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    20  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—p
    23  *      ŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    25  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    27  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    28  *      ‚ƁD
    29  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    30 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    31 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    32  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    33  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    34  *        •ñ‚·‚邱‚ƁD
    35  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    36  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    37  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    38  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    39  *      –Ɛӂ·‚邱‚ƁD
     14 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     15 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     16 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     17 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     18 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     19 *      スコード中に含まれていること.
     20 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     21 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     22 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     23 *      の無保証規定を掲載すること.
     24 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     25 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     26 *      と.
     27 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     28 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     29 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     30 *        報告すること.
     31 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     32 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     33 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     34 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     35 *      免責すること.
    4036 *
    41  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    42  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    43  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    44  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    45  *  ‚̐ӔC‚𕉂í‚È‚¢D
     37 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     38 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     39 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     40 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     41 *  の責任を負わない.
    4642 *
    4743 *  @(#) $Id$
     
    4945
    5046/*
    51  *              ƒVƒXƒeƒ€ƒT[ƒrƒX‚̃^[ƒQƒbƒgˆË‘¶•”iGR-SAKURA—pj
     47 *              システムサービスのターゲット依存部(GR-SAKURA用)
    5248 *
    53  *  ƒVƒXƒeƒ€ƒT[ƒrƒX‚̃^[ƒQƒbƒgˆË‘¶•”‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹D‚±‚̃tƒ@
    54  *  ƒCƒ‹‚Ì“à—e‚́CƒRƒ“ƒ|[ƒlƒ“ƒg‹Lqƒtƒ@ƒCƒ‹‚É‹Lq‚³‚êC‚±‚̃tƒ@ƒCƒ‹‚Í
    55  *  –³‚­‚Ȃ錩ž‚݁D
     49 *  システムサービスのターゲット依存部のインクルードファイル.このファ
     50 *  イルの内容は,コンポーネント記述ファイルに記述され,このファイルは
     51 *  無くなる見込み.
    5652 */
    5753
     
    6157
    6258/*
    63  *  ƒvƒƒZƒbƒTˆË‘¶‚Ì’è‹`
     59 *  プロセッサ依存の定義
    6460 */
    6561#ifdef __RX
     
    7066
    7167/*
    72  *  ƒgƒŒ[ƒXƒƒO‚ÉŠÖ‚·‚éÝ’è
     68 *  トレースログに関する設定
    7369 */
    7470#ifdef TOPPERS_ENABLE_TRACE
     
    7874
    7975/*
    80  *  ƒ{[ƒhˆË‘¶î•ñ‚̓ǂݍž‚Ý
     76 *  ボード依存情報の読み込み
    8177 */
    8278#include "grsakura.h"
     
    8480
    8581/*
    86  *  ‹N“®ƒƒbƒZ[ƒW‚̃^[ƒQƒbƒgƒVƒXƒeƒ€–¼
     82 *  起動メッセージのターゲットシステム名
    8783 */
    8884#define TARGET_NAME     "GRSAKURA"
     
    9086
    9187/*
    92  *  ƒVƒXƒeƒ€ƒƒO‚̒჌ƒxƒ‹o—Í‚Ì‚½‚ß‚Ì•¶Žšo—Í
     88 *  システムログの低レベル出力のための文字出力
    9389 *
    94  *  ƒ^[ƒQƒbƒgˆË‘¶‚Ì•û–@‚ŁC•¶Žšc‚ð•\Ž¦/o—Í/•Û‘¶‚·‚éD
     90 *  ターゲット依存の方法で,文字cを表示/出力/保存する.
    9591 */
    9692extern void     target_fput_log( char c );
     
    9894
    9995/*
    100  *  ‹N“®ƒƒbƒZ[ƒW‚Ƀ^[ƒQƒbƒgˆË‘¶•”‚Ì’˜ìŒ •\Ž¦‚ð
    101  *  ’ljÁ‚·‚邽‚߂̃}ƒNƒD
     96 *  起動メッセージにターゲット依存部の著作権表示を
     97 *  追加するためのマクロ.
    10298 */
    10399#ifdef PRC_COPYRIGHT
     
    107103
    108104/*
    109  *  ƒVƒŠƒAƒ‹ƒ|[ƒg”‚Ì’è‹`
     105 *  シリアルポート数の定義
    110106 */
    111107#define TNUM_PORT                       UINT_C( 2 )
    112108
    113109/*
    114  *  Žg—p‚·‚éƒVƒŠƒAƒ‹ƒ|[ƒgID
     110 *  使用するシリアルポートID
    115111 */
    116112#define SIO_PORTID                      UINT_C( 1 )
     
    121117
    122118/*
    123  *  ƒVƒXƒeƒ€ƒƒOƒ^ƒXƒNŠÖ˜A‚̒萔‚Ì’è‹`
     119 *  システムログタスク関連の定数の定義
    124120 *
    125  *  ƒfƒtƒHƒ‹ƒg’l‚Ì’Ê‚èD
     121 *  デフォルト値の通り.
    126122 */
    127123
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_test.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1212 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1313 *
    14  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    15  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    16  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    17  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    18  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    19  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    20  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—p
    23  *      ŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    25  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    27  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    28  *      ‚ƁD
    29  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    30 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    31 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    32  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    33  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    34  *        •ñ‚·‚邱‚ƁD
    35  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    36  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    37  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    38  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    39  *      –Ɛӂ·‚邱‚ƁD
     14 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     15 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     16 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     17 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     18 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     19 *      スコード中に含まれていること.
     20 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     21 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     22 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     23 *      の無保証規定を掲載すること.
     24 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     25 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     26 *      と.
     27 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     28 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     29 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     30 *        報告すること.
     31 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     32 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     33 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     34 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     35 *      免責すること.
    4036 *
    41  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    42  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    43  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    44  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    45  *  ‚̐ӔC‚𕉂í‚È‚¢D
     37 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     38 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     39 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     40 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     41 *  の責任を負わない.
    4642 *
    4743 *  @(#) $Id$
     
    4945
    5046/*
    51  *              ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃^[ƒQƒbƒgˆË‘¶’è‹`iGR-SAKURA—pj
     47 *              テストプログラムのターゲット依存定義(GR-SAKURA用)
    5248 */
    5349
     
    5652
    5753/*
    58  *  ƒvƒƒZƒbƒT‚Å‹¤’Ê‚È’è‹`
     54 *  プロセッサで共通な定義
    5955 */
    6056#ifdef __RX
     
    6561
    6662/*
    67  *  ƒ^ƒXƒN‚ÅŽg—p‚·‚éƒVƒŠƒAƒ‹ƒ|[ƒgID
     63 *  タスクで使用するシリアルポートID
    6864 */
    6965#define TASK_PORTID             ( 1 )
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_timer.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    1313 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    1414 *
    15  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    16  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    17  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    18  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    19  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    20  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    21  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—p
    24  *      ŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    26  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    28  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    29  *      ‚ƁD
    30  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    31 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    32 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    33  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    34  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    35  *        •ñ‚·‚邱‚ƁD
    36  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    37  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    38  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    39  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    40  *      –Ɛӂ·‚邱‚ƁD
     15 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     16 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     17 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     18 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     19 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     20 *      スコード中に含まれていること.
     21 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     22 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     23 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     24 *      の無保証規定を掲載すること.
     25 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     26 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     27 *      と.
     28 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     29 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     30 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     31 *        報告すること.
     32 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     33 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     34 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     35 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     36 *      免責すること.
    4137 *
    42  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    43  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    44  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    45  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    46  *  ‚̐ӔC‚𕉂í‚È‚¢D
     38 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     39 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     40 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     41 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     42 *  の責任を負わない.
    4743 *
    4844 *  @(#) $Id$
     
    5046
    5147/*
    52  *              ƒ^ƒCƒ}ƒhƒ‰ƒCƒoiGR-SAKURA—pj
     48 *              タイマドライバ(GR-SAKURA用)
    5349 */
    5450
     
    5955
    6056/*
    61  *  ƒ^ƒCƒ}‚̏‰Šú‰»ˆ—
     57 *  タイマの初期化処理
    6258 */
    6359void
     
    6561{
    6662        /*
    67          * ƒ‚ƒWƒ
    68 [ƒ‹ƒXƒgƒbƒv‹@”\‚̐ݒè
     63         * モジュールストップ機能の設定
    6964         */
    70         sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502);    /* ‘ž‚Ý‹–‰Â */
     65        sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502);    /* 書込み許可 */
    7166        sil_wrw_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR,
    7267                sil_rew_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA15_BIT); /* CMT0 */
    73         sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500);    /* ‘ž‚Ý‹ÖŽ~ */
     68        sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500);    /* 書込み禁止 */
    7469
    7570        /*
    76          * ƒ^ƒCƒ}’âŽ~
     71         * タイマ停止
    7772         */
    7873        sil_wrh_mem((uint16_t *)CMT_CMSTR0_ADDR,
     
    8075       
    8176        /*
    82          * ƒJƒEƒ“ƒgƒAƒbƒv‚É—p‚¢‚ç‚ê‚éƒNƒƒbƒNÝ’è
    83          * PCLK/32‚ð‘I‘ð
     77         * カウントアップに用いられるクロック設定
     78         * PCLK/32を選択
    8479         */
    8580        sil_wrh_mem((uint16_t *)CMT0_CMCR_ADDR, CMT_PCLK_DIV_8);
    8681
    8782        /*
    88          * ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}ƒJƒEƒ“ƒ^Ý’è
     83         * コンペアマッチタイマカウンタ設定
    8984         */
    9085        sil_wrh_mem((uint16_t *)CMT0_CMCNT_ADDR, 0U);
    9186
    9287        /*
    93          * ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}ŽüŠúÝ’è
     88         * コンペアマッチタイマ周期設定
    9489         */
    9590        sil_wrh_mem((uint16_t *)CMT0_CMCOR_ADDR, CMCOR_PERIOD);
    9691
    9792        /*
    98          * ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}Š„‚荞‚Ý—v‹æÝ’背ƒWƒXƒ^iISELR28j
     93         * コンペアマッチタイマ割り込み要求先設定レジスタ(ISELR28)
    9994         */
    10095        sil_wrb_mem((uint8_t *)ICU_ISELR028_ADDR, ICU_ISEL_CPU);
    10196
    10297        /*
    103          *  ƒ^ƒCƒ}“®ìŠJŽn‘O‚ÌŠ„ž‚Ý—v‹‚ðƒNƒŠƒA
     98         *  タイマ動作開始前の割込み要求をクリア
    10499         */
    105100        x_clear_int(INTNO_TIMER);
    106101
    107102        /*
    108          * ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}Š„‚荞‚Ý‚ð‹–‰Â
     103         * コンペアマッチタイマ割り込みを許可
    109104         */
    110105        sil_wrh_mem((uint16_t *)CMT0_CMCR_ADDR,
     
    112107       
    113108        /*
    114          * ƒ^ƒCƒ}“®ìŠJŽn
     109         * タイマ動作開始
    115110         */
    116111        sil_wrh_mem((uint16_t *)CMT_CMSTR0_ADDR,
     
    119114
    120115/*
    121  *  ƒ^ƒCƒ}‚Ì’âŽ~ˆ—
     116 *  タイマの停止処理
    122117 */
    123118void
     
    125120{
    126121        /*
    127          * ƒ^ƒCƒ}’âŽ~
     122         * タイマ停止
    128123         */
    129124        sil_wrh_mem((uint16_t *)CMT_CMSTR0_ADDR,
     
    132127
    133128/*
    134  *  ƒ^ƒCƒ}Š„ž‚݃nƒ“ƒhƒ‰
     129 *  タイマ割込みハンドラ
    135130 */
    136131void target_timer_handler(void)
     
    138133        i_begin_int(INTNO_TIMER);
    139134
    140         signal_time();                          /* ƒ^ƒCƒ€ƒeƒBƒbƒN‚Ì‹Ÿ‹‹ */
     135        signal_time();                          /* タイムティックの供給 */
    141136
    142137        i_end_int(INTNO_TIMER);
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_timer.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11/*
    2  *  ƒ^ƒCƒ}ƒhƒ‰ƒCƒoiRX630—pj‚̃Rƒ“ƒtƒBƒMƒ
    3 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     2 *  タイマドライバ(RX630用)のコンフィギュレーションファイル
    43 */
    54
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_timer.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1313 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    1414 *
    15  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    16  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    17  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    18  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    19  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    20  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    21  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—p
    24  *      ŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    26  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    28  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    29  *      ‚ƁD
    30  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    31 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    32 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    33  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    34  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    35  *        •ñ‚·‚邱‚ƁD
    36  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    37  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    38  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    39  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    40  *      –Ɛӂ·‚邱‚ƁD
     15 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     16 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     17 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     18 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     19 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     20 *      スコード中に含まれていること.
     21 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     22 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     23 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     24 *      の無保証規定を掲載すること.
     25 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     26 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     27 *      と.
     28 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     29 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     30 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     31 *        報告すること.
     32 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     33 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     34 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     35 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     36 *      免責すること.
    4137 *
    42  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    43  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    44  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    45  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    46  *  ‚̐ӔC‚𕉂í‚È‚¢D
     38 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     39 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     40 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     41 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     42 *  の責任を負わない.
    4743 *
    4844 *  @(#) $Id$
     
    5046
    5147/*
    52  *              ƒ^ƒCƒ}ƒhƒ‰ƒCƒoiGR-SAKURA—pj
     48 *              タイマドライバ(GR-SAKURA用)
    5349 */
    5450 
     
    6157
    6258/*
    63  *  ƒ^ƒCƒ}Š„ž‚݃nƒ“ƒhƒ‰“o˜^‚Ì‚½‚߂̒萔
     59 *  タイマ割込みハンドラ登録のための定数
    6460 */
    65 #define INHNO_TIMER             INT_CMT0_CMI                            /* Š„ž‚݃nƒ“ƒhƒ‰”ԍ† */
    66 #define INTNO_TIMER             INT_CMT0_CMI                            /* Š„ž‚ݔԍ† */
    67 #define INTPRI_TIMER    -5                                                      /* Š„ž‚Ý—Dæ“x */
    68 #define INTATR_TIMER    (TA_ENAINT | TA_EDGE)           /* Š„ž‚Ý‘®« */
     61#define INHNO_TIMER             INT_CMT0_CMI                            /* 割込みハンドラ番号 */
     62#define INTNO_TIMER             INT_CMT0_CMI                            /* 割込み番号 */
     63#define INTPRI_TIMER    -5                                                      /* 割込み優先度 */
     64#define INTATR_TIMER    (TA_ENAINT | TA_EDGE)           /* 割込み属性 */
    6965
    7066#ifndef TOPPERS_MACRO_ONLY
    7167
    7268/*
    73  *  ƒ^ƒCƒ}’l‚Ì“à•”•\Œ»‚ÌŒ^
     69 *  タイマ値の内部表現の型
    7470 */
    7571typedef uint16_t        CLOCK;
    7672
    7773/*
    78  *  ƒ^ƒCƒ}’l‚Ì“à•”•\Œ»‚ƃ~ƒŠ•b’PˆÊ‚Æ‚Ì•ÏŠ·
     74 *  タイマ値の内部表現とミリ秒単位との変換
    7975 *
    80  *  1ms‚̃^ƒCƒ}[Š„‚荞‚Ý‚ðŽg—p‚·‚é‚Ì‚Å‚»‚̃NƒƒbƒN‚ð’è‹`‚·‚éD
     76 *  1msのタイマー割り込みを使用するのでそのクロックを定義する.
    8177 */
    82 #define TIMER_CLOCK                             (FREQ_PCLK / 8U)                /* PCLK/Å’ᕪŽü”ä8 = 6MHz */
     78#define TIMER_CLOCK                             (FREQ_PCLK / 8U)                /* PCLK/最低分周比8 = 6MHz */
    8379#define TO_CLOCK(nume, deno)    ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
    8480#define TO_USEC(clock)                  ((SYSUTM)((clock) * 1000U / TIMER_CLOCK))
    8581
    8682/*
    87  *  Ý’è‚Å‚«‚éÅ‘å‚̃^ƒCƒ}ŽüŠúi’PˆÊ‚Í“à•”•\Œ»j
     83 *  設定できる最大のタイマ周期(単位は内部表現)
    8884 */
    8985#define MAX_CLOCK       ((CLOCK) 0xFFFFU)
    9086
    9187/*
    92  *  «”\•]‰¿—pƒVƒXƒeƒ€Žž‚ðŽæ‚èo‚·Û‚̏ˆ—ŽžŠÔ‚ÌŒ©Ï‚è’li’PˆÊ‚Í“à•”•\Œ»j
     88 *  性能評価用システム時刻を取り出す際の処理時間の見積り値(単位は内部表現)
    9389 */
    94 #define GET_TOLERANCE   (100U)  /* ˆ—’x‚ê‚ÌŒ©Ï‚è’li’PˆÊ‚Í“à•”•\Œ»j*/
     90#define GET_TOLERANCE   (100U)  /* 処理遅れの見積り値(単位は内部表現)*/
    9591#define BEFORE_IREQ(clock) \
    9692                ((clock) >= (TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE))
    9793
    9894/*
    99  *  ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}ƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^‚̐ݒè’l
     95 *  コンペアマッチタイマコントロールレジスタの設定値
    10096 */
    10197/*
    102  *  ƒNƒƒbƒN‘I‘ðƒrƒbƒg
     98 *  クロック選択ビット
    10399 *
    104  *  bit7‚Í—\–ñ—̈æ‚Å‚ ‚è, ‘ž‚Ý‚Í1ŒÅ’è
     100 *  bit7は予約領域であり, 書込みは1固定
    105101 */
    106102#define CMT_PCLK_DIV_8                  (0x0080U)
     
    110106
    111107/*
    112  *  ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}ƒRƒ“ƒXƒ^ƒ“ƒgƒŒƒWƒXƒ^iCMCORj
     108 *  コンペアマッチタイマコンスタントレジスタ(CMCOR)
    113109 *
    114  *  ƒRƒ“ƒyƒAƒ}ƒbƒ`ŽüŠú‚ð1ms‚Æ‚·‚éD
    115  *  Žü•Óƒ‚ƒWƒ
    116 [ƒ‹ƒNƒƒbƒNiPCLKj48MHz‚ð8•ªŽü‚·‚é‚̂ŁC
    117  *  1ŽüŠú‚ ‚½‚è166.7nsec‚Æ‚È‚èC6000ŽüŠú‚Å1msiƒ^ƒCƒ€ƒeƒBƒbƒN‚ÌŽüŠúj‚Æ‚·‚éD
     110 *  コンペアマッチ周期を1msとする.
     111 *  周辺モジュールクロック(PCLK)48MHzを8分周するので,
     112 *  1周期あたり166.7nsecとなり,6000周期で1ms(タイムティックの周期)とする.
    118113 */
    119114#define CMCOR_PERIOD                    (TIMER_CLOCK)
    120115
    121116/*
    122  * ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}Š„‚荞‚Ý—v‹æÝ’背ƒWƒXƒ^iiISELRijii= Š„‚荞‚݃xƒNƒ^”ԍ†j
     117 * コンペアマッチタイマ割り込み要求先設定レジスタi(ISELRi)(i= 割り込みベクタ番号)
    123118 */
    124119#define ICU_ISEL_CPU                    (0x00U)
     
    128123
    129124/*
    130  *  ƒ^ƒCƒ}‚Ì‹N“®ˆ—
     125 *  タイマの起動処理
    131126 *
    132  *  ƒ^ƒCƒ}‚ð‰Šú‰»‚µCŽüŠú“I‚ȃ^ƒCƒ}Š„ž‚Ý—v‹‚𔭐¶‚³‚¹‚éD
     127 *  タイマを初期化し,周期的なタイマ割込み要求を発生させる.
    133128 */
    134129extern void     target_timer_initialize(intptr_t exinf);
    135130
    136131/*
    137  *  ƒ^ƒCƒ}‚Ì’âŽ~ˆ—
     132 *  タイマの停止処理
    138133 *
    139  *  ƒ^ƒCƒ}‚Ì“®ì‚ð’âŽ~‚³‚¹‚éD
     134 *  タイマの動作を停止させる.
    140135 */
    141136extern void     target_timer_terminate(intptr_t exinf);
    142137
    143138/*
    144  *  ƒ^ƒCƒ}ƒŒƒWƒXƒ^’l‚̓ǂݏo‚µ
     139 *  タイマレジスタ値の読み出し
    145140 */
    146141Inline uint16_t rx630_cmt_getcount(void)
     
    150145
    151146/*
    152  *  ƒ^ƒCƒ}ƒŒƒWƒXƒ^’l‚̏‘‚«ž‚Ý
     147 *  タイマレジスタ値の書き込み
    153148 */
    154149Inline void rx630_cmt_setcount(uint16_t count)
     
    158153
    159154/*
    160  *  ƒ^ƒCƒ}‚ÌŒ»Ý’l‚̓Ǐo‚µ
     155 *  タイマの現在値の読出し
    161156 */
    162157Inline CLOCK
    163158target_timer_get_current(void)
    164159{
    165         /* ƒAƒbƒvƒJƒEƒ“ƒg‚Ì‚½‚߃^ƒCƒ}ƒŒƒWƒXƒ^’l‚ð‚»‚Ì‚Ü‚Ü•Ô‚·   */
     160        /* アップカウントのためタイマレジスタ値をそのまま返す    */
    166161        return (rx630_cmt_getcount());
    167162}
    168163
    169164/*
    170  *  ƒ^ƒCƒ}Š„ž‚Ý—v‹‚̃`ƒFƒbƒN
     165 *  タイマ割込み要求のチェック
    171166 */
    172167Inline bool_t
     
    177172
    178173/*
    179  *  ƒ^ƒCƒ}Š„ž‚݃nƒ“ƒhƒ‰
     174 *  タイマ割込みハンドラ
    180175 */
    181176extern void     target_timer_handler(void);
  • UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_unrename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
Note: See TracChangeset for help on using the changeset viewer.