summaryrefslogtreecommitdiffstats
path: root/baseline/source/petrinet/petrinet.c
diff options
context:
space:
mode:
authorJoshua Bakita <bakitajoshua@gmail.com>2019-10-07 19:13:39 -0400
committerJoshua Bakita <bakitajoshua@gmail.com>2019-10-07 19:13:39 -0400
commit386b7d3366f1359a265da207a9cafa3edf553b64 (patch)
treec76120c2c138faed822e4ae386be6ef22a738a78 /baseline/source/petrinet/petrinet.c
parent54a3f7091a2146b29c73a6fdc4b62a5c4ad7a3d8 (diff)
Reorganize and commit all the modified TACLeBench code and run scripts
Diffstat (limited to 'baseline/source/petrinet/petrinet.c')
-rw-r--r--baseline/source/petrinet/petrinet.c990
1 files changed, 990 insertions, 0 deletions
diff --git a/baseline/source/petrinet/petrinet.c b/baseline/source/petrinet/petrinet.c
new file mode 100644
index 0000000..7c9e1a0
--- /dev/null
+++ b/baseline/source/petrinet/petrinet.c
@@ -0,0 +1,990 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 2.0
5
6 Name: Petrinet
7
8 Author: Friedhelm Stappert, C-LAB, Paderborn, Germany
9
10 Function: Simulate an extended Petri Net
11 Automatically generated code containing large amounts of
12 if-statements (more than 250)
13
14 Source: Mälardalen benchmark suite
15
16 Changes: no major functional changes
17
18 License: may be used, modified, and re-distributed freely
19
20*/
21
22/* Remove the following #define for actual WCET analyses! */
23/*
24 #define PROFILING
25*/
26
27
28#include "../extra.h"
29
30#ifdef PROFILING
31#include <stdio.h>
32#endif
33
34#ifdef PROFILING
35/* Profiling variables. Remove for actual WCET analyses. */
36int petrinet_main_iters_dummy_i = 0,
37 petrinet_main_min_dummy_i = 100000,
38 petrinet_main_max_dummy_i = 0;
39#endif
40
41/*
42 Forward declaration of functions
43*/
44void petrinet_init( void );
45int petrinet_return( void );
46void petrinet_main( void );
47//int main( void );
48
49
50volatile int petrinet_P1_is_marked;
51volatile long petrinet_P1_marking_member_0[ 3 ];
52volatile int petrinet_P2_is_marked;
53volatile long petrinet_P2_marking_member_0[ 5 ];
54volatile int petrinet_P3_is_marked;
55volatile long petrinet_P3_marking_member_0[ 6 ];
56
57const long petrinet_CHECKSUM = 0;
58
59void _Pragma ( "entrypoint" ) petrinet_main( void )
60{
61 int dummy_i;
62 /* dummy_i = 17; Takes too much time */
63 dummy_i = 2;
64
65 #ifdef PROFILING
66 main_iters_dummy_i = 0;
67 #endif
68 _Pragma( "loopbound min 2 max 2" )
69 while ( dummy_i > 0 ) {
70 #ifdef PROFILING
71 main_iters_dummy_i++;
72 #endif
73
74 dummy_i--;
75 /* Permutation for Place P1 : 0, 1, 2 */
76 /* Transition T1 */
77 if ( ( petrinet_P1_is_marked >= 3 ) &&
78 ( petrinet_P3_is_marked + 3 <= 6 ) &&
79 ( petrinet_P1_marking_member_0[ 1 ]
80 == petrinet_P1_marking_member_0[ 2 ] ) ) {
81
82 long x;
83 long y;
84 long z;
85
86 x = petrinet_P1_marking_member_0[ 0 ];
87 y = petrinet_P1_marking_member_0[ 1 ];
88
89 /* Transition condition */
90 if ( x < y ) {
91
92 /* demarking of input places */
93 petrinet_P1_is_marked -= 3;
94
95 /* preaction */
96 z = x - y;
97
98 /* marking of output places */
99 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x;
100 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y;
101 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z;
102 petrinet_P3_is_marked += 3;
103
104 } /* end of if (Transition condition) */
105 }
106
107 /* Permutation for Place petrinet_P1 : 0, 2, 1 */
108 /* Transition T1 */
109 if ( ( petrinet_P1_is_marked >= 3 ) &&
110 ( petrinet_P3_is_marked + 3 <= 6 ) &&
111 ( petrinet_P1_marking_member_0[ 2 ]
112 == petrinet_P1_marking_member_0[ 1 ] ) ) {
113
114 long x;
115 long y;
116 long z;
117
118 x = petrinet_P1_marking_member_0[ 0 ];
119 y = petrinet_P1_marking_member_0[ 2 ];
120
121 /* Transition condition */
122 if ( ( x < y ) ) {
123
124 /* demarking of input places */
125 petrinet_P1_is_marked -= 3;
126
127 /* preaction */
128 z = x - y;
129
130 /* marking of output places */
131 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x;
132 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y;
133 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z;
134 petrinet_P3_is_marked += 3;
135
136 } /* end of if (Transition condition) */
137 }
138
139 /* Permutation for Place petrinet_P1 : 1, 0, 2 */
140 /* Transition T1 */
141 if ( ( petrinet_P1_is_marked >= 3 ) &&
142 ( petrinet_P3_is_marked + 3 <= 6 ) &&
143 ( petrinet_P1_marking_member_0[ 0 ]
144 == petrinet_P1_marking_member_0[ 2 ] ) ) {
145
146 long x;
147 long y;
148 long z;
149
150 x = petrinet_P1_marking_member_0[ 1 ];
151 y = petrinet_P1_marking_member_0[ 0 ];
152
153 /* Transition condition */
154 if ( x < y ) {
155
156 /* demarking of input places */
157 petrinet_P1_is_marked -= 3;
158
159 /* preaction */
160 z = x - y;
161
162 /* marking of output places */
163 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x;
164 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y;
165 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z;
166 petrinet_P3_is_marked += 3;
167
168 } /* end of if (Transition condition) */
169 }
170
171 /* Permutation for Place petrinet_P1 : 1, 2, 0 */
172 /* Transition T1 */
173 if ( ( petrinet_P1_is_marked >= 3 ) &&
174 ( petrinet_P3_is_marked + 3 <= 6 ) &&
175 ( petrinet_P1_marking_member_0[ 2 ]
176 == petrinet_P1_marking_member_0[ 0 ] ) ) {
177
178 long x;
179 long y;
180 long z;
181
182 x = petrinet_P1_marking_member_0[ 1 ];
183 y = petrinet_P1_marking_member_0[ 2 ];
184
185 /* Transition condition */
186 if ( ( x < y ) ) {
187
188 /* demarking of input places */
189 petrinet_P1_is_marked -= 3;
190
191 /* preaction */
192 z = x - y;
193
194 /* marking of output places */
195 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x;
196 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y;
197 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z;
198 petrinet_P3_is_marked += 3;
199
200 } /* end of if (Transition condition) */
201 }
202
203 /* Permutation for Place petrinet_P1 : 2, 0, 1 */
204 /* Transition T1 */
205 if ( ( petrinet_P1_is_marked >= 3 ) &&
206 ( petrinet_P3_is_marked + 3 <= 6 ) &&
207 ( petrinet_P1_marking_member_0[ 0 ]
208 == petrinet_P1_marking_member_0[ 1 ] ) ) {
209 long x;
210 long y;
211 long z;
212
213 x = petrinet_P1_marking_member_0[ 2 ];
214 y = petrinet_P1_marking_member_0[ 0 ];
215
216 /* Transition condition */
217 if ( ( x < y ) ) {
218
219 /* demarking of input places */
220 petrinet_P1_is_marked -= 3;
221
222 /* preaction */
223 z = x - y;
224
225 /* marking of output places */
226 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x;
227 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y;
228 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z;
229 petrinet_P3_is_marked += 3;
230
231 } /* end of if (Transition condition) */
232 }
233
234 /* Permutation for Place petrinet_P1 : 2, 1, 0 */
235 /* Transition T1 */
236 if ( ( petrinet_P1_is_marked >= 3 ) &&
237 ( petrinet_P3_is_marked + 3 <= 6 ) &&
238 ( petrinet_P1_marking_member_0[ 1 ]
239 == petrinet_P1_marking_member_0[ 0 ] ) ) {
240 long x;
241 long y;
242 long z;
243
244 x = petrinet_P1_marking_member_0[ 2 ];
245 y = petrinet_P1_marking_member_0[ 1 ];
246
247 /* Transition condition */
248 if ( ( x < y ) ) {
249
250 /* demarking of input places */
251 petrinet_P1_is_marked -= 3;
252
253 /* preaction */
254 z = x - y;
255
256 /* marking of output places */
257 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x;
258 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y;
259 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z;
260 petrinet_P3_is_marked += 3;
261
262 } /* end of if (Transition condition) */
263 }
264
265 /* Permutation for Place P2 : 0, 1, 2, 3 */
266 /* Transition T2 */
267 if ( ( petrinet_P2_is_marked >= 4 ) &&
268 ( ( ( petrinet_P3_is_marked + 3 ) <= 6 ) ) &&
269 ( ( ( petrinet_P2_marking_member_0[ 1 ]
270 == petrinet_P2_marking_member_0[ 2 ] ) ) &&
271 ( ( petrinet_P2_marking_member_0[ 1 ]
272 == petrinet_P2_marking_member_0[ 3 ] ) ) ) ) {
273 long a;
274 long b;
275 long c;
276
277 a = petrinet_P2_marking_member_0[ 0 ];
278 b = petrinet_P2_marking_member_0[ 1 ];
279
280 /* Transition condition */
281 if ( ( b > a ) ) {
282
283 /* demarking of input places */
284 petrinet_P2_is_marked -= 4;
285
286 /* preaction */
287 c = a + b;
288
289 /* marking of output places */
290 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
291 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
292 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
293 petrinet_P3_is_marked += 3;
294
295 } /* end of if (Transition condition) */
296 }
297
298 /* Permutation for Place petrinet_P2 : 0, 1, 3, 2 */
299 /* Transition T2 */
300 if ( ( petrinet_P2_is_marked >= 4 ) &&
301 ( ( ( petrinet_P3_is_marked + 3 ) <= 6 ) ) &&
302 ( ( petrinet_P2_marking_member_0[ 1 ]
303 == petrinet_P2_marking_member_0[ 3 ] ) &&
304 ( petrinet_P2_marking_member_0[ 1 ]
305 == petrinet_P2_marking_member_0[ 2 ] ) ) ) {
306 long a;
307 long b;
308 long c;
309
310 a = petrinet_P2_marking_member_0[ 0 ];
311 b = petrinet_P2_marking_member_0[ 1 ];
312
313 /* Transition condition */
314 if ( ( b > a ) ) {
315
316 /* demarking of input places */
317 petrinet_P2_is_marked -= 4;
318
319 /* preaction */
320 c = a + b;
321
322 /* marking of output places */
323 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
324 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
325 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
326 petrinet_P3_is_marked += 3;
327
328 } /* end of if (Transition condition) */
329 }
330
331 /* Permutation for Place petrinet_P2 : 0, 2, 1, 3 */
332 /* Transition T2 */
333 if ( ( petrinet_P2_is_marked >= 4 ) &&
334 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
335 ( ( petrinet_P2_marking_member_0[ 2 ]
336 == petrinet_P2_marking_member_0[ 1 ] ) &&
337 ( petrinet_P2_marking_member_0[ 2 ]
338 == petrinet_P2_marking_member_0[ 3 ] ) ) ) {
339 long a;
340 long b;
341 long c;
342
343 a = petrinet_P2_marking_member_0[ 0 ];
344 b = petrinet_P2_marking_member_0[ 2 ];
345
346 /* Transition condition */
347 if ( ( b > a ) ) {
348
349 /* demarking of input places */
350 petrinet_P2_is_marked -= 4;
351
352 /* preaction */
353 c = a + b;
354
355 /* marking of output places */
356 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
357 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
358 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
359 petrinet_P3_is_marked += 3;
360
361 } /* end of if (Transition condition) */
362 }
363
364 /* Permutation for Place petrinet_P2 : 0, 2, 3, 1 */
365 /* Transition T2 */
366 if ( ( petrinet_P2_is_marked >= 4 ) &&
367 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
368 ( ( petrinet_P2_marking_member_0[ 2 ]
369 == petrinet_P2_marking_member_0[ 3 ] ) &&
370 ( petrinet_P2_marking_member_0[ 2 ]
371 == petrinet_P2_marking_member_0[ 1 ] ) ) ) {
372 long a;
373 long b;
374 long c;
375
376 a = petrinet_P2_marking_member_0[ 0 ];
377 b = petrinet_P2_marking_member_0[ 2 ];
378
379 /* Transition condition */
380 if ( ( b > a ) ) {
381
382 /* demarking of input places */
383 petrinet_P2_is_marked -= 4;
384
385 /* preaction */
386 c = a + b;
387
388 /* marking of output places */
389 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
390 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
391 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
392 petrinet_P3_is_marked += 3;
393
394 } /* end of if (Transition condition) */
395 }
396
397 /* Permutation for Place petrinet_P2 : 0, 3, 1, 2 */
398 /* Transition T2 */
399 if ( ( petrinet_P2_is_marked >= 4 ) &&
400 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
401 ( ( petrinet_P2_marking_member_0[ 3 ]
402 == petrinet_P2_marking_member_0[ 1 ] ) &&
403 ( petrinet_P2_marking_member_0[ 3 ]
404 == petrinet_P2_marking_member_0[ 2 ] ) ) ) {
405 long a;
406 long b;
407 long c;
408
409 a = petrinet_P2_marking_member_0[ 0 ];
410 b = petrinet_P2_marking_member_0[ 3 ];
411
412 /* Transition condition */
413 if ( ( b > a ) ) {
414
415 /* demarking of input places */
416 petrinet_P2_is_marked -= 4;
417
418 /* preaction */
419 c = a + b;
420
421 /* marking of output places */
422 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
423 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
424 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
425 petrinet_P3_is_marked += 3;
426
427 } /* end of if (Transition condition) */
428 }
429
430 /* Permutation for Place petrinet_P2 : 0, 3, 2, 1 */
431 /* Transition T2 */
432 if ( ( petrinet_P2_is_marked >= 4 ) &&
433 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
434 ( ( petrinet_P2_marking_member_0[ 3 ]
435 == petrinet_P2_marking_member_0[ 2 ] ) &&
436 ( petrinet_P2_marking_member_0[ 3 ]
437 == petrinet_P2_marking_member_0[ 1 ] ) ) ) {
438 long a;
439 long b;
440 long c;
441
442 a = petrinet_P2_marking_member_0[ 0 ];
443 b = petrinet_P2_marking_member_0[ 3 ];
444
445 /* Transition condition */
446 if ( ( b > a ) ) {
447
448 /* demarking of input places */
449 petrinet_P2_is_marked -= 4;
450
451 /* preaction */
452 c = a + b;
453
454 /* marking of output places */
455 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
456 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
457 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
458 petrinet_P3_is_marked += 3;
459
460 } /* end of if (Transition condition) */
461 }
462
463 /* Permutation for Place petrinet_P2 : 1, 0, 2, 3 */
464 /* Transition T2 */
465 if ( ( petrinet_P2_is_marked >= 4 ) &&
466 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
467 ( ( petrinet_P2_marking_member_0[ 0 ]
468 == petrinet_P2_marking_member_0[ 2 ] ) &&
469 ( petrinet_P2_marking_member_0[ 0 ]
470 == petrinet_P2_marking_member_0[ 3 ] ) ) ) {
471 long a;
472 long b;
473 long c;
474
475 a = petrinet_P2_marking_member_0[ 1 ];
476 b = petrinet_P2_marking_member_0[ 0 ];
477
478 /* Transition condition */
479 if ( ( b > a ) ) {
480
481 /* demarking of input places */
482 petrinet_P2_is_marked -= 4;
483
484 /* preaction */
485 c = a + b;
486
487 /* marking of output places */
488 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
489 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
490 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
491 petrinet_P3_is_marked += 3;
492
493 } /* end of if (Transition condition) */
494 }
495
496 /* Permutation for Place petrinet_P2 : 1, 0, 3, 2 */
497 /* Transition T2 */
498 if ( ( petrinet_P2_is_marked >= 4 ) &&
499 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
500 ( ( petrinet_P2_marking_member_0[ 0 ]
501 == petrinet_P2_marking_member_0[ 3 ] ) &&
502 ( petrinet_P2_marking_member_0[ 0 ]
503 == petrinet_P2_marking_member_0[ 2 ] ) ) ) {
504 long a;
505 long b;
506 long c;
507
508 a = petrinet_P2_marking_member_0[ 1 ];
509 b = petrinet_P2_marking_member_0[ 0 ];
510
511 /* Transition condition */
512 if ( ( b > a ) ) {
513
514 /* demarking of input places */
515 petrinet_P2_is_marked -= 4;
516
517 /* preaction */
518 c = a + b;
519
520 /* marking of output places */
521 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
522 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
523 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
524 petrinet_P3_is_marked += 3;
525
526 } /* end of if (Transition condition) */
527 }
528
529 /* Permutation for Place petrinet_P2 : 1, 2, 0, 3 */
530 /* Transition T2 */
531 if ( ( petrinet_P2_is_marked >= 4 ) &&
532 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
533 ( ( petrinet_P2_marking_member_0[ 2 ]
534 == petrinet_P2_marking_member_0[ 0 ] ) &&
535 ( petrinet_P2_marking_member_0[ 2 ]
536 == petrinet_P2_marking_member_0[ 3 ] ) ) ) {
537 long a;
538 long b;
539 long c;
540
541 a = petrinet_P2_marking_member_0[ 1 ];
542 b = petrinet_P2_marking_member_0[ 2 ];
543
544 /* Transition condition */
545 if ( ( b > a ) ) {
546
547 /* demarking of input places */
548 petrinet_P2_is_marked -= 4;
549
550 /* preaction */
551 c = a + b;
552
553 /* marking of output places */
554 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
555 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
556 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
557 petrinet_P3_is_marked += 3;
558
559 } /* end of if (Transition condition) */
560 }
561
562 /* Permutation for Place petrinet_P2 : 1, 2, 3, 0 */
563 /* Transition T2 */
564 if ( ( petrinet_P2_is_marked >= 4 ) &&
565 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
566 ( ( petrinet_P2_marking_member_0[ 2 ]
567 == petrinet_P2_marking_member_0[ 3 ] ) &&
568 ( petrinet_P2_marking_member_0[ 2 ]
569 == petrinet_P2_marking_member_0[ 0 ] ) ) ) {
570 long a;
571 long b;
572 long c;
573
574 a = petrinet_P2_marking_member_0[ 1 ];
575 b = petrinet_P2_marking_member_0[ 2 ];
576
577 /* Transition condition */
578 if ( ( b > a ) ) {
579 /* demarking of input places */
580 petrinet_P2_is_marked -= 4;
581
582 /* preaction */
583 c = a + b;
584
585 /* marking of output places */
586 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
587 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
588 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
589 petrinet_P3_is_marked += 3;
590
591 } /* end of if (Transition condition) */
592 }
593
594 /* Permutation for Place petrinet_P2 : 1, 3, 0, 2 */
595 /* Transition T2 */
596 if ( ( petrinet_P2_is_marked >= 4 ) &&
597 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
598 ( ( petrinet_P2_marking_member_0[ 3 ]
599 == petrinet_P2_marking_member_0[ 0 ] ) &&
600 ( petrinet_P2_marking_member_0[ 3 ]
601 == petrinet_P2_marking_member_0[ 2 ] ) ) ) {
602 long a;
603 long b;
604 long c;
605
606 a = petrinet_P2_marking_member_0[ 1 ];
607 b = petrinet_P2_marking_member_0[ 3 ];
608
609 /* Transition condition */
610 if ( ( b > a ) ) {
611 /* demarking of input places */
612 petrinet_P2_is_marked -= 4;
613
614 /* preaction */
615 c = a + b;
616
617 /* marking of output places */
618 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
619 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
620 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
621 petrinet_P3_is_marked += 3;
622
623 } /* end of if (Transition condition) */
624 }
625
626
627 /* Permutation for Place petrinet_P2 : 1, 3, 2, 0 */
628 /* Transition T2 */
629 if ( ( petrinet_P2_is_marked >= 4 ) &&
630 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
631 ( ( petrinet_P2_marking_member_0[ 3 ]
632 == petrinet_P2_marking_member_0[ 2 ] ) &&
633 ( petrinet_P2_marking_member_0[ 3 ]
634 == petrinet_P2_marking_member_0[ 0 ] ) ) ) {
635 long a;
636 long b;
637 long c;
638
639 a = petrinet_P2_marking_member_0[ 1 ];
640 b = petrinet_P2_marking_member_0[ 3 ];
641
642 /* Transition condition */
643 if ( ( b > a ) ) {
644
645 /* demarking of input places */
646 petrinet_P2_is_marked -= 4;
647
648 /* preaction */
649 c = a + b;
650
651 /* marking of output places */
652 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
653 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
654 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
655 petrinet_P3_is_marked += 3;
656
657 } /* end of if (Transition condition) */
658 }
659
660
661 /* Permutation for Place petrinet_P2 : 2, 0, 1, 3 */
662 /* Transition T2 */
663 if ( ( petrinet_P2_is_marked >= 4 ) &&
664 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
665 ( ( petrinet_P2_marking_member_0[ 0 ]
666 == petrinet_P2_marking_member_0[ 1 ] ) &&
667 ( petrinet_P2_marking_member_0[ 0 ]
668 == petrinet_P2_marking_member_0[ 3 ] ) ) ) {
669 long a;
670 long b;
671 long c;
672
673 a = petrinet_P2_marking_member_0[ 2 ];
674 b = petrinet_P2_marking_member_0[ 0 ];
675
676 /* Transition condition */
677 if ( ( b > a ) ) {
678 /* demarking of input places */
679 petrinet_P2_is_marked -= 4;
680
681 /* preaction */
682 c = a + b;
683
684 /* marking of output places */
685 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
686 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
687 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
688 petrinet_P3_is_marked += 3;
689
690 } /* end of if (Transition condition) */
691 }
692
693 /* Permutation for Place petrinet_P2 : 2, 0, 3, 1 */
694 /* Transition T2 */
695 if ( ( petrinet_P2_is_marked >= 4 ) &&
696 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
697 ( ( petrinet_P2_marking_member_0[ 0 ]
698 == petrinet_P2_marking_member_0[ 3 ] ) &&
699 ( petrinet_P2_marking_member_0[ 0 ]
700 == petrinet_P2_marking_member_0[ 1 ] ) ) ) {
701 long a;
702 long b;
703 long c;
704
705 a = petrinet_P2_marking_member_0[ 2 ];
706 b = petrinet_P2_marking_member_0[ 0 ];
707
708 /* Transition condition */
709 if ( ( b > a ) ) {
710 /* demarking of input places */
711 petrinet_P2_is_marked -= 4;
712
713 /* preaction */
714 c = a + b;
715
716 /* marking of output places */
717 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
718 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
719 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
720 petrinet_P3_is_marked += 3;
721
722 } /* end of if (Transition condition) */
723 }
724
725 /* Permutation for Place petrinet_P2 : 2, 1, 0, 3 */
726 /* Transition T2 */
727 if ( ( petrinet_P2_is_marked >= 4 ) &&
728 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
729 ( ( petrinet_P2_marking_member_0[ 1 ]
730 == petrinet_P2_marking_member_0[ 0 ] ) &&
731 ( petrinet_P2_marking_member_0[ 1 ]
732 == petrinet_P2_marking_member_0[ 3 ] ) ) ) {
733 long a;
734 long b;
735 long c;
736
737 a = petrinet_P2_marking_member_0[ 2 ];
738 b = petrinet_P2_marking_member_0[ 1 ];
739
740 /* Transition condition */
741 if ( ( b > a ) ) {
742 /* demarking of input places */
743 petrinet_P2_is_marked -= 4;
744
745 /* preaction */
746 c = a + b;
747
748 /* marking of output places */
749 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
750 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
751 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
752 petrinet_P3_is_marked += 3;
753
754 } /* end of if (Transition condition) */
755 }
756
757 /* Permutation for Place petrinet_P2 : 2, 1, 3, 0 */
758 /* Transition T2 */
759 if ( ( petrinet_P2_is_marked >= 4 ) &&
760 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
761 ( ( petrinet_P2_marking_member_0[ 1 ]
762 == petrinet_P2_marking_member_0[ 3 ] ) &&
763 ( petrinet_P2_marking_member_0[ 1 ]
764 == petrinet_P2_marking_member_0[ 0 ] ) ) ) {
765 long a;
766 long b;
767 long c;
768
769 a = petrinet_P2_marking_member_0[ 2 ];
770 b = petrinet_P2_marking_member_0[ 1 ];
771
772 /* Transition condition */
773 if ( ( b > a ) ) {
774 /* demarking of input places */
775 petrinet_P2_is_marked -= 4;
776
777 /* preaction */
778 c = a + b;
779
780 /* marking of output places */
781 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
782 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
783 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
784 petrinet_P3_is_marked += 3;
785
786 } /* end of if (Transition condition) */
787 }
788
789 /* Permutation for Place petrinet_P2 : 2, 3, 0, 1 */
790 /* Transition T2 */
791 if ( ( petrinet_P2_is_marked >= 4 ) &&
792 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
793 ( ( petrinet_P2_marking_member_0[ 3 ]
794 == petrinet_P2_marking_member_0[ 0 ] ) &&
795 ( petrinet_P2_marking_member_0[ 3 ]
796 == petrinet_P2_marking_member_0[ 1 ] ) ) ) {
797 long a;
798 long b;
799 long c;
800
801 a = petrinet_P2_marking_member_0[ 2 ];
802 b = petrinet_P2_marking_member_0[ 3 ];
803
804 /* Transition condition */
805 if ( ( b > a ) ) {
806 /* demarking of input places */
807 petrinet_P2_is_marked -= 4;
808
809 /* preaction */
810 c = a + b;
811
812 /* marking of output places */
813 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
814 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
815 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
816 petrinet_P3_is_marked += 3;
817
818 } /* end of if (Transition condition) */
819 }
820
821 /* Permutation for Place petrinet_P2 : 2, 3, 1, 0 */
822 /* Transition T2 */
823 if ( ( petrinet_P2_is_marked >= 4 ) &&
824 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
825 ( ( petrinet_P2_marking_member_0[ 3 ]
826 == petrinet_P2_marking_member_0[ 1 ] ) &&
827 ( petrinet_P2_marking_member_0[ 3 ]
828 == petrinet_P2_marking_member_0[ 0 ] ) ) ) {
829 long a;
830 long b;
831 long c;
832
833 a = petrinet_P2_marking_member_0[ 2 ];
834 b = petrinet_P2_marking_member_0[ 3 ];
835
836 /* Transition condition */
837 if ( ( b > a ) ) {
838 /* demarking of input places */
839 petrinet_P2_is_marked -= 4;
840
841 /* preaction */
842 c = a + b;
843
844 /* marking of output places */
845 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
846 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
847 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
848 petrinet_P3_is_marked += 3;
849
850 } /* end of if (Transition condition) */
851 }
852
853 /* Permutation for Place petrinet_P2 : 3, 0, 1, 2 */
854 /* Transition T2 */
855 if ( ( petrinet_P2_is_marked >= 4 ) &&
856 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
857 ( ( petrinet_P2_marking_member_0[ 0 ]
858 == petrinet_P2_marking_member_0[ 1 ] ) &&
859 ( petrinet_P2_marking_member_0[ 0 ]
860 == petrinet_P2_marking_member_0[ 2 ] ) ) ) {
861 long a;
862 long b;
863 long c;
864
865 a = petrinet_P2_marking_member_0[ 3 ];
866 b = petrinet_P2_marking_member_0[ 0 ];
867
868 /* Transition condition */
869 if ( ( b > a ) ) {
870
871 /* demarking of input places */
872 petrinet_P2_is_marked -= 4;
873
874 /* preaction */
875 c = a + b;
876
877 /* marking of output places */
878 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
879 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
880 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
881 petrinet_P3_is_marked += 3;
882
883 } /* end of if (Transition condition) */
884 }
885
886
887 /* Permutation for Place petrinet_P2 : 3, 0, 2, 1 */
888 /* Transition T2 */
889 if ( ( petrinet_P2_is_marked >= 4 ) &&
890 ( ( petrinet_P3_is_marked + 3 ) <= 6 ) &&
891 ( ( petrinet_P2_marking_member_0[ 0 ]
892 == petrinet_P2_marking_member_0[ 2 ] ) &&
893 ( petrinet_P2_marking_member_0[ 0 ]
894 == petrinet_P2_marking_member_0[ 1 ] ) ) ) {
895
896 long a;
897 long b;
898 long c;
899
900 a = petrinet_P2_marking_member_0[ 3 ];
901 b = petrinet_P2_marking_member_0[ 0 ];
902
903 /* Transition condition */
904 if ( ( b > a ) ) {
905
906 /* demarking of input places */
907 petrinet_P2_is_marked -= 4;
908
909 /* preaction */
910 c = a + b;
911
912 /* marking of output places */
913 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a;
914 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b;
915 petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c;
916 petrinet_P3_is_marked += 3;
917
918 } /* end of if (Transition condition) */
919 }
920 }
921 #ifdef PROFILING
922 if ( main_iters_dummy_i < main_min_dummy_i )
923 main_min_dummy_i = main_iters_dummy_i;
924 if ( main_iters_dummy_i > main_max_dummy_i )
925 main_max_dummy_i = main_iters_dummy_i;
926 #endif
927
928 #ifdef PROFILING
929 printf( "main::dummy_i-loop: [%d, %d]\n",
930 main_min_dummy_i, main_max_dummy_i );
931 #endif
932
933 //dummy_i = 77;
934 // TODO: not a good return value
935 //return dummy_i;
936}
937
938
939void petrinet_init( void )
940{
941 petrinet_P1_is_marked = 3;
942 petrinet_P2_is_marked = 5;
943 petrinet_P3_is_marked = 0;
944
945 /*
946 Maybe we should also initialise these arrays, as they may be read
947 in the petrinet_main() function before being written.
948 */
949 /*
950 volatile long petrinet_P1_marking_member_0[ 3 ];
951 volatile long petrinet_P2_marking_member_0[ 5 ];
952 volatile long petrinet_P3_marking_member_0[ 6 ];
953 */
954}
955
956
957int petrinet_return( void )
958{
959 // TODO: use something from the Px_... arrays
960 int checksum = 0;
961 int i;
962
963 for ( i = 0; i < 3; ++i )
964 checksum += petrinet_P1_marking_member_0[i];
965
966 for ( i = 0; i < 5; ++i )
967 checksum += petrinet_P2_marking_member_0[i];
968
969 for ( i = 0; i < 6; ++i )
970 checksum += petrinet_P3_marking_member_0[i];
971
972 return ( ( checksum == petrinet_CHECKSUM ) ? 0 : -1 );
973}
974
975
976int main( int argc, char **argv )
977{
978 SET_UP
979
980 for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){
981
982 START_LOOP
983 petrinet_main();
984 STOP_LOOP
985 }
986 WRITE_TO_FILE
987
988 return ( petrinet_return() );
989}
990