Ignore:
Timestamp:
Aug 3, 2017, 10:46:41 PM (7 years ago)
Author:
coas-nagasima
Message:

プロパティの文字コードにUTF-8を追加、キーワードを削除

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asp3_gr_sakura/trunk/kernel/kernel.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: kernel.trb 716 2016-03-31 06:16:23Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿ã®ãƒ‘ス2の生成スクリプト
    60 #
    61 
    62 #
    63 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの指定
     44#               コンフィギュレータのパス2の生成スクリプト
     45#
     46
     47#
     48タイムスタンプファイルの指定
    6449#
    6550$timeStampFileName = "kernel_cfg.timestamp"
    6651
    6752#
    68 #  kernel_cfg.hのå
    69 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     53#  kernel_cfg.hの先頭部分の生成
    7054#
    7155$kernelCfgH = GenFile.new("kernel_cfg.h")
     
    7761
    7862#
    79 #  kernel_cfg.cのå
    80 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     63#  kernel_cfg.cの先頭部分の生成
    8164#
    8265$kernelCfgC = GenFile.new("kernel_cfg.c")
     
    9275
    9376#
    94 ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–(#include)
     77インクルードディレクティブ(#include)
    9578#
    9679$kernelCfgC.comment_header("Include Directives")
     
    10184
    10285#
    103 #  スタック領域の確保関数
    104 #
    105 #  スタック領域の定義分と,スタック領域のサイズ記述をé
    106 åˆ—で返す.
     86#  スタック領域の確保関数
     87#
     88#  スタック領域の定義分と,スタック領域のサイズ記述を配列で返す.
    10789#
    10890unless defined? AllocStack()
    10991  def AllocStack(stack, size)
    110     # 大きい方に丸めたサイズで確保する[NGKI1050][NGKI3220ï¼½
     92    # 大きい方に丸めたサイズで確保する[NGKI1050][NGKI3220]
    11193    $kernelCfgC.add("static STK_T #{stack}[COUNT_STK_T(#{size})];")
    11294    return("ROUND_STK_T(#{size})")
     
    11597
    11698#
    117 #  カーネルオブジェクトに関するæƒ
    118 å ±ã®ç”Ÿæˆï¼ˆä»®æƒ³ã‚¯ãƒ©ã‚¹ï¼‰
     99#  カーネルオブジェクトに関する情報の生成(仮想クラス)
    119100#
    120101class KernelObject
     
    131112
    132113  def generate()
    133     # AID_@OBJの処理
     114    # AID_@OBJの処理
    134115    numAutoObjid = 0
    135116    $cfgData["AID_#{@OBJ}".to_sym].each do |key, params|
     
    138119    numObjid = $cfgData[@api].size + numAutoObjid
    139120
    140     # kernel_cfg.hの生成
     121    # kernel_cfg.hの生成
    141122    $kernelCfgH.add("#define TNUM_#{@OBJ}ID\t#{numObjid}")
    142123
    143     # オブジェクトのID番号のマクロ定義の生成
     124    # オブジェクトのID番号のマクロ定義の生成
    144125    $cfgData[@api].sort.each do |key, params|
    145126      $kernelCfgH.add("#define #{params[@objid]}\t#{params[@objid].val}")
     
    147128    $kernelCfgH.add()
    148129
    149     # オブジェクトのID番号を保持する変数
     130    # オブジェクトのID番号を保持する変数
    150131    if $USE_EXTERNAL_ID
    151132      $cfgData[@api].sort.each do |key, params|
     
    156137    end
    157138
    158     # 静的に生成されたオブジェクトの数
     139    # 静的に生成されたオブジェクトの数
    159140    $kernelCfgC.add("#define TNUM_S#{@OBJ}ID\t#{$cfgData[@api].size}")
    160141
    161     # オブジェクトID番号の最大値
     142    # オブジェクトID番号の最大値
    162143    $kernelCfgC.add("const ID _kernel_tmax_#{@obj}id" \
    163144                                                        " = (TMIN_#{@OBJ}ID + TNUM_#{@OBJ}ID - 1);")
     
    165146                                                        " = (TMIN_#{@OBJ}ID + TNUM_S#{@OBJ}ID - 1);")
    166147
    167     # データ構造
     148    # データ構造
    168149    if $cfgData[@api].size > 0
    169       # 事前準備(エラーチェック,メモリ領域の生成)
     150      # 事前準備(エラーチェック,メモリ領域の生成)
    170151      $cfgData[@api].sort.each do |key, params|
    171152        prepare(key, params)
    172153      end
    173154
    174       # オブジェクトå
    175 ¨ä½“に対してå¿
    176 è¦ãªãƒ¡ãƒ¢ãƒªé ˜åŸŸã®ç”Ÿæˆï¼ˆã‚ªãƒ—ション)
     155      # オブジェクト全体に対して必要なメモリ領域の生成(オプション)
    177156      if respond_to?(:generateData)
    178157        generateData()
    179158      end
    180159
    181       # オブジェクト初期化ブロックの生成
     160      # オブジェクト初期化ブロックの生成
    182161      $kernelCfgC.add("const #{@OBJ_S}INIB _kernel_#{@obj_s}inib_table" \
    183162                                                                                                        "[TNUM_S#{@OBJ}ID] = {")
     
    193172    end
    194173
    195     # 動的生成オブジェクト用のオブジェクト初期化ブロック
     174    # 動的生成オブジェクト用のオブジェクト初期化ブロック
    196175    @inibList.each do |type, array|
    197176      if numAutoObjid > 0
     
    203182
    204183    if numObjid > 0
    205       # オブジェクト管理ブロックの生成
     184      # オブジェクト管理ブロックの生成
    206185      $kernelCfgC.add2("#{@OBJ_S}CB _kernel_#{@obj_s}cb_table" \
    207186                                                                                                        "[TNUM_#{@OBJ}ID];")
    208187
    209       # オブジェクト初期化関数の追加
     188      # オブジェクト初期化関数の追加
    210189      $initializeFunctions.push("_kernel_initialize_#{@object}();")
    211190    else
     
    217196
    218197#
    219 é€šçŸ¥ãƒãƒ³ãƒ‰ãƒ©ã®ç”Ÿæˆé–¢æ•°
     198通知ハンドラの生成関数
    220199#
    221200def generateNotifyHandler(key, params, objid)
    222   # パラメータを変数に格納
     201  # パラメータを変数に格納
    223202  nfymode = params[:nfymode]
    224203  nfymode1 = nfymode & 0x0f
     
    227206  par2 = params[:par2]
    228207
    229   # 通知処理のパラメータ数による補正処理
     208  # 通知処理のパラメータ数による補正処理
    230209  if nfymode == $TNFY_HANDLER || nfymode1 == $TNFY_SETVAR \
    231210                                                                || nfymode1 == $TNFY_SETFLG \
    232211                                                                || nfymode1 == $TNFY_SNDDTQ
    233     # 通知処理のパラメータが2つの場合
     212    # 通知処理のパラメータが2つの場合
    234213        numpar = 2
    235214        epar1 = params[:par3]
    236215        epar2 = params[:par4]
    237216  else
    238     # 通知処理のパラメータが1つの場合
     217    # 通知処理のパラメータが1つの場合
    239218    numpar = 1
    240219    epar1 = params[:par2]
     
    242221  end
    243222
    244   # パラメータ数のチェック
     223  # パラメータ数のチェック
    245224  if (numpar == 2 && par2.nil?) || (nfymode2 != 0 && epar1.nil?) \
    246225                                                                || (nfymode2 == $TENFY_SETFLG && epar2.nil?)
    247     # パラメータが足りない場合
     226    # パラメータが足りない場合
    248227    error_api(params, "too few parameters for nfymode `#{nfymode}' " \
    249228                                                                                        "in %apiname of %#{objid}")
    250229  elsif (nfymode2 == 0 && !epar1.nil?) \
    251230                                        || (nfymode2 != $TENFY_SETFLG && !epar2.nil?)
    252     # パラメータが多すぎる場合
     231    # パラメータが多すぎる場合
    253232    error_api(params, "too many parameters for nfymode `#{nfymode}' " \
    254233                                                                                        "in %apiname of %#{objid}")
    255234  elsif nfymode == $TNFY_HANDLER
    256     # タイムイベントハンドラの呼出し
     235    # タイムイベントハンドラの呼出し
    257236    funcname = "(NFYHDR)(#{par2})"
    258237  else
    259     # 通知ハンドラの関数名
     238    # 通知ハンドラの関数名
    260239    funcname = "_kernel_nfyhdr_#{params[objid]}"
    261240
    262     # エラー通知のための変数のアドレスとオブジェクトIDを格納する
    263     # 変数の生成(エラーチェックのためにå¿
    264 è¦ï¼‰
     241    # エラー通知のための変数のアドレスとオブジェクトIDを格納する
     242    # 変数の生成(エラーチェックのために必要)
    265243    if nfymode2 == $TENFY_SETVAR || nfymode2 == $TENFY_INCVAR
    266244      $kernelCfgC.add2("intptr_t *const #{funcname}_p_evar =" \
     
    276254    end
    277255
    278     # 関数のå
    279 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     256    # 関数の先頭部分の生成
    280257    $kernelCfgC.add("static void")
    281258    $kernelCfgC.add("#{funcname}(intptr_t exinf)")
     
    283260
    284261    if nfymode2 == 0
    285       # エラー通知がない場合
     262      # エラー通知がない場合
    286263      errorCode = "(void) "
    287264    else
    288       # エラー通知がある場合
     265      # エラー通知がある場合
    289266      $kernelCfgC.add2("\tER\tercd;")
    290267      errorCode = "ercd = "
    291268    end
    292269
    293     # イベント通知処理の処理
     270    # イベント通知処理の処理
    294271    if nfymode1 == $TNFY_SETVAR && nfymode2 == 0
    295       # 変数の設定
     272      # 変数の設定
    296273      $kernelCfgC.add("\t*((intptr_t *) exinf) = (#{par2});")
    297274    elsif nfymode1 == $TNFY_INCVAR && nfymode2 == 0
    298       # 変数のインクリメント
     275      # 変数のインクリメント
    299276      $kernelCfgC.add("\t(void) loc_cpu();")
    300277      $kernelCfgC.add("\t*((intptr_t *) exinf) += 1;")
    301278      $kernelCfgC.add("\t(void) unl_cpu();")
    302279    elsif nfymode1 == $TNFY_ACTTSK
    303       # タスクの起動
     280      # タスクの起動
    304281      $kernelCfgC.add("\t#{errorCode}act_tsk((ID) exinf);")
    305282    elsif nfymode1 == $TNFY_WUPTSK
    306       # タスクの起床
     283      # タスクの起床
    307284      $kernelCfgC.add("\t#{errorCode}wup_tsk((ID) exinf);")
    308285    elsif nfymode1 == $TNFY_SIGSEM
    309       # セマフォの返却
     286      # セマフォの返却
    310287      $kernelCfgC.add("\t#{errorCode}sig_sem((ID) exinf);")
    311288    elsif nfymode1 == $TNFY_SETFLG
    312       # イベントフラグのセット
     289      # イベントフラグのセット
    313290      $kernelCfgC.add("\t#{errorCode}set_flg(((ID) exinf), #{par2});")
    314291    elsif nfymode1 == $TNFY_SNDDTQ
    315       # データキューへの送信
     292      # データキューへの送信
    316293      $kernelCfgC.add("\t#{errorCode}psnd_dtq(((ID) exinf), #{par2});")
    317294    else
     
    320297                       
    321298    if nfymode2 != 0
    322       # エラー通知処理の処理
     299      # エラー通知処理の処理
    323300      $kernelCfgC.add("\tif (ercd != E_OK) {")
    324301
    325302
    326303      if nfymode2 == $TENFY_SETVAR
    327         # 変数の設定
     304        # 変数の設定
    328305        $kernelCfgC.add("\t\t*#{funcname}_p_evar = (intptr_t) ercd;")
    329306      elsif nfymode2 == $TENFY_INCVAR
    330         # 変数のインクリメント
     307        # 変数のインクリメント
    331308        $kernelCfgC.add("\t\t(void) loc_cpu();")
    332309        $kernelCfgC.add("\t\t*#{funcname}_p_evar += 1;")
    333310        $kernelCfgC.add("\t\t(void) unl_cpu();")
    334311      elsif nfymode2 == $TENFY_ACTTSK
    335         # タスクの起動
     312        # タスクの起動
    336313        $kernelCfgC.add("\t\t(void) act_tsk(#{funcname}_etskid);")
    337314      elsif nfymode2 == $TENFY_WUPTSK
    338         # タスクの起床
     315        # タスクの起床
    339316        $kernelCfgC.add("\t\t(void) wup_tsk(#{funcname}_etskid);")
    340317      elsif nfymode2 == $TENFY_SIGSEM
    341         # セマフォの返却
     318        # セマフォの返却
    342319        $kernelCfgC.add("\t\t(void) sig_sem(#{funcname}_esemid);")
    343320      elsif nfymode2 == $TENFY_SETFLG
    344         # イベントフラグのセット
     321        # イベントフラグのセット
    345322        $kernelCfgC.add("\t\t(void) set_flg(#{funcname}_eflgid, #{epar2});")
    346323      elsif nfymode2 == $TENFY_SNDDTQ
    347         # データキューへの送信
     324        # データキューへの送信
    348325        $kernelCfgC.add("\t\t(void) psnd_dtq(#{funcname}_edtqid," \
    349326                                                                                                        " (intptr_t) ercd);")
     
    354331    end
    355332
    356     # 関数の末尾部分の生成
     333    # 関数の末尾部分の生成
    357334    $kernelCfgC.add2("}")
    358335  end
     
    361338
    362339#
    363 å„機能モジュールのコンフィギュレーション
     340各機能モジュールのコンフィギュレーション
    364341#
    365342$initializeFunctions = []
     
    378355
    379356#
    380 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸ
     357非タスクコンテキスト用のスタック領域
    381358#
    382359$kernelCfgC.comment_header("Stack Area for Non-task Context")
    383360
    384361if $cfgData[:DEF_ICS].size == 0
    385   # DEF_ICSがない場合のデフォルト値の設定
     362  # DEF_ICSがない場合のデフォルト値の設定
    386363  if $DEFAULT_ISTK.nil?
    387     # スタック領域の自動割付け
     364    # スタック領域の自動割付け
    388365    istksz = AllocStack("_kernel_istack", "DEFAULT_ISTKSZ")
    389366    istk = "_kernel_istack"
     
    393370  end
    394371else
    395   # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216ï¼½
     372  # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216]
    396373  if $cfgData[:DEF_ICS].size > 1
    397374    error("E_OBJ: too many DEF_ICS")
    398375  end
    399376
    400   # DEF_ICSがある場合の処理
     377  # DEF_ICSがある場合の処理
    401378  params = $cfgData[:DEF_ICS][1]
    402379
    403   # パラメータが省略された時のデフォルト値の設定
     380  # パラメータが省略された時のデフォルト値の設定
    404381  params[:istk] ||= "NULL"
    405382
    406   # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
    407   # よりも小さい場合(E_PAR)[NGKI3254ï¼½
     383  # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
     384  # よりも小さい場合(E_PAR)[NGKI3254]
    408385  if params[:istksz] < $TARGET_MIN_ISTKSZ
    409386    error_wrong("E_PAR", params, :istksz, "too small")
     
    411388
    412389  if params[:istk] == "NULL"
    413     # スタック領域の自動割付け
     390    # スタック領域の自動割付け
    414391    istksz = AllocStack("_kernel_istack", params[:istksz])
    415392    istk = "_kernel_istack"
    416393  else
    417     # istkszがスタック領域のサイズとして正しくない場合(E_PAR)[NGKI3222ï¼½
     394    # istkszがスタック領域のサイズとして正しくない場合(E_PAR)[NGKI3222]
    418395    if (params[:istksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0
    419396      error_wrong("E_PAR", params, :istksz, "not aligned")
     
    435412
    436413#
    437 ã‚«ãƒ¼ãƒãƒ«ãŒå‰²ã‚Šä»˜ã‘るメモリ領域
     414カーネルが割り付けるメモリ領域
    438415#
    439416$kernelCfgC.comment_header("Memory Area Allocated by Kernel")
    440417
    441418if $cfgData[:DEF_KMM].size == 0
    442   # DEF_KMMがない場合のデフォルト値の設定
     419  # DEF_KMMがない場合のデフォルト値の設定
    443420  kmmsz = "0"
    444421  kmm = "NULL"
    445422else
    446   # 静的API「DEF_KMM」が複数ある(E_OBJ)
     423  # 静的API「DEF_KMM」が複数ある(E_OBJ)
    447424  if ($cfgData[:DEF_KMM].size > 1)
    448425    error("E_OBJ: too many DEF_KMM")
    449426  end
    450427
    451   # DEF_KMMがある場合の処理
     428  # DEF_KMMがある場合の処理
    452429  params = $cfgData[:DEF_KMM][1]
    453430
    454   # パラメータが省略された時のデフォルト値の設定
     431  # パラメータが省略された時のデフォルト値の設定
    455432  params[:kmm] ||= "NULL"
    456433
    457   # kmmszが0の場合(E_PAR)
     434  # kmmszが0の場合(E_PAR)
    458435  if params[:kmmsz] == 0
    459436    error_wrong("E_PAR", params, :kmmsz, "zero")
     
    461438
    462439  if params[:kmm] == "NULL"
    463     # カーネルが割り付けるメモリ領域の自動割付け
     440    # カーネルが割り付けるメモリ領域の自動割付け
    464441    $kernelCfgC.add("static MB_T _kernel_memory" \
    465442                                        "[TOPPERS_COUNT_SZ(#{params[:kmmsz]}, sizeof(MB_T))];")
     
    467444    kmm = "_kernel_memory"
    468445  else
    469     # kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合
    470     # (E_PAR)
     446    # kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合
     447    # (E_PAR)
    471448    if (params[:kmmsz] & ($CHECK_MB_ALIGN - 1)) != 0
    472449      error_wrong("E_PAR", params, :kmmsz, "not aligned")
     
    484461
    485462#
    486 ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆç®¡ç†
     463タイムイベント管理
    487464#
    488465$kernelCfgC.comment_header("Time Event Management")
     
    492469
    493470#
    494 å„モジュールの初期化関数
     471各モジュールの初期化関数
    495472#
    496473$kernelCfgC.comment_header("Module Initialization Function")
     
    506483
    507484#
    508 åˆæœŸåŒ–ルーチン機能
     485初期化ルーチン機能
    509486#
    510487$kernelCfgC.comment_header("Initialization Routine")
    511488
    512 # エラーチェック
     489# エラーチェック
    513490$cfgData[:ATT_INI].each do |key, params|
    514   # iniatrが無効の場合(E_RSATR)[NGKI3241ï¼½
    515   #(TA_NULLでない場合)
     491  # iniatrが無効の場合(E_RSATR)[NGKI3241]
     492  #(TA_NULLでない場合)
    516493  if (params[:iniatr] != $TA_NULL)
    517494    error_illegal_sym("E_RSATR", params, :iniatr, :inirtn)
     
    519496end
    520497
    521 # 初期化ルーチンの実行関数の生成
     498# 初期化ルーチンの実行関数の生成
    522499$kernelCfgC.append(<<EOS)
    523500void
     
    532509
    533510#
    534 çµ‚了処理ルーチン機能
     511終了処理ルーチン機能
    535512#
    536513$kernelCfgC.comment_header("Termination Routine")
    537514
    538 # エラーチェック
     515# エラーチェック
    539516$cfgData[:ATT_TER].each do |key, params|
    540   # teratrが無効の場合(E_RSATR)[NGKI3248ï¼½
    541   #(TA_NULLでない場合)
     517  # teratrが無効の場合(E_RSATR)[NGKI3248]
     518  #(TA_NULLでない場合)
    542519  if (params[:teratr] != $TA_NULL)
    543520    error_illegal_sym("E_RSATR", params, :teratr, :terrtn)
     
    545522end
    546523
    547 # 終了処理ルーチンの実行関数の生成
     524# 終了処理ルーチンの実行関数の生成
    548525$kernelCfgC.append(<<EOS)
    549526void
     
    558535
    559536#
    560 #  kernel_cfg.hの末尾部分の生成
     537#  kernel_cfg.hの末尾部分の生成
    561538#
    562539$kernelCfgH.append(<<EOS)
Note: See TracChangeset for help on using the changeset viewer.