changeset 1002:dad078c90f29

fix mkdir
author matac42 <matac@cr.ie.u-ryukyu.ac.jp>
date Tue, 28 Dec 2021 18:33:48 +0900
parents 40817b3f91e2
children 088e533b5393
files src/parallel_execution/CMakeLists.txt src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.cbc src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.h src/parallel_execution/examples/gearsDirectory/GearsDirectory_test.cbc
diffstat 4 files changed, 27 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/parallel_execution/CMakeLists.txt	Thu Dec 23 16:59:31 2021 +0900
+++ b/src/parallel_execution/CMakeLists.txt	Tue Dec 28 18:33:48 2021 +0900
@@ -240,7 +240,7 @@
   TARGET
     gearsDirectory
   SOURCES
-    TaskManagerImpl.cbc CPUWorker.cbc SingleLinkedQueue.cbc SingleLinkedStack.cbc AtomicReference.cbc SynchronizedQueue.cbc FileSystemTree.cbc EntryTree.cbc examples/gearsDirectory/GearsDirectoryImpl.cbc examples/gearsDirectory/GearsDirectory_test.cbc compare.c
+    TaskManagerImpl.cbc CPUWorker.cbc SingleLinkedQueue.cbc SingleLinkedStack.cbc AtomicReference.cbc SynchronizedQueue.cbc FileSystemTree.cbc examples/gearsDirectory/GearsDirectoryImpl.cbc examples/gearsDirectory/GearsDirectory_test.cbc compare.c
 )
 
 GearsCommand(
--- a/src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.cbc	Thu Dec 23 16:59:31 2021 +0900
+++ b/src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.cbc	Tue Dec 28 18:33:48 2021 +0900
@@ -2,13 +2,12 @@
 #interface "GearsDirectory.h"
 #interface "Stack.h"
 #interface "FTree.h"
-#interface "ETree.h"
 #interface "Integer.h"
 #impl "GearsDirectory.h" as "GearsDirectoryImpl.h"
 
 // ----
 // typedef struct GearsDirectoryImpl <> impl GearsDirectory {
-//   struct ETree* currentDirectory;
+//   struct FTree* currentDirectory;
 //   struct Stack* directoryStack;
 // } GearsDirectoryImpl;
 // ----
@@ -18,11 +17,12 @@
     struct GearsDirectoryImpl* gears_directory_impl = new GearsDirectoryImpl();
     gearsDirectory->gearsDirectory = (union Data*)gears_directory_impl;
 
-    struct ETree* firstDirectory = createEntryTree(context, NULL);
+    struct FTree* firstDirectory = createFileSystemTree(context, NULL);
     struct FTree* iNodeTree = createFileSystemTree(context, NULL);    
     gears_directory_impl->currentDirectory = firstDirectory;
     gears_directory_impl->iNodeTree = iNodeTree;
     gears_directory_impl->directoryStack = createSingleLinkedStack(context);
+    gears_directory_impl->INodeNumber = 0;
     gearsDirectory->mkdir = C_mkdirGearsDirectoryImpl;
     gearsDirectory->cd2Child = C_cd2ChildGearsDirectoryImpl;
     gearsDirectory->cd2Parent = C_cd2ParentGearsDirectoryImpl;
@@ -30,18 +30,28 @@
 }
 
 __code mkdir(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) {
-    struct ETree* newDirectory = createEntryTree(context, gearsDirectory->currentDirectory);
-    Node* node = new Node();
-    node->value = newDirectory;
-    node->key = name->value;
-    struct ETree* cDirectory = new ETree();
+    struct FTree* newDirectory = createFileSystemTree(context, gearsDirectory->currentDirectory);
+    Node* inode = new Node();
+    // FIXME:inode numberのselectをしないといけない
+    inode->key = gearsDirectory->INodeNumber;
+    inode->value = newDirectory;
+    struct FTree* cDirectory = new FTree();
+    cDirectory = gearsDirectory->iNodeTree;
+    goto cDirectory->put(inode, mkdir2);
+}
+
+__code mkdir2(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) {
+    Node* dir = new Node();
+    dir->key = gearsDirectory->INodeNumber;
+    dir->value = name->value;
+    struct FTree* cDirectory = new FTree();
     cDirectory = gearsDirectory->currentDirectory;
-    goto cDirectory->put(node, next(...));
+    goto cDirectory->put(dir, next(...));
 }
 
 __code cd2Child(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) {
     // 現在のtreeからnode->keyがnameと一致するものをsearch
-    struct ETree* cDirectory = new ETree();
+    struct FTree* cDirectory = new FTree();
     cDirectory = gearsDirectory->currentDirectory;
     struct Node* node = new Node();
     node->key = name->value;
@@ -50,9 +60,9 @@
 
 __code cd2Child2(struct GearsDirectoryImpl* gearsDirectory, struct Node* node0, __code next(...)) {
     // treeを作る
-    // struct ETree* tree = new FileSystemTree();
+    // struct FTree* tree = new FileSystemTree();
     // currentDirectoryを作ったtreeに変更する
-    // struct ETree* parentDirectory = gearsDirectory->currentDirectory;
+    // struct FTree* parentDirectory = gearsDirectory->currentDirectory;
     // gearsDirectory->currentDirectory = tree;
     // current treeをstackにpushする
     // struct Stack* ds = gearsDirectory->directoryStack;
@@ -66,7 +76,7 @@
 __code cd2Child2_stub(struct Context* context) {
 	GearsDirectoryImpl* gearsDirectory = (GearsDirectoryImpl*)GearImpl(context, GearsDirectory, gearsDirectory);
 	enum Code next = Gearef(context, GearsDirectory)->next;
-    Node* node0 = Gearef(context, ETree)->node;
+    Node* node0 = Gearef(context, FTree)->node;
 	goto cd2Child2(context, gearsDirectory, node0, next);
 }
 
--- a/src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.h	Thu Dec 23 16:59:31 2021 +0900
+++ b/src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.h	Tue Dec 28 18:33:48 2021 +0900
@@ -1,5 +1,6 @@
 typedef struct GearsDirectoryImpl <> impl GearsDirectory {
-  struct ETree* currentDirectory;
+  struct FTree* currentDirectory;
   struct FTree* iNodeTree;
   struct Stack* directoryStack;
+  int INodeNumber;
 } GearsDirectoryImpl;
\ No newline at end of file
--- a/src/parallel_execution/examples/gearsDirectory/GearsDirectory_test.cbc	Thu Dec 23 16:59:31 2021 +0900
+++ b/src/parallel_execution/examples/gearsDirectory/GearsDirectory_test.cbc	Tue Dec 28 18:33:48 2021 +0900
@@ -6,7 +6,7 @@
 __code task1(GearsDirectory* gearsDirectory){     
     Integer* name = new Integer();
     name->value = 1;
-    goto gearsDirectory->mkdir(name, task2);
+    goto gearsDirectory->mkdir(name, exit_code);
 }
 
 __code task1_stub(struct Context* context){