changeset 837:4318c1f750d1

merge
author tkaito
date Tue, 25 May 2010 19:14:44 +0900
parents cc06efc75ad9 (current diff) dc3621ee7816 (diff)
children 41302b72c895 2432c7fe291c
files
diffstat 15 files changed, 213 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/Document/Cerium2010.mm	Tue May 25 19:13:28 2010 +0900
+++ b/Document/Cerium2010.mm	Tue May 25 19:14:44 2010 +0900
@@ -7,38 +7,76 @@
 <node CREATED="1271152654975" ID="Freemind_Link_872288409" MODIFIED="1271152689305" TEXT="simple task"/>
 <node CREATED="1271152689941" ID="Freemind_Link_394170420" MODIFIED="1271152696744" TEXT="array task"/>
 <node CREATED="1271152707076" ID="Freemind_Link_821908954" MODIFIED="1271152710024" TEXT="old task"/>
+<node CREATED="1274588901430" ID="Freemind_Link_93256422" MODIFIED="1274588930968" TEXT="bulk task iterator &#x304c;&#x5fc5;&#x8981;"/>
+<node CREATED="1274589056845" ID="Freemind_Link_525207414" MODIFIED="1274589066504" TEXT="TaskManager &#x306f;&#x5fc5;&#x8981;&#x3067;&#x306a;&#x3044;&#x3089;&#x3057;&#x3044;">
+<node CREATED="1274589068245" ID="Freemind_Link_491724576" MODIFIED="1274589092436" TEXT="TMmain &#x306b; TaskManager &#x3092;&#x6e21;&#x3059;&#x306e;&#x3067;&#x306f;&#x306a;&#x3044;"/>
+<node CREATED="1274589093907" ID="Freemind_Link_479464644" MODIFIED="1274589110014" TEXT="TMmain &#x306b;&#x306f; SchedTask &#x3092;&#x6e21;&#x3059;"/>
 </node>
