- 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/HRPPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2014-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 # $Id$ … … 56 41 require_tecsgen_lib "HRPKernelObjectManager.rb" 57 42 # 58 # åã¡ã½ããã®å½¹å²ãã¯ãDomainPlugin.rb ãåç 59 §ã®ã㨠60 # HRPã«ã¼ãã«ç¨ãã¡ã¤ã³ãã©ã°ã¤ã³ 43 # 各メソッドの役割りは、DomainPlugin.rb を参照のこと 44 # HRPカーネル用ドメインプラグイン 61 45 class HRPPlugin < DomainPlugin 62 46 … … 72 56 else 73 57 cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'kernel' or 'user'", option ) 74 @option = "kernel" # ã¨ãããã kernel ãè¨å®ãã¦ãã58 @option = "kernel" # とりあえず kernel を設定しておく 75 59 end 76 60 end 77 61 78 62 def add_through_plugin( join, current_region, next_region, through_type ) 79 # join.get_owner:Cell 左辺ã®ã»ã« 80 # join.get_definition:Port å¼ã³å£ 81 # join.get_subscript:Integer or nil å¼ã³å£é 82 åã®æ·»æ° (Join::@subscript ã®èª¬æåç 83 §) 84 # join.get_cell:Cell å³è¾ºã®ã»ã« 85 # join.get_port_name:Symbol åãå£ 86 # get_rhs_subscript:Integer or nil åãå£é 87 åã®æ·»æ° (Join::@rhs_subscript ã®èª¬æåç 88 §) 63 # join.get_owner:Cell 左辺のセル 64 # join.get_definition:Port 呼び口 65 # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照) 66 # join.get_cell:Cell 右辺のセル 67 # join.get_port_name:Symbol 受け口 68 # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照) 89 69 # return [] 90 70 dbgPrint "MyDomainPlugin: add_through_plugin: #{current_region.get_name}=>#{next_region.get_name}, #{join.get_owner.get_name}.#{join.get_definition.get_name}=>#{join.get_cell.get_name}.#{join.get_port_name}, #{through_type}\n" … … 110 90 get_real_celltype(join.get_rhs_port1). 111 91 get_global_name) #oyama: get_name => get_global_name 112 # çµåå 113 ãã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã« 92 # 結合先がカーネルオブジェクトセル 114 93 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 115 # ä½ãããªãthrough94 # 何もしないthrough 116 95 # puts "***** #{join.get_cell.get_celltype.get_name} is kernel object" 117 96 return [] … … 121 100 # elsif next_domain.nil? 122 101 elsif next_domain.get_option.to_s == "OutOfDomain" 123 # # çµåå 124 ãç¡æå± 125 # # ä½ãããªãthrough 102 # # 結合先が無所属 103 # # 何もしないthrough 126 104 # # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 127 105 # puts "***** nil" … … 129 107 #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN 130 108 elsif current_domain.get_option.to_s != "kernel" && next_domain.get_option.to_s == "kernel" 131 # ã¦ã¼ã¶ãã¡ã¤ã³ããã«ã¼ãã«ãã¡ã¤ã³ã¸ã®çµå109 # ユーザドメインからカーネルドメインへの結合 132 110 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 133 111 # puts "***** svc" 134 112 return [ :HRPSVCPlugin, "" ] 135 113 elsif current_domain != next_domain 136 # å¥ã®ã¦ã¼ã¶ãã¡ã¤ã³ã¸ã®çµå114 # 別のユーザドメインへの結合 137 115 # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 138 116 # puts "***** rpc" … … 141 119 return [ :HRPRPCPlugin, "noClientSemaphore=false,PPAllocatorSize=256" ] 142 120 else 143 # ãã®ä»144 # ä½ãããªãthrough121 # その他 122 # 何もしないthrough 145 123 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 146 124 dbgPrint "warning: at HRP Join Check" … … 156 134 end 157 135 158 #== ãã¡ã¤ã³ç¨®å¥ãè¿ã136 #== ドメイン種別を返す 159 137 #return::Symbol :kernel, :user, :OutOfDomain 160 138 def get_kind … … 165 143 end 166 144 167 # ATT_MOD ãçææ¸ã¿ãã©ãã# 2017.8.27145 # ATT_MODを生成済みかどうか # 2017.8.27 168 146 @@generate_memory_module = false 169 147 170 @@include_extsvc_fncd = false # 17.07.26 æ«å®148 @@include_extsvc_fncd = false # 17.07.26 暫定 171 149 # 172 # ATT_MOD ã®çæ173 # gen_factory å®è¡æã«ã¯ï¼ãã¹ã¦ã®ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãçææ¸ã¿ã®ã¯ããªã®ã§ï¼174 # ã«ã¼ãã«APIã³ã¼ãã®ã¡ã¢ãªä¿è·ãçç¥ã§ããï¼150 # ATT_MODの生成 151 # gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので, 152 # カーネルAPIコードのメモリ保護を省略できる. 175 153 # 176 154 def gen_factory … … 187 165 if @@generate_memory_module == false 188 166 189 # INCLUDE ãåºå 190 # ãã¹ã¦ã®ãã¡ã¤ã³ã«å¯¾ãã cfg ãå 191 ã«çæãã¦ãã 192 # ããããã¡ã¤ã³ã«å±ããã«ã¼ãã«ãªãã¸ã§ã¯ãããã¢ã¸ã¥ã¼ã«ããªãå ´åã§ããcfg ãåºåããã 167 # INCLUDE を出力 168 # すべてのドメインに対する cfg を先に生成しておく 169 # もし、ドメインに属するカーネルオブジェクトも、モジュールもない場合でも、cfg が出力される 193 170 regions = DomainType.get_domain_regions[ :HRP ] 194 171 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) … … 219 196 220 197 # 221 # ATT_MOD ã®çæ198 # ATT_MODの生成 222 199 # 223 200 Cell.get_cell_list2.each { |cell| 224 # ãã¹ã¦ã®ã»ã«ãèµ°æ»ãã¦ã»ã«ã¿ã¤ãããã§ãã¯201 # すべてのセルを走査してセルタイプをチェック 225 202 ct = cell.get_celltype 226 203 if ct.class == Celltype && check_celltype_list.include?( ct ) == false 227 # ãã§ãã¯æ¸ã¿ã»ã«ã¿ã¤ãã«ç»é²204 # チェック済みセルタイプに登録 228 205 check_celltype_list << ct 229 206 230 # æªãã§ãã¯ã®ã»ã«ã¿ã¤ãã ã£ãå ´å207 # 未チェックのセルタイプだった場合 231 208 # puts "check for ATT_MOD : #{ct.classget_global_name}" 232 209 # puts "check for ATT_MOD : #{ct.get_global_name}" 233 210 234 # ã«ã¼ãã«APIã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã# HRP3 oyama delete by Takada's request211 # カーネルAPIのコード,データはメモリ保護しない # HRP3 oyama delete by Takada's request 235 212 # next if HRPKernelObjectManager.include_celltype?( ct.get_name ) 236 213 237 # å¿ 238 è¦ã®ãªãã»ã«ã¿ã¤ãã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã 214 # 必要のないセルタイプのコード,データはメモリ保護しない 239 215 next if ! ct.need_generate? 240 216 241 # HRP ã®ãã¡ã¤ã³ãªã¼ã¸ã§ã³ãåå¾217 # HRPのドメインリージョンを取得 242 218 regions = ct.get_domain_roots 243 219 regions_hrp = regions[ :HRP ] … … 248 224 # puts "" 249 225 250 # ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·251 # gen_celltype_names_domain ç¸å½ã®å¦ç226 # セル管理ブロックとスケルトンのメモリ保護 227 # gen_celltype_names_domain 相当の処理 252 228 if regions_hrp.include?( Region.get_root ) == false && regions_hrp.length > 1 253 # ãã¡ã¤ã³ãè¤æ°ã§ï¼OutOfDomainã«ã»ã«ãåå¨ããªãã»ã«ã¿ã¤ãã®å ´å 254 # å 255 ±æã®ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã³ã¼ããç»é²ãã 229 # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合 230 # 共有のセル管理ブロックとスケルトンコードを登録する 256 231 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 257 232 file.printf "%-60s/* HRPPlugin 003 */\n", "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");" … … 270 245 } 271 246 272 # ã»ã«ã¿ã¤ãã³ã¼ãããªãå ´åã¯ã¹ããã247 # セルタイプコードがない場合はスキップ 273 248 next if ct.is_all_entry_inline? && ! ct.is_active? 274 249 275 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·276 # gen_celltype_names_domain2 ç¸å½ã®å¦ç250 # セルタイプコードのメモリ保護 251 # gen_celltype_names_domain2 相当の処理 277 252 if regions_hrp.include?( Region.get_root ) == true || regions_hrp.length > 1 278 # OutOfDomainã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 279 # ã¾ãã¯ï¼è¤æ°ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 280 # ã»ã«ã¿ã¤ãã³ã¼ããå 281 ±æããããã«ç»é²ãã 253 # OutOfDomainにセルが存在するセルタイプの場合 254 # または,複数のドメインにセルが存在するセルタイプの場合 255 # セルタイプコードを共有するように登録する 282 256 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 283 257 else 284 # OutOfDomain ã§ãªãåä¸ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å285 # ã»ã«ã¿ã¤ãã³ã¼ããå°æããããã«ç»é²ãã258 # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合 259 # セルタイプコードを専有するように登録する 286 260 file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp[0].get_global_name}.cfg" ) 287 261 end … … 290 264 file.close 291 265 else 292 # ä½ãããªã266 # 何もしない 293 267 end 294 268 } … … 296 270 @@generate_memory_module = true 297 271 else 298 # ä½ãããªã272 # 何もしない 299 273 end 300 274 end … … 309 283 @@inter_domain_join_set[ rhs_cell ] = [] 310 284 end 311 # 左辺ã®ãã¡ã¤ã³ã«ã¼ããè¨é²285 # 左辺のドメインルートを記録 312 286 @@inter_domain_join_set[ rhs_cell ] << join 313 287 end … … 339 313 cell_domain_root = cell.get_region.get_domain_root 340 314 if cell_domain_root.get_domain_type.get_kind != :OutOfDomain then 341 domain_roots << cell.get_region.get_domain_root # çµåå 342 ã®ãã¡ã¤ã³ãå«ãã 315 domain_roots << cell.get_region.get_domain_root # 結合先のドメインも含める 343 316 end 344 317 domain_roots.each{ |dr| … … 364 337 } 365 338 if acv == "" then 366 # å¼ã³å 367 ã»ã«ãç¡æå±ãã¤ãå¼ã³å 368 ãç¡æå±ã®ã¿ãã¾ãã¯çµåç¡ãã®å ´å 339 # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合 369 340 acv = "TACP_SHARED" 370 341 end -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.