dol: initial dol commit
[jump.git] / dol / examples / example4 / src / addmult.c
diff --git a/dol/examples/example4/src/addmult.c b/dol/examples/example4/src/addmult.c
new file mode 100644 (file)
index 0000000..00ef15e
--- /dev/null
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include "addmult.h"
+
+void addmult_init(DOLProcess *p)
+{
+  sprintf(p->local->id, "addmult_%d_%d_%d",
+          GETINDEX(0),
+          GETINDEX(1),
+          GETINDEX(2));
+}
+
+
+int addmult_fire(DOLProcess *p)
+{
+  float factor1, factor2, summand;
+
+  DOL_read((void*)PORT_FACTOR1, &factor1, sizeof(float), p);
+  DOL_read((void*)PORT_FACTOR2, &factor2, sizeof(float), p);
+  DOL_read((void*)PORT_SUMMAND, &summand, sizeof(float), p);
+  p->local->sum = factor1 * factor2 + summand;
+  DOL_write((void*)PORT_SUM, &(p->local->sum), sizeof(float), p);
+
+  printf("%15s: %f * %f + %f = %f\n",
+         p->local->id, factor1, factor2, summand, p->local->sum);
+
+  return 0;
+}
+