-<node CREATED="1272359816085" ID="Freemind_Link_1141511333" MODIFIED="1272359822079" TEXT="Code load">
-<node CREATED="1272359838763" ID="Freemind_Link_559440262" MODIFIED="1272359874862" TEXT="overlay&#x306e;&#x9818;&#x57df;&#x3092;code&#x9818;&#x57df;&#x306b;&#x8ffd;&#x52a0;&#x3059;&#x308b;"/>
-<node CREATED="1272359908849" ID="Freemind_Link_385235315" MODIFIED="1272359935147" TEXT="Task List &#x3092; main memory&#x306b;&#x8ffd;&#x3044;&#x51fa;&#x3059;"/>
+<node CREATED="1274589412122" ID="Freemind_Link_1178859006" MODIFIED="1274589421381" TEXT="wait for">
+<node CREATED="1274589422665" ID="Freemind_Link_430196306" MODIFIED="1274589445468" TEXT="wait for &#x3057;&#x305f;&#x3068;&#x304d;&#x306b;&#x3001;&#x305d;&#x306e; Task &#x304c;&#x65e2;&#x306b;&#x7d42;&#x308f;&#x3063;&#x3066;&#x308b;&#x3068;&#x307e;&#x305a;&#x3044;"/>
+<node CREATED="1274589448968" ID="Freemind_Link_1819112747" MODIFIED="1274589485129" TEXT="&#x65e2;&#x306b; free &#x3055;&#x308c;&#x3066;&#x308b;&#x304b;&#x3082;&#x3057;&#x308c;&#x306a;&#x3044;"/>
+<node CREATED="1274589463647" ID="Freemind_Link_628313303" MODIFIED="1274589501161" TEXT="&#x65e2;&#x306b;&#x518d;&#x5229;&#x7528;&#x3055;&#x308c;&#x3066;&#x308b;&#x53ef;&#x80fd;&#x6027;&#x3082;&#x3042;&#x308b;"/>
+<node CREATED="1274589504213" ID="Freemind_Link_1256949293" MODIFIED="1274589543285" TEXT="&#x3053;&#x308c;&#x3092;&#x9632;&#x3050;&#x305f;&#x3081;&#x306b; HTask queue &#x306b; sequence &#x756a;&#x53f7;&#x3092;&#x3064;&#x3051;&#x308b;">
+<node CREATED="1274589543690" ID="Freemind_Link_571012406" MODIFIED="1274589565709" TEXT="pointer &#x3068; sequence &#x756a;&#x53f7;&#x3067;&#x5224;&#x65ad;&#x3059;&#x308b;"/>
+</node>
+<node CREATED="1274589592652" ID="Freemind_Link_633880071" MODIFIED="1274589611826" TEXT="wait for &#x3059;&#x308b;&#x5148;&#x304c;&#x307e;&#x3060; spawn &#x3055;&#x308c;&#x3066;&#x306a;&#x3051;&#x308c;&#x3070;&#x554f;&#x984c;&#x306a;&#x3044;"/>
+</node>
+<node CREATED="1274591484600" ID="Freemind_Link_326262522" MODIFIED="1274591901958" TEXT="Scheduler &#x304b;&#x3089;&#x306e; Task &#x306e;&#x7d42;&#x4e86;&#x306e;&#x901a;&#x77e5;">
+<icon BUILTIN="bookmark"/>
+<node CREATED="1274591515950" ID="Freemind_Link_1155992623" MODIFIED="1274591524009" TEXT="&#x73fe;&#x72b6;">
+<node CREATED="1274591525062" ID="Freemind_Link_1807292931" MODIFIED="1274591565447" TEXT="Simple Task &#x3068;Task Array &#x306e;&#x7d42;&#x4e86;&#x3054;&#x3068;&#x306b; mail &#x304c;&#x304f;&#x308b;"/>
+<node CREATED="1274591534573" ID="Freemind_Link_1511819683" MODIFIED="1274591595048" TEXT="ppe &#x304c; mail &#x3092;&#x53d6;&#x3089;&#x306a;&#x3044;&#x3068; spe &#x304c;&#x6b62;&#x307e;&#x3063;&#x3066;&#x3057;&#x307e;&#x3046;"/>
+</node>
+<node CREATED="1274591601138" ID="Freemind_Link_382514949" MODIFIED="1274591605413" TEXT="&#x89e3;&#x6c7a;&#x7b56;">
+<node CREATED="1274591606025" ID="Freemind_Link_353884996" MODIFIED="1274591631556" TEXT="ppe &#x5074;&#x3067; task &#x306e;&#x7d42;&#x4e86;&#x3054;&#x3068;&#x306b; spe &#x306e; mail &#x3092;&#x30c1;&#x30a7;&#x30c3;&#x30af;&#x3059;&#x308b;"/>
+<node CREATED="1274591639087" ID="Freemind_Link_1901780159" MODIFIED="1274591678257" TEXT="task &#x3054;&#x3068;&#x3067;&#x306f;&#x306a;&#x304f;&#x3066;&#x3001;tasklist &#x3054;&#x3068;&#x306b;&#x7d42;&#x4e86;&#x306e; mail &#x3092;&#x9001;&#x308b;"/>
+<node CREATED="1274591690357" ID="Freemind_Link_755676138" MODIFIED="1274591731374" TEXT="tasklist &#x306b;&#x306f;&#x8907;&#x6570;&#x306e; task &#x304c;&#x5165;&#x3063;&#x3066;&#x3044;&#x308b;&#x306e;&#x3067;&#x3001;&#x305d;&#x308c;&#x3092; TaskManagerImpl &#x304c;&#x30c1;&#x30a7;&#x30c3;&#x30af;&#x3059;&#x308b;"/>
+<node CREATED="1274591739066" ID="Freemind_Link_832928459" MODIFIED="1274591771190" TEXT="post_func &#x306e;&#x5f8c;&#x306b;&#x3082; mail &#x3092;&#x30c1;&#x30a7;&#x30c3;&#x30af;&#x3059;&#x308b;"/>
+<node CREATED="1274591763785" ID="Freemind_Link_781498285" MODIFIED="1274591809082" TEXT="ppe &#x5074;&#x3092; multithread &#x5316;&#x3059;&#x308b;&#x3068; mail &#x306e;&#x30c1;&#x30a7;&#x30c3;&#x30af;&#x306f;&#x901f;&#x304f;&#x306a;&#x308b;">
+<node CREATED="1274591811494" ID="Freemind_Link_142692230" MODIFIED="1274591847760" TEXT="&#x305f;&#x3060;&#x3057;&#x3001;ppe &#x306e; mail check &#x306f; busy wait &#x306a;&#x306e;&#x3067; CPU &#x3092;&#x98df;&#x3046;&#x53ef;&#x80fd;&#x6027;&#x304c;&#x3042;&#x308b;"/>
+</node>
+</node>
+</node>
 </node>
 <node CREATED="1271152816566" ID="Freemind_Link_1565696016" MODIFIED="1271152823147" TEXT="RenderingEngine">
 <node CREATED="1271152752178" ID="Freemind_Link_547968057" MODIFIED="1271152770913" TEXT="simple task &#x306b;&#x66f8;&#x304d;&#x76f4;&#x3059;"/>
 <node CREATED="1271152774825" ID="Freemind_Link_1913385705" MODIFIED="1271152782596" TEXT="array task &#x306b;&#x66f8;&#x304d;&#x76f4;&#x3059;"/>
-<node CREATED="1272360043545" ID="Freemind_Link_1681599734" MODIFIED="1272360049917" TEXT="&#x5149;&#x6e90;">
-<node CREATED="1272360050585" ID="Freemind_Link_315378051" MODIFIED="1272360162478" TEXT="&#x5149;&#x6e90;&#x306e;&#x30b9;&#x30a4;&#x30c3;&#x30c1;">
-<icon BUILTIN="button_ok"/>
+<node CREATED="1274590740681" ID="Freemind_Link_276160769" MODIFIED="1274590761477" TEXT="createPolygonFromSceneGraph"/>
+<node CREATED="1274590763872" ID="Freemind_Link_149309559" MODIFIED="1274590768587" TEXT="createSpan">
+<node CREATED="1274590806277" ID="Freemind_Link_956150988" MODIFIED="1274590821313" TEXT="get_segment &#x3067;&#x66f8;&#x304d;&#x76f4;&#x3059;"/>
+</node>
+<node CREATED="1274590776014" ID="Freemind_Link_1512564455" MODIFIED="1274590781674" TEXT="DrawSpan">
+<node CREATED="1274591872323" ID="Freemind_Link_694643331" MODIFIED="1274591883214" TEXT="Task Array &#x3067;&#x66f8;&#x304d;&#x76f4;&#x3059;"/>
+</node>
 </node>
