import( ); // main 関数の引数の相違を調整するアダプター セルタイプ // sTaskBody:void main(void) => POSIX:main( argc, argv ) celltype tTaskMain2PosixMain{ entry sTaskBody eMain; call nPosix::sMain cMain; attr { int argc; [size_is(argc)] char **argv; }; }; [active] composite tPosixMrubyVmInTask { [optional] call nMruby::sInitializeBridge cInit; attr { int argc; [size_is(argc)] char **argv; /* * TA_NULL 0x00U デフォルト値 * TA_ACT 0x01U タスクの生成時にタスクを起動する */ ATR taskAttribute = C_EXP("TA_NULL"); PRI priority; SIZE stackSize; char_t *name = C_EXP( "\"$id$\"" ); }; cell nMruby::tMrubyProc VM { cInit => composite.cInit; }; // main 関数の引数の相違を調整するアダプター セル cell tTaskMain2PosixMain ConvMain{ cMain = VM.eMain; argc = composite.argc; argv = composite.argv; }; /// VM 用タスク cell tTask VMTask{ cBody = ConvMain.eMain; priority = composite.priority; stackSize = composite.stackSize; taskAttribute = composite.taskAttribute; name = composite.name; }; };