source: CIVL/examples/pthread/esbmc/reorder_2_false-unreach-call.c@ 1aaefd4

main test-branch
Last change on this file since 1aaefd4 was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 1.9 KB
Line 
1extern void __VERIFIER_error();
2
3#include <stdio.h>
4#include <stdlib.h>
5#include <pthread.h>
6
7#define USAGE "./reorder <param1> <param2>\n"
8
9static int iSet = 2;
10static int iCheck = 2;
11
12static int a = 0;
13static int b = 0;
14
15void *setThread(void *param);
16void *checkThread(void *param);
17void set();
18int check();
19
20int main(int argc, char *argv[]) {
21 int i, err;
22
23 if (argc != 1) {
24 if (argc != 3) {
25 fprintf(stderr, USAGE);
26 exit(-1);
27 } else {
28 sscanf(argv[1], "%d", &iSet);
29 sscanf(argv[2], "%d", &iCheck);
30 }
31 }
32
33 //printf("iSet = %d\niCheck = %d\n", iSet, iCheck);
34
35 pthread_t setPool[iSet];
36 pthread_t checkPool[iCheck];
37
38 for (i = 0; i < iSet; i++) {
39 if (0 != (err = pthread_create(&setPool[i], NULL, &setThread, NULL))) {
40 fprintf(stderr, "Error [%d] found creating set thread.\n", err);
41 exit(-1);
42 }
43 }
44
45 for (i = 0; i < iCheck; i++) {
46 if (0 != (err = pthread_create(&checkPool[i], NULL, &checkThread,
47 NULL))) {
48 fprintf(stderr, "Error [%d] found creating check thread.\n", err);
49 exit(-1);
50 }
51 }
52
53 for (i = 0; i < iSet; i++) {
54 if (0 != (err = pthread_join(setPool[i], NULL))) {
55 fprintf(stderr, "pthread join error: %d\n", err);
56 exit(-1);
57 }
58 }
59
60 for (i = 0; i < iCheck; i++) {
61 if (0 != (err = pthread_join(checkPool[i], NULL))) {
62 fprintf(stderr, "pthread join error: %d\n", err);
63 exit(-1);
64 }
65 }
66
67 return 0;
68}
69
70void *setThread(void *param) {
71 a = 1;
72 b = -1;
73
74 return NULL;
75}
76
77void *checkThread(void *param) {
78 if (! ((a == 0 && b == 0) || (a == 1 && b == -1))) {
79 fprintf(stderr, "Bug found!\n");
80 ERROR: __VERIFIER_error();
81 goto ERROR;
82 }
83
84 return NULL;
85}
86
Note: See TracBrowser for help on using the repository browser.