-<node CREATED="1272360057184" ID="Freemind_Link_208005955" MODIFIED="1272360063316" TEXT="&#x5149;&#x6e90;&#x6a5f;&#x80fd;&#x306e;&#x30b9;&#x30a4;&#x30c3;&#x30c1;"/>
-<node CREATED="1272360078399" ID="Freemind_Link_1262318818" MODIFIED="1272360104442" TEXT="Material &#x306e;&#x60c5;&#x5831;&#x53d6;&#x5f97;">
-<node CREATED="1272360104814" ID="Freemind_Link_647651975" MODIFIED="1272360118536" TEXT="script&#x5074;&#x304b;&#x3089;&#x53d6;&#x5f97;"/>
-<node CREATED="1272360126181" ID="Freemind_Link_591710456" MODIFIED="1272360136128" TEXT="SceneGraph&#x5074;&#x304b;&#x3089;&#x53d6;&#x5f97;"/>
+<node CREATED="1271152865996" ID="Freemind_Link_1369046890" MODIFIED="1274591464598" TEXT="ppu &#x306e; multi threads &#x5316;">
+<icon BUILTIN="full-2"/>
+<icon BUILTIN="ksmiletris"/>
+<icon BUILTIN="bookmark"/>
+<node CREATED="1271152923312" ID="Freemind_Link_751477936" MODIFIED="1271154172144" TEXT="ppu &#x306e; fifo &#x3092; synchronized queue &#x306b;&#x66f8;&#x304d;&#x63db;&#x3048;&#x308b;"/>
+<node CREATED="1274588938972" ID="Freemind_Link_1843780088" MODIFIED="1274588948726" TEXT="CPU thread &#x3092;&#x4f5c;&#x3063;&#x305f;">
+<node CREATED="1274589123218" ID="Freemind_Link_1266246688" MODIFIED="1274589152996" TEXT="mail &#x3092; Blocking queue &#x306b;&#x3059;&#x308b;"/>
+</node>
+<node CREATED="1274588957790" ID="Freemind_Link_1367800310" MODIFIED="1274589249636" TEXT="task &#x5074;&#x304b;&#x3089; createTask &#x3059;&#x308b;&#x5834;&#x5408;">
+<node CREATED="1274588987609" ID="Freemind_Link_869382645" MODIFIED="1274589006891" TEXT="local thread &#x3067; local &#x3067;queue &#x3092;&#x4f5c;&#x6210;&#x3059;&#x308b;"/>
+<node CREATED="1274589011943" ID="Freemind_Link_1937839870" MODIFIED="1274589047697" TEXT="queue &#x3092; mail &#x3067; TaskManagerImpl &#x306b;&#x6295;&#x3052;&#x308b;"/>
+<node CREATED="1274589048518" ID="Freemind_Link_1379141754" MODIFIED="1274589192562" TEXT="task queue &#x306f; TaskManagerImpl &#x304b;&#x3089;&#x3057;&#x304b;&#x30a2;&#x30af;&#x30bb;&#x30b9;&#x3057;&#x306a;&#x3044;&#x3088;&#x3046;&#x306b;&#x3059;&#x308b;"/>
+<node CREATED="1274589260394" ID="Freemind_Link_1946382151" MODIFIED="1274589278845" TEXT="task queue &#x306b;&#x30a2;&#x30af;&#x30bb;&#x30b9;&#x3059;&#x308b;&#x306e;&#x306b; lock &#x304c;&#x4e0d;&#x8981;&#x306b;&#x306a;&#x308b;"/>
+<node CREATED="1274589321823" ID="Freemind_Link_1691404099" MODIFIED="1274589339817" TEXT="wait for &#x306f; task queue &#x306b;&#x30a2;&#x30af;&#x30bb;&#x30b9;&#x3057;&#x3066;&#x3057;&#x307e;&#x3046;">
+<node CREATED="1274589342886" ID="Freemind_Link_374709913" MODIFIED="1274589363144" TEXT="&#x3068;&#x308a;&#x3042;&#x3048;&#x305a;&#x3001;dummy &#x306e; task &#x306b; wait for &#x3059;&#x308b;"/>
+<node CREATED="1274589365484" ID="Freemind_Link_664545631" MODIFIED="1274589401118" TEXT="dummy &#x306e; task &#x3092; TaskManagerImpl &#x3067;&#x5b9f;&#x969b;&#x306e; Task &#x306b;&#x66f8;&#x304d;&#x76f4;&#x3059;"/>
 </node>
 </node>
 </node>
-<node CREATED="1271152865996" ID="Freemind_Link_1369046890" MODIFIED="1271154765327" TEXT="ppu &#x306e; multi threads &#x5316;">
-<icon BUILTIN="full-2"/>
-<icon BUILTIN="ksmiletris"/>
-<node CREATED="1271152923312" ID="Freemind_Link_751477936" MODIFIED="1271154172144" TEXT="ppu &#x306e; fifo &#x3092; synchronized queue &#x306b;&#x66f8;&#x304d;&#x63db;&#x3048;&#x308b;"/>
-</node>
-<node CREATED="1271153003844" ID="Freemind_Link_11749018" MODIFIED="1272359609370" TEXT="WordCount &#x306e;&#x30cd;&#x30c3;&#x30af;&#x306e;&#x691c;&#x8a3c;">
+<node CREATED="1271153003844" ID="Freemind_Link_11749018" MODIFIED="1274588839080" TEXT="WordCount &#x306e;&#x30cd;&#x30c3;&#x30af;&#x306e;&#x691c;&#x8a3c;">
 <icon BUILTIN="ksmiletris"/>
 <icon BUILTIN="button_ok"/>
 <node CREATED="1271153026411" ID="Freemind_Link_245323343" MODIFIED="1271153038270" TEXT="&#x304a;&#x305d;&#x3089;&#x304f;mail &#x304c;&#x30cd;&#x30c3;&#x30af;">
