X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fexamples%2Fexampleproducerconsumer%2Fsrc%2Fproducer.c;fp=dol%2Fexamples%2Fexampleproducerconsumer%2Fsrc%2Fproducer.c;h=2e0130b0e89af95b0cb9398f1b79d3bfc5dface2;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/examples/exampleproducerconsumer/src/producer.c b/dol/examples/exampleproducerconsumer/src/producer.c new file mode 100644 index 0000000..2e0130b --- /dev/null +++ b/dol/examples/exampleproducerconsumer/src/producer.c @@ -0,0 +1,37 @@ +#include +#include + +#include "producer.h" + +// initialization function +void producer_init(DOLProcess *p) { + p->local->index = 0; + p->local->len = 20; + sprintf(p->local->str, "abcdefghijklmnopqrstuvwxyz"); + +} + +int producer_fire(DOLProcess *p) { + + if (p->local->index < p->local->len) { + if (DOL_wtest((void*)PORT_OUTA, 1, p)) { + DOL_write((void*)PORT_OUTA, &(p->local->str[p->local->index]), + 1, p); + printf("p write to port A %c\n", + p->local->str[p->local->index]); + } + else { + DOL_write((void*)PORT_OUTB, &(p->local->str[p->local->index]), + 1, p); + printf("p write to port B %c\n", + p->local->str[p->local->index]); + } + p->local->index++; + return 0; + } + else { + DOL_detach(p); + return -1; + } +} +