/* used anamorphically: section, nsections */
#define OUTER_PERSECTION_BASE(zero,n, sect) \
- ((zero) + sect * (((n)-(zero) + NSECTIONS-1) / NSECTIONS))
-#define OUTER(v,zero,n, precomp) \
- for ((v)= OUTER_PERSECTION_BASE((zero),(n), section); \
- precomp, \
- (v) < OUTER_PERSECTION_BASE((zero),(n), section + 1) && (v) < (n); \
+ ((zero) + (sect) * (((n)-(zero) + NSECTIONS-1) / NSECTIONS))
+#define OUTER(v,zero,n, precomp) \
+ for ((v)= OUTER_PERSECTION_BASE((zero),(n), (section)); \
+ precomp, \
+ (v) < OUTER_PERSECTION_BASE((zero),(n), (section) + 1) && (v) < (n); \
(v)++)
/*
* - function must not modify anything other than
* its return value (for cost computation functions, COST()) or
* its designated output (for precomputation functions, PRECOMP())
- * (which latter it may not read)
+ * and in the latter case it may not read other parts of its output
* - function must of course be reentrant
*/
* secdatasz, passed as secdata, uninitialised on entry.
* After all the copies have finished, `combine' is invoked
* nsections times sequentially, with the same sets of arguments.
+ * inparallel is NOT itself reentrant.
*/
+void inparallel_barrier(void);
+
#endif /*PARALLEL_H*/