-<node CREATED="1271153052617" ID="Freemind_Link_1149688811" MODIFIED="1271153081388" TEXT="TaskArray &#x3092;&#x4f7f;&#x3046;"/>
+<node CREATED="1271153052617" ID="Freemind_Link_1149688811" MODIFIED="1271153081388" TEXT="TaskArray &#x3092;&#x4f7f;&#x3046;">
+<node CREATED="1274589296144" ID="Freemind_Link_1285789074" MODIFIED="1274589304753" TEXT="&#x3061;&#x3083;&#x3093;&#x3068;&#x65e9;&#x304f;&#x306a;&#x308b;"/>
 </node>
-<node CREATED="1272359665972" ID="Freemind_Link_726453210" MODIFIED="1272359683624" TEXT="run16 &#x30d0;&#x30fc;&#x30b8;&#x30e7;&#x30f3;"/>
-<node CREATED="1272359696037" ID="Freemind_Link_1920589964" MODIFIED="1272359713399" TEXT="TaskArray&#x3067;&#x306f;&#x306a;&#x3044;&#x3082;&#x306e;&#x306e;&#x8a08;&#x6e2c;"/>
+</node>
+<node CREATED="1274588860001" ID="Freemind_Link_248066319" MODIFIED="1274588875979" TEXT="run16&#x304c;&#x307e;&#x3060;&#x9045;&#x3044;"/>
 </node>
 <node CREATED="1271153108206" ID="Freemind_Link_164399149" MODIFIED="1271153120857" TEXT="sort">
 <node CREATED="1271153121669" ID="Freemind_Link_618072996" MODIFIED="1271153131585" TEXT="buffer &#x306e; swap"/>
@@ -51,6 +89,7 @@
 <node CREATED="1271153157556" ID="Freemind_Link_1374547416" MODIFIED="1271153271401" TEXT="pipeline &#x672a;&#x5b9f;&#x88c5;"/>
 <node CREATED="1271153285333" ID="Freemind_Link_214169447" MODIFIED="1271154810421" TEXT="data segment &#x306e;&#x4ed8;&#x52a0;">
 <icon BUILTIN="full-4"/>
+<node CREATED="1274589620322" ID="Freemind_Link_768784354" MODIFIED="1274589620322" TEXT=""/>
 </node>
 <node CREATED="1271153410710" ID="Freemind_Link_285733382" MODIFIED="1271154693091" TEXT="task configuration">
 <icon BUILTIN="full-1"/>
@@ -64,7 +103,67 @@
 </node>
 <node CREATED="1271152611017" ID="Freemind_Link_1716904506" MODIFIED="1271154668916" POSITION="right" TEXT="c">
 <icon BUILTIN="full-1"/>
