Mercurial > hg > Gears > Gears
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){