- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- 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
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 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 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # … … 54 39 #++ 55 40 56 #== celltype ãã©ã°ã¤ã³ã®å 57 ±éã®è¦ªã¯ã©ã¹ 41 #== celltype プラグインの共通の親クラス 58 42 class HRPKernelObjectPlugin < CelltypePlugin 59 43 # @@obj_hash = {} 60 44 61 45 #@celltype:: Celltype 62 #@option:: String : ãªãã·ã§ã³æåå46 #@option:: String :オプション文字列 63 47 def initialize( celltype, option ) 64 48 super 65 49 # 66 # ããããã®ã«ã¼ãã«ãªãã¸ã§ã¯ãã解æ対象ã»ã«ã¿ã¤ãã«è¿½å67 # ç®çï¼68 # - ã«ã¼ãã«ãªãã¸ã§ã¯ãã®ã»ã«ãã¡ã¢ãªä¿è·å¯¾è±¡å¤ã¨ãã69 # - ã«ã¼ãã«ãªãã¸ã§ã¯ãæ¬ä½ã®ç®¡çã¯TECSã§ãªãOSã§å®æ½ãããã70 # - ã«ã¼ãã«ãªãã¸ã§ã¯ãã®ã»ã«ã¸ã®ã¢ã¯ã»ã¹ãç´æ¥é¢æ°å¼åºã71 # ãã¨ãã72 # - ã·ã¹ãã ãµã¼ãã¹å¼åºãã¯OSãæä¾ãããã50 # それぞれのカーネルオブジェクトを解析対象セルタイプに追加 51 # 目的: 52 # - カーネルオブジェクトのセルをメモリ保護対象外とする 53 # - カーネルオブジェクト本体の管理はTECSでなくOSで実施するため 54 # - カーネルオブジェクトのセルへのアクセスを直接関数呼出し 55 # とする 56 # - システムサービス呼出しはOSが提供するため 73 57 HRPKernelObjectPlugin.set_celltype(celltype) 74 58 end 75 59 76 60 #=== 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 82 65 def print_cfg_cre(file, cell, val, tab) 83 66 raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin" … … 85 68 86 69 #=== 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: アクセスベクタ 92 74 def print_cfg_sac(file, val, acv) 93 75 raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin" … … 95 77 96 78 # 97 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ã®æ¬ä½ã¡ã½ãã 98 # - éçAPIã®çæ 99 # file:: FILE: åºåå 100 ãã¡ã¤ã« 79 # セルタイププラグインの本体メソッド 80 # - 静的APIの生成 81 # file:: FILE: 出力先ファイル 101 82 # 102 83 def gen_factory file … … 104 85 105 86 # 106 # 対象ã¨ãªããã¹ã¦ã®ã»ã«ã«ã¤ãã¦ãåãå£ã«çµåããã¦ãã 107 # ã»ã«ã®æå±ãã¡ã¤ã³ã解æ 108 # - çæãã¹ãcfgãã¡ã¤ã«åãåå¾ããããã«å¿ 109 è¦ 87 # 対象となるすべてのセルについて、受け口に結合されている 88 # セルの所属ドメインを解析 89 # - 生成すべきcfgファイル名を取得するために必要 110 90 # 111 91 if !HRPKernelObjectPlugin.isChecked() … … 115 95 end 116 96 117 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼97 # 追記するために AppFile を使う(文字コード変換されない) 118 98 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 119 99 file2.print "\n/* Generated by #{self.class.name} */\n\n" … … 123 103 dbgPrint "===== begin check my domain #{cell.get_name} =====\n" 124 104 # 125 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ãï¼valã«ã³ãã¼105 # カーネルオブジェクトの属性を,valにコピー 126 106 # 127 107 val = {} … … 131 111 val[a.get_name] = [] 132 112 if j = cell.get_join_list.get_item(a.get_name) 133 # ã»ã«çææã«åæåããå ´å113 # セル生成時に初期化する場合 134 114 j.get_rhs.each { |elem| 135 115 val[a.get_name] << elem.to_s 136 116 } 137 117 elsif i = a.get_initializer 138 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å118 # セルタイプの初期化値を使う場合 139 119 i.each { |elem| 140 120 val[a.get_name] << elem.to_s … … 145 125 else 146 126 if j = cell.get_join_list.get_item(a.get_name) 147 # ã»ã«çææã«åæåããå ´å127 # セル生成時に初期化する場合 148 128 val[a.get_name] = j.get_rhs.to_s 149 129 elsif i = a.get_initializer 150 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å130 # セルタイプの初期化値を使う場合 151 131 val[a.get_name] = i.to_s 152 132 else … … 155 135 end 156 136 } 157 # generate.rb ãåèã«158 # $id$ ãç½®æ137 # generate.rbを参考に 138 # $id$を置換 159 139 if val[:id].nil? != true 160 140 name_array = @celltype.get_name_array( cell ) 161 141 val[:id] = @celltype.subst_name( val[:id], name_array ) 162 142 end 163 # $cbp$ ã®ä»£ãã143 # $cbp$の代わり 164 144 cell_domain_root = cell.get_region.get_domain_root 165 145 cell_domain_type = cell.get_region.get_domain_root.get_domain_type 166 146 167 # CRE_XXX/DEF_XXX ã®çæ147 # CRE_XXX/DEF_XXXの生成 168 148 if cell_domain_type.get_option.to_s != "OutOfDomain" 169 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å149 # 保護ドメインに属する場合 170 150 if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s) 171 # ãã®ä¿è·ãã¡ã¤ã³ã®.cfgãçæããã¦ããªãå ´å151 # その保護ドメインの.cfgが生成されていない場合 172 152 HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s) 173 153 dbgPrint "~~~~~ #{cell_domain_root.get_name.to_s} is registered!\n" … … 189 169 file3.close 190 170 else 191 # ç¡æå±ã®å ´å171 # 無所属の場合 192 172 dbgPrint "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n" 193 173 # print "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n" … … 197 177 else 198 178 # if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s) 199 # # ãã®ä¿è·ãã¡ã¤ã³ã®.cfgãçæããã¦ããªãå ´å179 # # その保護ドメインの.cfgが生成されていない場合 200 180 # HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s) 201 181 # file2.puts "INCLUDE(\"#{$gen}/tecsgen_#{cell_domain_root.get_name.to_s}.cfg\");\n" … … 211 191 212 192 # 213 # SAC_XXX ã®çæ193 # SAC_XXXの生成 214 194 # 215 195 if !val[:accessPattern1].nil? … … 224 204 acv_tmp = [] 225 205 domain_roots = HRPPlugin.get_inter_domain_join_roots cell 226 # çµåå 227 ã»ã«ã®ãã¡ã¤ã³ãå ãã 206 # 結合先セルのドメインを加える 228 207 if cell_domain_type.get_kind != :OutOfDomain then 229 208 domain_roots << cell_domain_root … … 237 216 when :OutOfDomain 238 217 if cell_domain_type.get_kind == :OutOfDomain then 239 # å¼ã³å 240 ããå¼ã³å 241 ã OutOfDomain ã®å ´å 218 # 呼び元も、呼び先も OutOfDomain の場合 242 219 acv_tmp << "TACP_SHARED" 243 220 end … … 246 223 acv_tmp.uniq! 247 224 if acv_tmp.length == 0 then 248 # å¼ã³å 249 ã»ã«ãç¡æå±ãã¤ãå¼ã³å 250 ãç¡æå±ã®ã¿ãã¾ãã¯çµåç¡ãã®å ´å 225 # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合 251 226 acv_tmp = [ "TACP_SHARED" ] 252 227 end … … 265 240 when :user 266 241 if dr.get_namespace_path != cell.get_region.get_domain_root.get_namespace_path 267 # ä»ã®ã¦ã¼ã¶ã¼ãã¡ã¤ã³ããã®çµå242 # 他のユーザードメインからの結合 268 243 if( b_warn == false ) then 269 244 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 ) … … 273 248 when :OutOfDomain 274 249 if( b_info == false ) then 275 # ç¡æå±ããã®çµå250 # 無所属からの結合 276 251 # cdl_error( "HRP9999 kernel object joined from out of domain" ) 277 252 if cell_domain_type.get_kind == :OutOfDomain 278 # ãã®æ 279 å ±ã¯ãä¸è¦ã¨å¤æãã (ç¡æå±ããç¡æå±ã¸çµåãããã¨ãã¢ã¯ã»ã¹è¨±å¯ãã¯ã¿ãè¨å®ãããªã) 253 # この情報は、不要と判断する (無所属から無所属へ結合があると、アクセス許可ベクタが設定されない) 280 254 # cdl_info2( cell.get_locale, "HRP9999 '$1': kernel object joined from out of domain, access vector is not set", cell.get_name ) 281 255 b_info = true … … 289 263 else 290 264 # p "OutOfDomainCell" 291 # ç¡æå±ã®ã»ã« 292 # çµåå 293 ãã¡ã¤ã³ã«è¨±å¯ãã 294 # çµåå 295 ã«ç¡æå±ã®ã»ã«ãããã¨ãTACP_SHARED ãè¨å®ããã. ããã¼è§£æãã¦ãã¡ã¤ã³ãç¹å®ã§ããã®ããããã¹ãä»æ§ 265 # 無所属のセル 266 # 結合元ドメインに許可する 267 # 結合元に無所属のセルがあると、TACP_SHARED が設定される. フロー解析してドメインを特定できるのが、あるべき仕様 296 268 end 297 269 if acp == "OMIT" … … 300 272 end 301 273 } 302 # å種SACã®çæ274 #各種SACの生成 303 275 domainOption = cell_domain_type.get_option 304 276 # p "domain_root ", cell.get_region.get_domain_root.get_name 305 277 if domainOption != "OutOfDomain" || cell.get_region.get_domain_root.get_name != "::" 306 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å278 # 保護ドメインに属する場合 307 279 file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" ) 308 280 print_cfg_sac(file3, val, acv) 309 281 file3.close 310 282 else 311 # ç¡æå±ã®å ´å283 # 無所属の場合 312 284 print_cfg_sac(file2, val, acv) 313 285 end … … 321 293 end 322 294 323 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã«ã¿ã¤ãã®ç®¡ç324 # HRPKernelObjectPlugin ã¯ã©ã¹ã«å¯¾ãã¦ã¡ã½ããå¼åºããè¡ããã¨ãæ³å®295 # カーネルオブジェクトセルタイプの管理 296 # HRPKernelObjectPluginクラスに対してメソッド呼出しを行うことを想定 325 297 @@checked = false 326 298 @@celltype_list = [] -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.