-<node CREATED="1271153567589" ID="Freemind_Link_1467411845" MODIFIED="1271153602887" TEXT="data segment"/>
+<node CREATED="1274589647087" ID="Freemind_Link_1711203047" MODIFIED="1274590187203" TEXT="data segment">
+<node CREATED="1274589663940" ID="Freemind_Link_1761381255" MODIFIED="1274589674103" TEXT="double linked list"/>
+<node CREATED="1274589679195" ID="Freemind_Link_716452315" MODIFIED="1274602559867" TEXT="template &#x3067;&#x62bd;&#x8c61;&#x5316;&#x3059;&#x308b;">
+<icon BUILTIN="button_ok"/>
+</node>
+<node CREATED="1274589705349" ID="Freemind_Link_832842868" MODIFIED="1274602587441" TEXT="CPU&#x3054;&#x3068;&#x306b;&#xff12;&#x306e;&#x51aa;&#x4e57;&#x3054;&#x3068;&#x306e;&#x30e1;&#x30e2;&#x30ea;&#x30d7;&#x30fc;&#x30eb;&#x3067;&#x7ba1;&#x7406;&#x3059;&#x308b;"/>
+<node CREATED="1274589739704" ID="Freemind_Link_206718102" MODIFIED="1274589760354" TEXT="Cerium &#x4e0a;&#x306e;&#x3059;&#x3079;&#x3066;&#x306e; object &#x3092;&#x3053;&#x308c;&#x3067;&#x7ba1;&#x7406;&#x3059;&#x308b;"/>
+<node CREATED="1274589761446" ID="Freemind_Link_182554869" MODIFIED="1274589772530" TEXT="malloc &#x3092;&#x8ffd;&#x653e;&#x3059;&#x308b;"/>
+</node>
+<node CREATED="1274589813524" ID="Freemind_Link_586150605" MODIFIED="1274589820551" TEXT="Scheduler">
+<node CREATED="1274589827947" ID="Freemind_Link_1419717866" MODIFIED="1274589836750" TEXT="conector">
+<node CREATED="1274589840322" ID="Freemind_Link_1088245803" MODIFIED="1274589849869" TEXT="dma"/>
+<node CREATED="1274589850490" ID="Freemind_Link_369884542" MODIFIED="1274589854901" TEXT="mail"/>
+</node>
+<node CREATED="1274589865633" ID="Freemind_Link_211891458" MODIFIED="1274589869620" TEXT="Manager">
+<node CREATED="1274589873008" ID="Freemind_Link_268505657" MODIFIED="1274589880204" TEXT="createTask"/>
+</node>
+<node CREATED="1274589893039" ID="Freemind_Link_587727506" MODIFIED="1274589895499" TEXT="memory">
+<node CREATED="1274589904975" ID="Freemind_Link_965289748" MODIFIED="1274589908610" TEXT="memory pool"/>
+<node CREATED="1274589910950" ID="Freemind_Link_578423126" MODIFIED="1274590840204" TEXT="get_segment/put_segment"/>
+<node CREATED="1274590934078" ID="Freemind_Link_143382264" MODIFIED="1274590965424" TEXT="mainMemGet &#x3092;&#x5ec3;&#x6b62;"/>
+<node CREATED="1274590970972" ID="Freemind_Link_1136306406" MODIFIED="1274590999524" TEXT="&#x305d;&#x306e;&#x4ee3;&#x308f;&#x308a;&#x306b;get_segment &#x306e;&#x30aa;&#x30d7;&#x30b7;&#x30e7;&#x30f3;">
+<node CREATED="1274591004146" ID="Freemind_Link_1768521435" MODIFIED="1274591026932" TEXT="write back">
+<node CREATED="1274591080102" ID="Freemind_Link_1090183022" MODIFIED="1274591111872" TEXT="&#x5909;&#x66f4;&#x3092;mainmemory &#x306b;&#x66f8;&#x304d;&#x623b;&#x3059;"/>
+</node>
+<node CREATED="1274591031697" ID="Freemind_Link_1603087582" MODIFIED="1274591064235" TEXT="create">
+<node CREATED="1274591116492" ID="Freemind_Link_307854380" MODIFIED="1274591136847" TEXT="&#x65b0;&#x3057;&#x304f;memory &#x3092; allocate"/>
+<node CREATED="1274591140579" ID="Freemind_Link_1504695289" MODIFIED="1274591154135" TEXT="&#x8aad;&#x307f;&#x51fa;&#x3057;&#x306f;&#x884c;&#x308f;&#x306a;&#x3044;"/>
+<node CREATED="1274591181001" ID="Freemind_Link_794364854" MODIFIED="1274591198083" TEXT="CPU &#x3054;&#x3068;&#x306b;&#x524d;&#x3082;&#x3063;&#x3066; pool &#x3092;&#x5272;&#x308a;&#x5f53;&#x3066;&#x308b;"/>
+</node>
+<node CREATED="1274591065575" ID="Freemind_Link_1910072627" MODIFIED="1274591074018" TEXT="read only">
+<node CREATED="1274591220334" ID="Freemind_Link_1059008005" MODIFIED="1274591225706" TEXT="&#x66f8;&#x304d;&#x8fbc;&#x307f;&#x3092;&#x884c;&#x308f;&#x306a;&#x3044;"/>
+</node>
+</node>
+<node CREATED="1274591251837" ID="Freemind_Link_430171688" MODIFIED="1274591351305" TEXT="set_inData&#x3001;set_outData &#x3092;&#x4f7f;&#x308f;&#x305a;&#x306b; get_segment &#x3092;&#x7528;&#x3044;&#x308b;"/>
+<node CREATED="1274591366721" ID="Freemind_Link_1197326816" MODIFIED="1274591403984" TEXT="task &#x306e; read buff&#x3001;write buff &#x306f; get_segment &#x306e;&#x96c6;&#x5408;&#x306b;&#x306a;&#x308b;"/>
+</node>
+<node CREATED="1274589942029" ID="Freemind_Link_1433001406" MODIFIED="1274589946856" TEXT="CPU">
+<node CREATED="1274589947596" ID="Freemind_Link_682604250" MODIFIED="1274589966263" TEXT="CPU &#x3054;&#x3068;&#x306b; Scheduler &#x304c;&#x5b58;&#x5728;&#x3059;&#x308b;"/>
+<node CREATED="1274589968071" ID="Freemind_Link_1380281338" MODIFIED="1274589994149" TEXT="conector &#x3068; memory &#x3068; Manager &#x306f; SchedTask &#x306b;&#x6e21;&#x3059;"/>
+<node CREATED="1274590016681" ID="Freemind_Link_80180247" MODIFIED="1274590121501" TEXT="&#x3053;&#x3046;&#x3057;&#x306a;&#x3044;&#x3068; API &#x3092;&#x5909;&#x66f4;&#x3059;&#x308b;&#x5ea6;&#x306b;&#x3001;&#xa;Scheduler &#x3068; TaskManagerImpl &#x3068; SchedTask &#x3092;&#x5909;&#x66f4;&#x3057;&#x306a;&#x3044;&#x3068;&#x3044;&#x3051;&#x306a;&#x3044;"/>
+</node>
+</node>
+<node CREATED="1274590223101" ID="Freemind_Link_1008928487" MODIFIED="1274590229233" TEXT="code segment">
+<node CREATED="1274590233461" ID="Freemind_Link_911750720" MODIFIED="1274590248855" TEXT="&#x73fe;&#x72b6;">
+<node CREATED="1274590250084" ID="Freemind_Link_1646689425" MODIFIED="1274590260735" TEXT="ppe &#x4e0a;&#x306e; Task List"/>
+<node CREATED="1274590266755" ID="Freemind_Link_1607174160" MODIFIED="1274590277006" TEXT="spe &#x4e0a;&#x306e; Task List"/>
+<node CREATED="1274590277538" ID="Freemind_Link_434593725" MODIFIED="1274590303464" TEXT="gcc &#x306e; overlay table"/>
+<node CREATED="1274590319280" ID="Freemind_Link_182869923" MODIFIED="1274590353362" TEXT="&#x3053;&#x308c;&#x3060;&#x3068; Task &#x306e;&#x6570;&#x306b;&#x6bd4;&#x4f8b;&#x3057;&#x3066; Task List &#x304c;&#x5927;&#x304d;&#x304f;&#x306a;&#x3063;&#x3066;&#x3057;&#x307e;&#x3046;">
+<node CREATED="1274590354958" ID="Freemind_Link_598814020" MODIFIED="1274590364501" TEXT="spe &#x306b;&#x53ce;&#x307e;&#x308a;&#x304d;&#x3089;&#x306a;&#x3044;"/>
+</node>
+<node CREATED="1274590367421" ID="Freemind_Link_1140067654" MODIFIED="1274590402015" TEXT="overlay &#x304c;&#x3042;&#x308b;&#x306e;&#x3067;&#x3001;&#x3069;&#x3053;&#x3067;&#x5207;&#x3089;&#x308c;&#x308b;&#x304b;&#x4e0d;&#x660e;"/>
+</node>
+<node CREATED="1274590421469" ID="Freemind_Link_1440216976" MODIFIED="1274590426038" TEXT="&#x89e3;&#x6c7a;">
+<node CREATED="1274590426970" ID="Freemind_Link_1282019170" MODIFIED="1274590448396" TEXT="Task List &#x3092; main memory &#x4e0a;&#x306b;&#x305f;&#x3060;&#x4e00;&#x3064;&#x306b;&#x3059;&#x308b;"/>
+<node CREATED="1274590455731" ID="Freemind_Link_1164092429" MODIFIED="1274590513145" TEXT="Task List &#x306b; architecture &#x3054;&#x3068;&#x306e; code &#x3092;&#x5165;&#x308c;&#x308b;&#x3002;"/>
+<node CREATED="1274590477575" ID="Freemind_Link_1673350057" MODIFIED="1274590505702" TEXT="code &#x306f; ld &#x3092;&#x4f7f;&#x3063;&#x3066;&#x4e00;&#x3064;&#x306e; object &#x306b;&#x5b8c;&#x7d50;&#x3055;&#x305b;&#x308b;"/>
+<node CREATED="1274590519829" ID="Freemind_Link_1325862525" MODIFIED="1274590558391" TEXT="Task List &#x3092; getSegment &#x3092;&#x4f7f;&#x3063;&#x3066;&#x30ad;&#x30e3;&#x30c3;&#x30b7;&#x30e5;&#x3059;&#x308b;"/>
+<node CREATED="1274590587801" ID="Freemind_Link_1691372243" MODIFIED="1274590595900" TEXT="overlay &#x3092;&#x4f7f;&#x308f;&#x306a;&#x3044;"/>
+</node>
+</node>
 </node>
 <node CREATED="1271153725261" ID="Freemind_Link_1021236986" MODIFIED="1271154721545" POSITION="left" TEXT="SceneGraph">
 <icon BUILTIN="full-2"/>
