Mercurial > hg > Papers > 2018 > mitsuki-sigos
diff Slide/prosym.html @ 30:33222880db79
update
author | mir3636 |
---|---|
date | Sun, 21 Jan 2018 00:05:37 +0900 |
parents | da3022f9122e |
children | 7e2ceefcef54 |
line wrap: on
line diff
--- a/Slide/prosym.html Sat Jan 20 23:52:11 2018 +0900 +++ b/Slide/prosym.html Sun Jan 21 00:05:37 2018 +0900 @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16] - on 2018-01-20 22:57:55 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-21 00:05:29 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -216,10 +216,26 @@ <ul> <li>Gears OS は以下の要素で構成される。 <ul> - <li>Context</li> - <li>TaskQueue</li> - <li>TaskManager</li> - <li>Worker</li> + <li>Context + <ul> + <li>使用されるCode/Data Gear のリストを持っておりTaskでもある。</li> + </ul> + </li> + <li>TaskQueue + <ul> + <li>Task のリストを扱う</li> + </ul> + </li> + <li>TaskManager + <ul> + <li>Task の依存関係の解決、作成や停止を行います。</li> + </ul> + </li> + <li>Worker + <ul> + <li>Task の実行を行う</li> + </ul> + </li> </ul> </li> </ul> @@ -346,8 +362,16 @@ stack->clear = C_clearSingleLinkedStack; return stack; } +</code></pre> -__code pushSingleLinkedStack(struct SingleLinkedStack* stack, union Data* data, __code next(...)) { + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="interface--2">Interface の実装例</h1> + +<pre lang="impl"><code>__code pushSingleLinkedStack(struct SingleLinkedStack* stack, + union Data* data, __code next(...)) { Element* element = new Element(); element->next = stack->top; element->data = data; @@ -376,13 +400,20 @@ <li>そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。</li> </ul> -<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 lang="stub" id="stub-code-gear-">stub Code Gear の例</h1> +<pre><code>__code clearSingleLinkedStack(struct Context *context, + struct SingleLinkedStack* stack,enum Code next) { stack->top = NULL; goto meta(context, next); } __code clearSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); + SingleLinkedStack* stack = + (SingleLinkedStack*)GearImpl(context, Stack, stack); enum Code next = Gearef(context, Stack)->next; goto clearSingleLinkedStack(context, stack, next); } @@ -406,7 +437,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="stub-code-gear-">stub Code Gear の生成</h1> +<h1 id="stub-code-gear--1">stub Code Gear の生成</h1> <ul> <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li> <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li> @@ -415,13 +446,21 @@ <li>cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。</li> </ul> -<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="stub-code-gear-1">生成された stub Code Gear</h1> + +<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context, + struct SingleLinkedStack* stack,enum Code next) { stack->top = NULL; goto meta(context, next); } __code clearSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); + SingleLinkedStack* stack = + (SingleLinkedStack*)GearImpl(context, Stack, stack); enum Code next = Gearef(context, Stack)->next; goto clearSingleLinkedStack(context, stack, next); } @@ -434,7 +473,6 @@ <h1 id="context--1">Context の生成</h1> <ul> - <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li> <li>generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。 <ul> <li>Code/Data Gear を enum で定義した enumCode.h、enumData.h</li> @@ -445,7 +483,7 @@ </ul> <div style="text-align: center;"> - <img src="./fig/generate_context3.pdf" alt="generate_context3" width="900" /> + <img src="./fig/generate_context3.pdf" alt="generate_context3" width="500" /> </div>