- 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/HRP2SVCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 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$ 53 38 #++ 54 39 55 # mikan through plugin: namespace ãèæ 56 ®ããã¦ããªã 57 # ãããå©ç¨ããå ´åã以ä¸ã®ããã« toppers_jsp.cdl sChannel.cdl ãæå®ããå¿ 58 è¦ããã 40 # mikan through plugin: namespace が考慮されていない 41 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある 59 42 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 60 43 61 # 以ä¸ãä»®å®ï¼å¶éäºé 62 ï¼ 63 # å¼ã³å 64 ãå¼ã³å 65 ã®ã¨ã³ãã£ã¢ã³ãchar, short, int_t, long_t, intptr_t ã®ãµã¤ãºãåã 66 # æ符å·ãç¡ç¬¦å·ã§ãµã¤ãºãåã 44 # 以下を仮定(制限事項) 45 # 呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ 46 # 有符号、無符号でサイズが同じ 67 47 68 48 class SVCManage 69 # TODO: ããã©ã«ãã®æ¡å¼µãµã¼ãã¹ã³ã¼ã«åãäºç´ãã¦ãã70 # ããã©ã«ãã®æ¡å¼µãµã¼ãã¹ã³ã¼ã«ï¼syslogãªã©ï¼ãã³ã³ãã¼ãã³ãåããã¾ã§49 # TODO: デフォルトの拡張サービスコール分を予約しておく 50 # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで 71 51 @@id = 20 72 52 @@func_ids = {} … … 94 74 95 75 # 96 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«ãç¨ãããã¡ã¤ã³ééä¿¡ã® 97 # throughãã©ã°ã¤ã³ 98 # HRP2ãã¡ã¤ã³ãã©ã°ã¤ã³ã«ãã£ã¦æ¿å 99 ¥ããã 76 # 拡張サービスコールを用いたドメイン間通信の 77 # throughプラグイン 78 # HRP2ドメインプラグインによって挿入される 100 79 # 101 80 class HRP2SVCPlugin < ThroughPlugin 102 81 103 #=== RPCPlugin ã® initialize 104 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 105 § 82 #=== RPCPlugin の initialize 83 # 説明は ThroughPlugin (plugin.rb) を参照 106 84 @@generated_celltype_header = {} 107 85 … … 117 95 end 118 96 119 #=== NamespacePath ãå¾ã120 # çæããã»ã«ã® namespace path ãçæãã97 #=== NamespacePath を得る 98 # 生成するセルの namespace path を生成する 121 99 def get_cell_namespace_path 122 100 # nsp = @region.get_namespace.get_namespace_path … … 127 105 def gen_plugin_decl_code( file ) 128 106 129 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼107 # このセルタイプ(同じシグニチャ)は既に生成されているか? 130 108 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 131 109 if @@generated_celltype[ @ct_name_body ] == nil then … … 145 123 end 146 124 147 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼125 # このセルタイプ(同じシグニチャ)は既に生成されているか? 148 126 if @@generated_celltype[ @ct_name ] == nil then 149 127 @@generated_celltype[ @ct_name ] = [ self ] … … 156 134 EOT 157 135 else 158 # TODO inline ã«ããæ¹ãå¹çããããï¼tecsgenã®çæããããããã¡ã¤ã«ã®159 # èªè¾¼é ã®ããã«ã¨ã©ã¼ã¨ãªã136 # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの 137 # 読込順のためにエラーとなる 160 138 file2.print <<EOT 161 139 celltype #{@ct_name} { … … 174 152 175 153 =begin 176 # TODO: send. receive 対å¿154 # TODO: send. receive 対応 177 155 send_receive = [] 178 156 if @signature != nil then … … 206 184 end 207 185 208 #=== through cell ã³ã¼ããçæ186 #=== through cell コードを生成 209 187 # 210 188 # … … 215 193 216 194 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 217 # ã»ã«ãæ¢ã195 # セルを探す 218 196 # path =["::",@next_cell.get_name] # mikan namespace 219 197 # cell = Namespace.find( path ) 220 198 # cell = Namespace.find( @next_cell.get_namespace_path ) 221 199 222 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####200 ##### クライアント側のセルの生成 ##### 223 201 # file.print "[domain(HRP2, \"trusted\")]" 224 202 nest = @start_region.gen_region_str_pre file 225 203 nest_str = " " * nest 226 204 227 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã«ã®çæ228 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã205 # クライアント側チャンネルの生成 206 # 拡張サービスコール呼出し 229 207 file.print <<EOT 230 208 #{nest_str} // Client Side Channel … … 237 215 file.print "\n\n" 238 216 239 ##### ãµã¼ãã¼å´ã®ã»ã«ã®çæ#####217 ##### サーバー側のセルの生成 ##### 240 218 nest = @end_region.gen_region_str_pre file 241 219 nest_str = " " * nest … … 246 224 end 247 225 248 # ãµã¼ãã¼å´ãã£ã³ãã«ã®çæ249 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½226 # サーバー側チャンネルの生成 227 # 拡張サービスコール本体 250 228 file.print <<EOT 251 229 … … 266 244 else 267 245 268 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####246 ##### クライアント側のセルの生成 ##### 269 247 nest = @start_region.gen_region_str_pre file 270 248 nest_str = " " * nest … … 275 253 end 276 254 277 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã«ã®çæ278 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã255 # クライアント側チャンネルの生成 256 # 拡張サービスコール呼出し 279 257 file.print <<EOT 280 258 #{nest_str} // Client Side Channel … … 291 269 end 292 270 293 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 294 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 295 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 296 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 297 #file:: FILE åºåå 298 ãã¡ã¤ã« 271 #=== 受け口関数の本体(C言語)を生成する 272 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 273 # プラグインの場合、変更する必要のないセルタイプコードを生成する 274 #file:: FILE 出力先ファイル 299 275 #b_singleton:: bool true if singleton 300 276 #ct_name:: Symbol … … 309 285 310 286 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 311 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã287 # 拡張サービスコール呼出し 312 288 if ! func_type.get_type.kind_of?( VoidType ) then 313 289 file.print( " #{func_type.get_type_str} retval;\n" ) … … 321 297 p_cellcb = #{global_ct_name}_GET_CELLCB(idx); 322 298 }else{ 323 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/299 /* エラー処理コードをここに記述 */ 324 300 } 325 301 … … 372 348 end 373 349 374 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½350 # 拡張サービスコール本体 375 351 if new_func 376 352 file2 = AppFile.open( "#{$gen}/#{@ct_name_body}.c" ) … … 381 357 # file2.print <<EOT 382 358 # /* 383 # * ãã®ãã¡ã¤ã«ã¯ tecsgen ã«ããèªåçæããã¾ãã384 # * ãã®ãã¡ã¤ã«ãç·¨éãã¦ä½¿ç¨ãããã¨ã¯ãæå³ããã¦ãã¾ãã359 # * このファイルは tecsgen により自動生成されました 360 # * このファイルを編集して使用することは、意図されていません 385 361 # */ 386 362 # /* #[<PREAMBLE>]# 387 # * #[<...>]# ãã #[</...>]# ã§å²ã¾ããã³ã¡ã³ãã¯ç·¨éããªãã§ãã ãã388 # * tecsmerge ã«ãããã¼ã¸ã«ä½¿ç¨ããã¾ã363 # * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください 364 # * tecsmerge によるマージに使用されます 389 365 # * 390 366 # * #[</PREAMBLE>]# */ 391 367 # 392 # /* ãããã¿ã¤ã宣è¨ãå¤æ°ã®å®ç¾©ãããã«æ¸ãã¾ã#_PAC_# */368 # /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */ 393 369 # #include "#{@ct_name_body}_tecsgen.h" 394 370 # … … 418 394 p_cellcb = #{@ct_name_body}_GET_CELLCB(idx); 419 395 }else{ 420 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/396 /* エラー処理コードをここに記述 */ 421 397 } 422 398 #else … … 474 450 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 475 451 file2.print "\n/* Generated by HRP2SVCPlugin */\n\n" 476 # TODO: ã¹ã¿ãã¯ãµã¤ãºã¯é©å½452 # TODO: スタックサイズは適当 477 453 file2.print <<EOT 478 454 KERNEL_DOMAIN{ … … 490 466 end 491 467 else 492 # ã«ã¼ãã«ãã¡ã¤ã³ã®ã»ã«ã¯ç¹å¥ãªãã¨ã¯ä½ãããï¼æ®éã«å¼ã³åºã468 # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す 493 469 super 494 470 end -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.