@@ -72,6 +171,7 @@
 <icon BUILTIN="full-3"/>
 <node CREATED="1271153732060" ID="Freemind_Link_1208701551" MODIFIED="1271153747479" TEXT="super dandy">
 <node CREATED="1271153867093" ID="Freemind_Link_933024710" MODIFIED="1271154718432" TEXT="scale"/>
+<node CREATED="1274590639383" ID="Freemind_Link_1328300488" MODIFIED="1274590660969" TEXT="&#x3068;&#x308a;&#x3042;&#x3048;&#x305a;FifoManager &#x3067;&#x52d5;&#x304b;&#x3059;"/>
 </node>
 <node CREATED="1271153855085" ID="Freemind_Link_443719007" MODIFIED="1271153859665" TEXT="chain">
 <node CREATED="1271153871244" ID="Freemind_Link_71013239" MODIFIED="1271153873224" TEXT="speed"/>
--- a/TaskManager/Cell/CellTaskManagerImpl.cc	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/Cell/CellTaskManagerImpl.cc	Tue May 25 19:14:44 2010 +0900
@@ -161,16 +161,29 @@
 	        // MY_SPE_COMMAND_MALLOC   SPE からのmain memory request
 		send_alloc_reply(this, id, speThreads);
 	    } else if (data > (memaddr)MY_SPE_NOP) {
+#ifdef TASK_LIST_MAIL
+		TaskListPtr list = (TaskListPtr)data;
+		check_task_list_finish(schedTaskManager, list, waitTaskQueue);
+#else
 	        // 終了したタスク(PPEにあるのでアドレス)
 		HTaskPtr task = (HTaskPtr)data;
 		task->post_func(schedTaskManager, task->post_arg1, task->post_arg2);
-		check_task_finish(task,waitTaskQueue);
+		check_task_finish(task, waitTaskQueue);
+#endif
 	    }
 	    // MY_SPE_NOP: 特に意味のないコマンド
 	}
     }
 }
 
