Ignore:
Timestamp:
May 2, 2017, 5:55:20 PM (7 years ago)
Author:
nmir-saito
Message:

Tracのソース閲覧時に文字化けするためmimetypewo

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_ssp/trunk/kernel.trb

    • Property svn:mime-type set to text/plain; charset=utf-8
    r284 r285  
    1111#               Nagoya Municipal Industrial Research Institute, JAPAN
    1212#
    13 #   ä¸Šè¨˜è‘—作権è€
    14 ã¯ï¼Œä»¥ä¸‹ã®(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
    15 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    16 #   å¤‰ãƒ»å†é
    17 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    18 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    19 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    20 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    21 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    22 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    24 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    25 #       è€
    26 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    27 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    28 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    29 #       ç”¨ã§ããªã„形で再é
    30 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    31 #       ã¨ï¼Ž
    32 #     (a) 再é
    33 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    34 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    35 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    36 #     (b) 再é
    37 å¸ƒã®å½¢æ
    38 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    39 #         å ±å‘Šã™ã‚‹ã“と.
    40 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    41 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトをå
    43 è²¬ã™ã‚‹ã“と.
    44 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    45 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    46 ãŠã‚ˆã³TOPPERSプロジェクトを
    47 #       å
    48 è²¬ã™ã‚‹ã“と.
    49 #
    50 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    51 ãŠ
    52 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    53 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    54 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    55 #   ã®è²¬ä»»ã‚’負わない.
     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#       免責すること.
     35#
     36#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40#   の責任を負わない.
    5641#
    5742#   $Id: kernel.trb 670 2016-03-03 15:08:11Z ertl-hiro $
     
    5944
    6045#
    61 #               ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿ã®ãƒ‘ス2の生成スクリプト
    62 #
    63 
    64 #
    65 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの指定
     46#               コンフィギュレータのパス2の生成スクリプト
     47#
     48
     49#
     50タイムスタンプファイルの指定
    6651#
    6752$timeStampFileName = "kernel_cfg.timestamp"
    6853
    6954#
    70 #  kernel_cfg.hのå
    71 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     55#  kernel_cfg.hの先頭部分の生成
    7256#
    7357$kernelCfgH = GenFile.new("kernel_cfg.h")
     
    7963
    8064#
    81 #  kernel_cfg.cのå
    82 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     65#  kernel_cfg.cの先頭部分の生成
    8366#
    8467$kernelCfgC = GenFile.new("kernel_cfg.c")
     
    9477
    9578#
    96 ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–(#include)
     79インクルードディレクティブ(#include)
    9780#
    9881$kernelCfgC.comment_header("Include Directives")
     
    10386
    10487#
    105 #  スタック領域の確保関数
    106 #
    107 #  スタック領域の定義分と,スタック領域のサイズ記述をé
    108 åˆ—で返す.
     88#  スタック領域の確保関数
     89#
     90#  スタック領域の定義分と,スタック領域のサイズ記述を配列で返す.
    10991#
    11092unless defined? AllocStack()
    11193  def AllocStack(stack, size)
    112     # 大きい方に丸めたサイズで確保する
     94    # 大きい方に丸めたサイズで確保する
    11395    $kernelCfgC.add("static STK_T #{stack}[COUNT_STK_T(#{size})];")
    11496    return("ROUND_STK_T(#{size})")
     
    11799
    118100#
    119 #  カーネルオブジェクトに関するæƒ
    120 å ±ã®ç”Ÿæˆï¼ˆä»®æƒ³ã‚¯ãƒ©ã‚¹ï¼‰
     101#  カーネルオブジェクトに関する情報の生成(仮想クラス)
    121102#
    122103class KernelObject
     
    129110  end
    130111
    131   # オブジェクトのID番号のマクロ定義生成
     112  # オブジェクトのID番号のマクロ定義生成
    132113  def generateIdMacro()
    133114    $cfgData[@api].sort.each do |key, params|
     
    138119
    139120  def generate()
    140     # kernel_cfg.hの生成
     121    # kernel_cfg.hの生成
    141122    $kernelCfgH.add("#define TNUM_#{@OBJ}ID\t#{$cfgData[@api].size}")
    142123
    143     # オブジェクトのID番号のマクロ定義の生成
     124    # オブジェクトのID番号のマクロ定義の生成
    144125    generateIdMacro()
    145126
    146     # オブジェクトのID番号を保持する変数
     127    # オブジェクトのID番号を保持する変数
    147128    if $USE_EXTERNAL_ID
    148129      $cfgData[@api].sort.each do |key, params|
     
    153134    end
    154135
    155     # オブジェクトID番号の最大値
     136    # オブジェクトID番号の最大値
    156137    $kernelCfgC.add2("const ID _kernel_tmax_#{@obj}id" \
    157138                      " = (TMIN_#{@OBJ}ID + TNUM_#{@OBJ}ID - 1);")
    158139
    159     # データ構造の生成
     140    # データ構造の生成
    160141    if respond_to?(:generateData)
    161142      generateData()
     
    163144
    164145    if $cfgData[@api].size() > 0
    165       # オブジェクト初期化関数の追加
     146      # オブジェクト初期化関数の追加
    166147      $initializeFunctions.push("_kernel_initialize_#{@object}();")
    167148    end
     
    170151
    171152#
    172 å„機能モジュールのコンフィギュレーション
     153各機能モジュールのコンフィギュレーション
    173154#
    174155$initializeFunctions = []
     
    182163
    183164#
    184 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸ
     165非タスクコンテキスト用のスタック領域
    185166#
    186167$kernelCfgC.comment_header("Stack Area for Non-task Context")
    187168
    188 # 非タスクコンテキスト用スタック領域のサイズ
     169# 非タスクコンテキスト用スタック領域のサイズ
    189170$istksz = 0
    190171
    191 # DEF_ICSのエントリが存在するか?
     172# DEF_ICSのエントリが存在するか?
    192173if $cfgData[:DEF_ICS].size == 0
    193   # ない場合,サイズは既定値(DEFAULT_ISTKSZ)を使う
     174  # ない場合,サイズは既定値(DEFAULT_ISTKSZ)を使う
    194175  $kernelCfgC.add2("#define TOPPERS_ISTKSZ      DEFAULT_ISTKSZ")
    195176  $istksz = $DEFAULT_ISTKSZ
    196177else
    197   # DEF_ICS のエントリがある場合
    198 
    199   # 静的API「DEF_ICS」が複数ある(E_OBJ)
     178  # DEF_ICS のエントリがある場合
     179
     180  # 静的API「DEF_ICS」が複数ある(E_OBJ)
    200181  if $cfgData[:DEF_ICS].size > 1
    201182    error("E_OBJ: too many DEF_ICS")
     
    204185  params = $cfgData[:DEF_ICS][1]
    205186
    206   # istksz に 0 を指定した場合(E_PAR)
     187  # istksz に 0 を指定した場合(E_PAR)
    207188  if params[:istksz] == 0
    208189    error_wrong("E_PAR", params, :istksz, "size is 0")
    209   # istk は常に NULL である (E_PAR)
     190  # istk は常に NULL である (E_PAR)
    210191  elsif params[:istk] != "NULL"
    211192    error_wrong("E_PAR", params, :istk, "must be NULL")
     
    217198
    218199#
    219 #  å
    220 ±æœ‰ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸ
    221 #      SSPではすべての処理単位のスタックをå
    222 ±æœ‰ã™ã‚‹ãŸã‚ï¼Œ
    223 #      ここでシステムå
    224 ¨ä½“のスタック領域を確保する.
    225 #
    226 
    227 #
    228 #  å
    229 ±æœ‰ã‚¹ã‚¿ãƒƒã‚¯ã®ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«æˆåŠŸã—たかどうか
    230 #  DEF_STK 処理中にエラーが発生した場合,この変数が false になる.
     200#  共有スタック領域
     201#      SSPではすべての処理単位のスタックを共有するため,
     202#      ここでシステム全体のスタック領域を確保する.
     203#
     204
     205#
     206#  共有スタックのコンフィギュレーションに成功したかどうか
     207#  DEF_STK 処理中にエラーが発生した場合,この変数が false になる.
    231208#
    232209$defstk_success = true
     
    234211$kernelCfgC.comment_header("Stack Area for System")
    235212
    236 # å
    237 ±æœ‰ã‚¹ã‚¿ãƒƒã‚¯ã®ã‚µã‚¤ã‚º
     213# 共有スタックのサイズ
    238214$stksz = 0
    239215
     
    241217stksz_str = ""
    242218
    243 # DEF_STK のエントリが存在するか?
     219# DEF_STK のエントリが存在するか?
    244220if $cfgData[:DEF_STK].size == 0
    245   # (1) DEF_STK のエントリがない場合
     221  # (1) DEF_STK のエントリがない場合
    246222  stk_str = "_kernel_stack"
    247223  stksz_str = AllocStack(stk_str, "TOPPERS_TSTKSZ+TOPPERS_ISTKSZ")
     
    249225  $stksz = $tstksz + $istksz
    250226else
    251   # (2) DEF_STK のエントリがある場合
    252 
    253   # 静的API「DEF_STK」が複数ある(E_OBJ)
     227  # (2) DEF_STK のエントリがある場合
     228
     229  # 静的API「DEF_STK」が複数ある(E_OBJ)
    254230  if $cfgData[:DEF_STK].size > 1
    255231    $defstk_success = false
     
    259235  params = $cfgData[:DEF_STK][1]
    260236
    261   # DEF_STK の stksz で 0 を指定した場合(E_PAR)
     237  # DEF_STK の stksz で 0 を指定した場合(E_PAR)
    262238  if params[:stksz] == 0
    263239    $defstk_success = false
     
    268244
    269245  if params[:stk] == "NULL"
    270     # stk が NULL の場合,スタック領域を自動割付け
     246    # stk が NULL の場合,スタック領域を自動割付け
    271247    stk_str = "_kernel_stack"
    272248    stksz_str = AllocStack(stk_str, "#{$stksz}")
    273249  else
    274     # stk が NULL 以外の場合(アプリ側でスタック領域を用意する場合)
    275 
    276     # stksz がターゲット毎に定まるアライメントサイズの倍数にアライメントされていない場合(E_PAR)
     250    # stk が NULL 以外の場合(アプリ側でスタック領域を用意する場合)
     251
     252    # stksz がターゲット毎に定まるアライメントサイズの倍数にアライメントされていない場合(E_PAR)
    277253    if (defined? $CHECK_STKSZ_ALIGN) && (($stksz & ($CHECK_STKSZ_ALIGN - 1)) != 0)
    278254      $defstk_success = false
     
    286262
    287263#
    288 # å
    289 ±æœ‰ã‚¹ã‚¿ãƒƒã‚¯ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸ
     264# 共有スタックのスタック領域
    290265#
    291266$kernelCfgC.add(<<EOS)
     
    302277
    303278#
    304 #  優å
    305 ˆåº¦å‰²ã‚Šå½“ておよびスタック設定に関する結果を標準出力へ表示
    306 #  その際,スタックサイズの指定値が実際の割当てサイズより大きいかを確認する.
     279#  優先度割り当ておよびスタック設定に関する結果を標準出力へ表示
     280#  その際,スタックサイズの指定値が実際の割当てサイズより大きいかを確認する.
    307281#
    308282if $defepr_success && $defstk_success
     
    324298
    325299#
    326 ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆç®¡ç†
     300タイムイベント管理
    327301#
    328302tnum_tmevt = $cfgData[:CRE_CYC].size + $cfgData[:CRE_ALM].size
     
    340314
    341315if tnum_tmevt > 0
    342   # オブジェクト初期化関数の追加
     316  # オブジェクト初期化関数の追加
    343317  $initializeFunctions.unshift("_kernel_initialize_time_event();")
    344318end
    345319
    346320#
    347 å„モジュールの初期化関数
     321各モジュールの初期化関数
    348322#
    349323$kernelCfgC.comment_header("Module Initialization Function")
     
    359333
    360334#
    361 åˆæœŸåŒ–ルーチン機能
     335初期化ルーチン機能
    362336#
    363337$kernelCfgC.comment_header("Initialization Routine")
    364338
    365 # エラーチェック
     339# エラーチェック
    366340$cfgData[:ATT_INI].each do |key, params|
    367   # iniatrが無効の場合(E_RSATR)
    368   #(TA_NULLでない場合)
     341  # iniatrが無効の場合(E_RSATR)
     342  #(TA_NULLでない場合)
    369343  if (params[:iniatr] != $TA_NULL)
    370344    error_illegal_sym("E_RSATR", params, :iniatr, :inirtn)
     
    372346end
    373347
    374 # 初期化ルーチンの実行関数の生成
     348# 初期化ルーチンの実行関数の生成
    375349$kernelCfgC.append(<<EOS)
    376350void
     
    385359
    386360#
    387 çµ‚了処理ルーチン機能
     361終了処理ルーチン機能
    388362#
    389363$kernelCfgC.comment_header("Termination Routine")
    390364
    391 # エラーチェック
     365# エラーチェック
    392366$cfgData[:ATT_TER].each do |key, params|
    393   # teratrが無効の場合(E_RSATR)
    394   #(TA_NULLでない場合)
     367  # teratrが無効の場合(E_RSATR)
     368  #(TA_NULLでない場合)
    395369  if (params[:teratr] != $TA_NULL)
    396370    error_illegal_sym("E_RSATR", params, :teratr, :terrtn)
     
    398372end
    399373
    400 # 終了処理ルーチンの実行関数の生成
     374# 終了処理ルーチンの実行関数の生成
    401375$kernelCfgC.append(<<EOS)
    402376void
     
    411385
    412386#
    413 #  kernel_cfg.hの末尾部分の生成
     387#  kernel_cfg.hの末尾部分の生成
    414388#
    415389$kernelCfgH.append(<<EOS)
Note: See TracChangeset for help on using the changeset viewer.