Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPKernelObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#
     
    5439#++
    5540
    56 #== celltype プラグインのå
    57 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     41#== celltype プラグインの共通の親クラス
    5842class HRPKernelObjectPlugin < CelltypePlugin
    5943    # @@obj_hash = {}
    6044
    6145    #@celltype:: Celltype
    62     #@option:: String     :オプション文字列
     46    #@option:: String     :オプション文字列
    6347    def initialize( celltype, option )
    6448        super
    6549        #
    66         #  それぞれのカーネルオブジェクトを解析対象セルタイプに追加
    67         #  目的:
    68         #   - カーネルオブジェクトのセルをメモリ保護対象外とする
    69         #    - カーネルオブジェクト本体の管理はTECSでなくOSで実施するため
    70         #   - カーネルオブジェクトのセルへのアクセスを直接関数呼出し
    71         #   ã€€ã¨ã™ã‚‹
    72         #    - システムサービス呼出しはOSが提供するため
     50        #  それぞれのカーネルオブジェクトを解析対象セルタイプに追加
     51        #  目的:
     52        #   - カーネルオブジェクトのセルをメモリ保護対象外とする
     53        #    - カーネルオブジェクト本体の管理はTECSでなくOSで実施するため
     54        #   - カーネルオブジェクトのセルへのアクセスを直接関数呼出し
     55        #    とする
     56        #    - システムサービス呼出しはOSが提供するため
    7357        HRPKernelObjectPlugin.set_celltype(celltype)
    7458    end
    7559 
    7660    #=== HRPKernelObjectPlugin#print_cfg_cre
    77     # 各種カーネルオブジェクトのCRE_*の出力
    78     # file:: FILE:     å‡ºåŠ›å
    79 ˆãƒ•ã‚¡ã‚¤ãƒ«
    80     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    81     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     61    # 各種カーネルオブジェクトのCRE_*の出力
     62    # file:: FILE:     出力先ファイル
     63    # val :: string:   カーネルオブジェクトの属性の解析結果
     64    # tab :: string:   インデント用のtab
    8265    def print_cfg_cre(file, cell, val, tab)
    8366        raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin"
     
    8568 
    8669    #=== HRPKernelObjectPlugin#print_cfg_sac
    87     # 各種カーネルオブジェクトのSAC_*の出力
    88     # file:: FILE:     å‡ºåŠ›å
    89 ˆãƒ•ã‚¡ã‚¤ãƒ«
    90     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    91     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿
     70    # 各種カーネルオブジェクトのSAC_*の出力
     71    # file:: FILE:     出力先ファイル
     72    # val :: string:   カーネルオブジェクトの属性の解析結果
     73    # acv :: string:   アクセスベクタ
    9274    def print_cfg_sac(file, val, acv)
    9375        raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin"
     
    9577 
    9678    #
    97     #  セルタイププラグインの本体メソッド
    98     #   - 静的APIの生成
    99     #  file:: FILE:     å‡ºåŠ›å
    100 ˆãƒ•ã‚¡ã‚¤ãƒ«
     79    #  セルタイププラグインの本体メソッド
     80    #   - 静的APIの生成
     81    #  file:: FILE:     出力先ファイル
    10182    #
    10283    def gen_factory file
     
    10485
    10586        #
    106         # 対象となるすべてのセルについて、受け口に結合されている
    107         # セルの所属ドメインを解析
    108         #  - 生成すべきcfgファイル名を取得するためにå¿
    109 è¦
     87        # 対象となるすべてのセルについて、受け口に結合されている
     88        # セルの所属ドメインを解析
     89        #  - 生成すべきcfgファイル名を取得するために必要
    11090        #
    11191        if !HRPKernelObjectPlugin.isChecked()
     
    11595        end
    11696
    117         # 追記するために AppFile を使う(文字コード変換されない)
     97        # 追記するために AppFile を使う(文字コード変換されない)
    11898        file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    11999        file2.print "\n/* Generated by #{self.class.name} */\n\n"
     
    123103                dbgPrint "===== begin check my domain #{cell.get_name} =====\n"
    124104                #
    125                 #  カーネルオブジェクトの属性を,valにコピー
     105                #  カーネルオブジェクトの属性を,valにコピー
    126106                #
    127107                val = {}
     
    131111                        val[a.get_name] = []
    132112                        if j = cell.get_join_list.get_item(a.get_name)
    133                             # セル生成時に初期化する場合
     113                            # セル生成時に初期化する場合
    134114                            j.get_rhs.each { |elem|
    135115                                val[a.get_name] << elem.to_s
    136116                            }
    137117                        elsif i = a.get_initializer
    138                             # セルタイプの初期化値を使う場合
     118                            # セルタイプの初期化値を使う場合
    139119                            i.each { |elem|
    140120                                val[a.get_name] << elem.to_s
     
    145125                    else
    146126                        if j = cell.get_join_list.get_item(a.get_name)
    147                             # セル生成時に初期化する場合
     127                            # セル生成時に初期化する場合
    148128                            val[a.get_name] = j.get_rhs.to_s
    149129                        elsif i = a.get_initializer
    150                             # セルタイプの初期化値を使う場合
     130                            # セルタイプの初期化値を使う場合
    151131                            val[a.get_name] = i.to_s
    152132                        else
     
    155135                    end
    156136                }
    157                 # generate.rbを参考に
    158                 # $id$を置換
     137                # generate.rbを参考に
     138                # $id$を置換
    159139                if val[:id].nil? != true
    160140                    name_array = @celltype.get_name_array( cell )
    161141                    val[:id]   = @celltype.subst_name( val[:id], name_array )
    162142                end
    163                 # $cbp$の代わり
     143                # $cbp$の代わり
    164144                cell_domain_root = cell.get_region.get_domain_root
    165145                cell_domain_type = cell.get_region.get_domain_root.get_domain_type
    166146
    167                 # CRE_XXX/DEF_XXXの生成
     147                # CRE_XXX/DEF_XXXの生成
    168148                if cell_domain_type.get_option.to_s != "OutOfDomain"
    169                     # 保護ドメインに属する場合
     149                    # 保護ドメインに属する場合
    170150                    if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    171                         # その保護ドメインの.cfgが生成されていない場合
     151                        # その保護ドメインの.cfgが生成されていない場合
    172152                        HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    173153                        dbgPrint "~~~~~ #{cell_domain_root.get_name.to_s} is registered!\n"
     
    189169                    file3.close
    190170                else
    191                     # 無所属の場合
     171                    # 無所属の場合
    192172                    dbgPrint "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n"
    193173                    # print "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n"
     
    197177                    else
    198178#                      if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    199 #                        # その保護ドメインの.cfgが生成されていない場合
     179#                        # その保護ドメインの.cfgが生成されていない場合
    200180#                        HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    201181#                        file2.puts "INCLUDE(\"#{$gen}/tecsgen_#{cell_domain_root.get_name.to_s}.cfg\");\n"
     
    211191
    212192                #
    213                 # SAC_XXXの生成
     193                # SAC_XXXの生成
    214194                #
    215195                if !val[:accessPattern1].nil?
     
    224204                    acv_tmp = []
    225205                    domain_roots = HRPPlugin.get_inter_domain_join_roots cell
    226                     # 結合å
    227 ˆã‚»ãƒ«ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’加える
     206                    # 結合先セルのドメインを加える
    228207                    if cell_domain_type.get_kind != :OutOfDomain then
    229208                      domain_roots << cell_domain_root
     
    237216                      when :OutOfDomain
    238217                        if cell_domain_type.get_kind == :OutOfDomain then
    239                           # 呼びå
    240 ƒã‚‚、呼びå
    241 ˆã‚‚ OutOfDomain の場合
     218                          # 呼び元も、呼び先も OutOfDomain の場合
    242219                          acv_tmp << "TACP_SHARED"
    243220                        end
     
    246223                    acv_tmp.uniq!
    247224                    if acv_tmp.length == 0 then
    248                       # 呼びå
    249 ˆã‚»ãƒ«ãŒç„¡æ‰€å±žã‹ã¤ã€å‘¼ã³å
    250 ƒã‚‚無所属のみ、または結合無しの場合
     225                      # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合
    251226                      acv_tmp = [ "TACP_SHARED" ]
    252227                    end
     
    265240                                when :user
    266241                                  if dr.get_namespace_path != cell.get_region.get_domain_root.get_namespace_path
    267                                     # 他のユーザードメインからの結合
     242                                    # 他のユーザードメインからの結合
    268243                                    if( b_warn == false ) then
    269244                                      cdl_error( "HRP9999 '$1': kernel object joined from other user domain. kernel object joined from multi-user-domain must be placed out of domain", cell.get_name )
     
    273248                                when :OutOfDomain
    274249                                  if( b_info == false ) then
    275                                     # 無所属からの結合
     250                                    # 無所属からの結合
    276251                                    # cdl_error( "HRP9999 kernel object joined from out of domain" )
    277252                                    if cell_domain_type.get_kind == :OutOfDomain
    278                                       # このæƒ
    279 å ±ã¯ã€ä¸è¦ã¨åˆ¤æ–­ã™ã‚‹ (無所属から無所属へ結合があると、アクセス許可ベクタが設定されない)
     253                                      # この情報は、不要と判断する (無所属から無所属へ結合があると、アクセス許可ベクタが設定されない)
    280254                                      # cdl_info2( cell.get_locale, "HRP9999 '$1': kernel object joined from out of domain, access vector is not set", cell.get_name )
    281255                                      b_info = true
     
    289263                            else
    290264                              # p "OutOfDomainCell"
    291                               # 無所属のセル
    292                               # 結合å
    293 ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã«è¨±å¯ã™ã‚‹
    294                               # 結合å
    295 ƒã«ç„¡æ‰€å±žã®ã‚»ãƒ«ãŒã‚ると、TACP_SHARED が設定される. フロー解析してドメインを特定できるのが、あるべき仕様
     265                              # 無所属のセル
     266                              # 結合元ドメインに許可する
     267                              # 結合元に無所属のセルがあると、TACP_SHARED が設定される. フロー解析してドメインを特定できるのが、あるべき仕様
    296268                            end
    297269                            if acp == "OMIT"
     
    300272                        end
    301273                    }
    302                     #各種SACの生成
     274                    #各種SACの生成
    303275                    domainOption = cell_domain_type.get_option
    304276                    # p "domain_root ", cell.get_region.get_domain_root.get_name
    305277                    if domainOption != "OutOfDomain" || cell.get_region.get_domain_root.get_name != "::"
    306                         # 保護ドメインに属する場合
     278                        # 保護ドメインに属する場合
    307279                        file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" )
    308280                        print_cfg_sac(file3, val, acv)
    309281                        file3.close
    310282                    else
    311                         # 無所属の場合
     283                        # 無所属の場合
    312284                        print_cfg_sac(file2, val, acv)
    313285                    end
     
    321293    end
    322294
    323     # カーネルオブジェクトセルタイプの管理
    324     # HRPKernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
     295    # カーネルオブジェクトセルタイプの管理
     296    # HRPKernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
    325297    @@checked = false
    326298    @@celltype_list = []
Note: See TracChangeset for help on using the changeset viewer.