+void
+CellTaskManagerImpl::polling()
+{
+    // may  call recursively check_task_list_finish() 
+    // we need fifo here
+    mail_check();
+}
+
 static void
 send_alloc_reply(CellTaskManagerImpl *tm, int id, SpeThreads *speThreads)
 {
--- a/TaskManager/Cell/CellTaskManagerImpl.h	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/Cell/CellTaskManagerImpl.h	Tue May 25 19:14:44 2010 +0900
@@ -30,6 +30,7 @@
     void append_activeTask(HTaskPtr);
     void show_profile() ;
     void start_profile() ;
+    void polling();
 
 private:
     void send_taskList(int id);
--- a/TaskManager/Cell/spe/SpeTaskManagerImpl.h	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/Cell/spe/SpeTaskManagerImpl.h	Tue May 25 19:14:44 2010 +0900
@@ -25,7 +25,7 @@
     void set_task_depend(HTaskPtr master, HTaskPtr slave);
     void spawn_task(HTaskPtr);
     void set_task_cpu(HTaskPtr, CPU_TYPE);
-
+    void polling() {}
 
 };
 
--- a/TaskManager/ChangeLog	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/ChangeLog	Tue May 25 19:14:44 2010 +0900
@@ -1,3 +1,12 @@
+2010-5-25 Shinji KONO <kono@ie.u-ryukyu.ac.jp>
+
+    PPE側のpost_funcやtaskを実行している時にもSPEからのメールは読んでしまう
+    のが望ましい。読んで、とりあえずfifoに入れておく。その場で処理しても良いが、
+    check_task_list_finishとかが再帰的に呼びされるのがやっかい。
+
+    Task 実行ループは Scheduler にpoling routineを登録するのが良さそう。
+    post_func は、SchedTask 経由で poling すれば良い。
+
 2010-5-22 Shinji KONO <kono@ie.u-ryukyu.ac.jp>
 
     CpuThread を作るなら、create_task は、manager にメールで教えないとだめ。
--- a/TaskManager/Fifo/FifoTaskManagerImpl.cc	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/Fifo/FifoTaskManagerImpl.cc	Tue May 25 19:14:44 2010 +0900
@@ -40,6 +40,7 @@
     ppeTaskList  = new TaskListInfo;
 
     schedTaskManager = new SchedTask();
+    others = 0;
     schedTaskManager->init(0,0,0,mainScheduler);
 
 }
@@ -66,6 +67,7 @@
     ppeTaskList  = new TaskListInfo;
 
     schedTaskManager = new SchedTask();
+    others = tm;
     schedTaskManager->init(0,0,0,mainScheduler);
 
 }
@@ -168,14 +170,24 @@
             __debug_ppe("mail_check(): recv from 0x%x\n", data);
 	    // post_func を先に実行しないと、systask_finish が active_queue
 	    // 移されてから、wait_for されるという事態が起きることがある。
+#ifdef TASK_LIST_MAIL
+            TaskListPtr list = (TaskListPtr)data;
+            check_task_list_finish(schedTaskManager, list, waitTaskQueue);
+#else
             HTaskPtr task = (HTaskPtr)data;
             task->post_func(schedTaskManager, task->post_arg1, task->post_arg2);
             check_task_finish(task, waitTaskQueue);
+#endif
         }
     }
 }
 
-
+void
+FifoTaskManagerImpl::polling()
+{
+    if (others!=0)
+	others->polling();
+}
 
 /**
  * # # # # # # # # 
--- a/TaskManager/Fifo/FifoTaskManagerImpl.h	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/Fifo/FifoTaskManagerImpl.h	Tue May 25 19:14:44 2010 +0900
@@ -27,6 +27,7 @@
     void run();
     void show_profile()  {};
     void start_profile()  {};
+    void polling();
 
 
     void mail_check();
--- a/TaskManager/Makefile.def	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/Makefile.def	Tue May 25 19:14:44 2010 +0900
@@ -30,7 +30,7 @@
 ABIBIT = 32
 
 # OPT = -O9 
-OPT =  -g
+OPT =  -g -DTASK_LIST_MAIL
 
 CC     = g++   
 CFLAGS = -Wall `sdl-config --cflags` -m$(ABIBIT)   $(OPT)
--- a/TaskManager/kernel/ppe/TaskList.h	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/kernel/ppe/TaskList.h	Tue May 25 19:14:44 2010 +0900
@@ -17,7 +17,7 @@
     TaskList *waiter; // 4 byte
     SimpleTask tasks[TASK_MAX_SIZE]; // 24*TASK_MAX_SIZE
 
-    void init() { length = 0; }
+    void init() { length = 0; waiter=this; }
 };
 
 typedef TaskList* TaskListPtr;
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc	Tue May 25 19:14:44 2010 +0900
@@ -18,7 +18,7 @@
 }
 
 TaskManagerImpl::TaskManagerImpl(int num)
-    : machineNum(num) {
+    : machineNum(num){
     activeTaskQueue = new HTaskInfo();
     waitTaskQueue = new HTaskInfo();
     htaskImpl = waitTaskQueue ;             // any HTaskInfo
@@ -143,7 +143,7 @@
 }
 
 /**
- * 終了したタスクから依存の処理とか
+ * @brief 終了したタスクから依存の処理とか
  * post_func() はこのタスクが終了したら実行する関数。
  *
  * @param [task] 終了したタスク
@@ -171,13 +171,45 @@
     htaskImpl->free_(me);
 }
 
+/**
+ * @brief 終了したタスクリストの依存の処理
+ * @param [task] 終了したタスク
+ */
+void
+TaskManagerImpl::check_task_list_finish(SchedTask *s, TaskListPtr list, HTaskInfo *wait_queue)
+{
+    for(int i = 0;i<list->length;i++) {
+	SimpleTaskPtr task = &list->tasks[i];
+	HTask *me = (HTask*)task->self;
+	me->post_func(s, me->post_arg1, me->post_arg2);
+	if (task->command==TaskArray1) {
+	    int next = ((task->r_size)/sizeof(SimpleTask))+1;
+	    // assert(next<list->length);
+	    i+=next;
+	}
+	s->polling();
+	check_task_finish(me, wait_queue);
+    }
+}
 
