# HG changeset patch # User mir3636 # Date 1524483178 -32400 # Node ID 43c00f43ee22d4dc9a709b4314f9d5d0e9119d77 # Parent 5af2f3eace48abcf7ea879b80221eac7c20690f4 update diff -r 5af2f3eace48 -r 43c00f43ee22 Paper/sigos.bib --- a/Paper/sigos.bib Mon Apr 23 19:19:14 2018 +0900 +++ b/Paper/sigos.bib Mon Apr 23 20:32:58 2018 +0900 @@ -30,9 +30,3 @@ year = {2004} } -@misc{openmp, - title = "OpenMP: Simple, portable, scalable SMP programming", - howpublished = {\url{http://www.openmp.org,}}, - note = {Accessed: 2018/02/05(Mon)} -} - diff -r 5af2f3eace48 -r 43c00f43ee22 Paper/sigos.pdf Binary file Paper/sigos.pdf has changed diff -r 5af2f3eace48 -r 43c00f43ee22 Paper/sigos.tex --- a/Paper/sigos.tex Mon Apr 23 19:19:14 2018 +0900 +++ b/Paper/sigos.tex Mon Apr 23 20:32:58 2018 +0900 @@ -342,6 +342,8 @@ この par goto 文は通常のプログラミングの関数呼び出しのように扱うことができる。 +Code\ref{perlpargoto} は Code\ref{pargoto} を perl スクリプトによって変換が行われたコードである。 +\lstinputlisting[caption=perl スクリプトによる par goto の変換, label=perlpargoto]{./src/parGotoCreateTask.c} %\section{比較} % diff -r 5af2f3eace48 -r 43c00f43ee22 Paper/src/parGotoCreateTask.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/src/parGotoCreateTask.c Mon Apr 23 20:32:58 2018 +0900 @@ -0,0 +1,31 @@ +__code code1(struct Context *context,struct Integer* integer1, struct Integer* integer2, struct Integer* output) { + struct Element* element; + context->task = NEW(struct Context); + initContext(context->task); + context->task->next = C_add; + context->task->idgCount = 2; + context->task->idg = context->task->dataNum; + context->task->maxIdg = context->task->idg + 2; + context->task->odg = context->task->maxIdg; + context->task->maxOdg = context->task->odg + 1; + GET_META(integer1)->wait = createSynchronizedQueue(context); + GET_META(integer2)->wait = createSynchronizedQueue(context); + GET_META(output)->wait = createSynchronizedQueue(context); + context->task->data[context->task->idg+0] = (union Data*)integer1; + context->task->data[context->task->idg+1] = (union Data*)integer2; + context->task->data[context->task->odg+0] = (union Data*)output; + element = &ALLOCATE(context, Element)->Element; + element->data = (union Data*)context->task; + element->next = context->taskList; + context->taskList = element; + Gearef(context, TaskManager)->taskList = context->taskList; + Gearef(context, TaskManager)->next1 = C_code2; + goto meta(context, C_code2); +} + +__code code1_stub(struct Context* context) { + Integer* integer1 = Gearef(context, Integer); + Integer* integer2 = Gearef(context, Integer); + Integer* output = Gearef(context, Integer); + goto code1(context, integer1, integer2, output); +} diff -r 5af2f3eace48 -r 43c00f43ee22 Paper/src/parGotoCreateTask.cbc --- a/Paper/src/parGotoCreateTask.cbc Mon Apr 23 19:19:14 2018 +0900 +++ b/Paper/src/parGotoCreateTask.cbc Mon Apr 23 20:32:58 2018 +0900 @@ -1,4 +1,4 @@ -__code code1(Integer *integer1, Integer * integer2, Integer *output) { +__code code1(struct Integer* integer1, struct Integer* integer2, struct Integer* output) { par goto add(integer1, integer2, output, __exit); goto code2(); }