+/**
+ * @brief waitTaskqueue への挿入 。必須ではない。
+ * 現状では、dead lock 検出にしか使ってない
+ *
+ * @param [task] 終了したタスク
+ */
 void
 TaskManagerImpl::append_waitTask(HTaskPtr q)
 {
     waitTaskQueue ->addLast(q);
 }
 
+/**
+ @brief htask を DMA でCPUに渡すための TaskList に入れる (copy)
+ @param htask     
+ @param taskList 
+      TaskList は自動的に延長される
+ */
 void
 TaskManagerImpl::set_taskList(HTaskPtr htask, TaskListInfoPtr taskList) {
     TaskListPtr list ; 
@@ -204,7 +236,7 @@
 	}
 	memcpy(array, htask->rbuf, htask->r_size);
 	free(htask->rbuf);
-	htask->rbuf = 0; htask->r_size = 0;
+	// htask->rbuf = 0; htask->r_size = 0; we need this...
 	*task = *(SimpleTask*)htask;
     } else {
 	*task = *(SimpleTask*)htask;
--- a/TaskManager/kernel/ppe/TaskManagerImpl.h	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/kernel/ppe/TaskManagerImpl.h	Tue May 25 19:14:44 2010 +0900
@@ -23,6 +23,7 @@
 
     SchedTask *schedTaskManager;
     Scheduler *scheduler;
+    TaskManagerImpl *others;
 
     /* constructor */
     TaskManagerImpl(int num = 1) ;
@@ -37,8 +38,10 @@
     virtual void show_profile() = 0;
     virtual void append_activeTask(HTaskPtr);
     virtual void append_waitTask(HTaskPtr);
+    virtual void polling() = 0;
 
     void check_task_finish(HTaskPtr task, HTaskInfo *wait_queue);
+    void check_task_list_finish(SchedTask *s, TaskListPtr list, HTaskInfo *wait_queue);
 
     void systask_init();
 
--- a/TaskManager/kernel/schedule/SchedTask.cc	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTask.cc	Tue May 25 19:14:44 2010 +0900
@@ -102,8 +102,9 @@
 
     scheduler->dma_wait(DMA_WRITE);
     free(writebuf);
-
+#ifndef TASK_LIST_MAIL
     scheduler->mail_write((memaddr)task->self);
+#endif
 }
 
 SchedTaskBase*
@@ -131,6 +132,9 @@
 	}
 	return nextSched;
     } else {
+#ifdef TASK_LIST_MAIL
+	scheduler->mail_write((memaddr)list->waiter);
+#endif
         memaddr nextList = (memaddr)list->next;
         if (nextList == 0) {
 	    // もう何もする必要がない
@@ -293,6 +297,11 @@
     return manager->allocate(size,align) ;
 }
 
+void SchedTask::polling()
+{
+    manager->polling();
+}
+
 Scheduler* SchedTask::get_scheduler() 
 {
     return scheduler;
--- a/TaskManager/kernel/schedule/SchedTask.h	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTask.h	Tue May 25 19:14:44 2010 +0900
@@ -71,6 +71,8 @@
     void *allocate(int size);
     void free_(void *p) ;
 
+    void polling();
+
     /* これは禁止するべき */
     void dma_load(void *buf, memaddr addr, uint32 size, uint32 mask);
     void dma_store(void *buf,memaddr addr, uint32 size, uint32 mask);
--- a/TaskManager/kernel/schedule/SchedTaskArray.cc	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArray.cc	Tue May 25 19:14:44 2010 +0900
@@ -162,15 +162,6 @@
         //1ステージを稼ぐ必要がある
 
         return new SchedTaskArrayNop(scheduler, savedTask, next, array);
-#if 0
-	// このTaskArrayは終り。save していた Task の次を返す。
-	// savedTask の read/exec は実行されない (command = TaskArray)
-	SchedTaskBase *n =  savedTask->next(scheduler, savedTask);
-	scheduler->mail_write((memaddr)savedTask->task->self);
-	free(array);
-	delete savedTask;
-	return n;
-#endif
 
     }
 }
--- a/TaskManager/kernel/schedule/SchedTaskArrayNop.cc	Tue May 25 19:13:28 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArrayNop.cc	Tue May 25 19:14:44 2010 +0900
@@ -54,8 +54,9 @@
 void
 SchedTaskArrayNop::write()
 {
-
+#ifndef TASK_LIST_MAIL
     scheduler->mail_write((memaddr)params_addr);
+#endif
     free(atask);
 
 }