Beispiel #1
0
void thr1() {
  int l;
  glb_init(g>=0);
  glb_init(l==0);
  while (l < g) {
    l = l + 1;
  }
  assert(l <= g);
}
void thr3() { //writer
  glb_init(w==0);
  glb_init(r==0);
  { __blockattribute__((atomic))
    assume(w==0);
    assume(r==0);
    w = 1;
  }
  x = 3;
  w = 0;
}
int main(int argc, char **argv) {

	char *config_xml;

	if (argc != 2) {
		printf("Usage: %s config.xml \n", argv[0]);
		return (EXIT_SUCCESS);
	}


	// GET Ctrl+C signal;
	signal(SIGINT, exit_proc);

	/** Read configure file */

	config_xml = argv[1];
	parse_doc(config_xml);


	/** Initialize NFQUEUE forwarding process, logging files e.t.c */

	if(!nfqp_init() || !glb_init() || !stats_init() /* MYSQL , */){
		exit_proc();
	}




	nfqp_analyzer_function();



	return(EXIT_SUCCESS);

}
Beispiel #4
0
Datei: main.c Projekt: olivo/BP
void thr1() { //writer
#ifndef SATABS
  glb_init(w==0);
  glb_init(r==0);
#endif
#ifdef SATABS
  { __CPROVER_atomic_begin();
#else
  { __blockattribute__((atomic))
#endif
    assume(w==0);
    assume(r==0);
    w = 1;
#ifdef SATABS
  __CPROVER_atomic_end(); }
#else
  }
#endif
  x = 3;
  w = 0;
}
Beispiel #5
0
thr1(){
  glb_init(inode == busy);
  acquire(m_inode);
  if(inode == 0){
    acquire(m_busy);
    busy = 1;
    release(m_busy);
    inode = 1;
  }
  block = 1;
  assert(block == 1);
  release(m_inode);
}
Beispiel #6
0
void* qrcu_updater() {
  int i;
  int readerstart1;
  int readerstart2;
  int readerstart3;
  int sum;

  glb_init(idx==0);
  glb_init(ctr1==1);
  glb_init(ctr2==0);
  glb_init(readerprogress1==0);
  glb_init(readerprogress2==0);
  glb_init(readerprogress3==0);
  glb_init(mutex==0);  

  /* Snapshot reader state. */
  { __blockattribute__((atomic))
      readerstart1 = readerprogress1;
      readerstart2 = readerprogress2;
      readerstart3 = readerprogress3;
  }

  sum_unordered;
  if (sum <= 1) { sum_unordered; }
  if (sum > 1) {
    acquire(mutex);
    if (idx <= 0) { ctr2++; idx = 1; ctr1--; }
    else { ctr1++; idx = 0; ctr2--; }
    if (idx <= 0) { while (ctr2 > 0); }
    else { while (ctr1 > 0); }
    release(mutex);
  }

  /* Verify reader progress. */
  { __blockattribute__((atomic))
      if (NONDET) {
	assume(readerstart1 == 1);
	assume(readerprogress1 == 1);
	assert(0);
      } else {
	if (NONDET) {
	  assume(readerstart2 == 1);
	  assume(readerprogress2 == 1);
	  assert(0);
	} else {
	  if (NONDET) {
	    assume(readerstart2 == 1);
	    assume(readerprogress2 == 1);
	    assert(0);
	  } else { }
	}
      }
  }
}
Beispiel #7
0
void thr1() {
  int l1;
  int junk = 0;
  glb_init(l1==0);
  junk++;
  junk++;
  junk++;
  junk++;
  junk++;
  while (l1 < g) {
    l1 = l1 + 1;
  }
  junk++;
  junk++;
  junk++;
  junk++;
  junk++;
  g1 = l1;
}
Beispiel #8
0
void thr2() {
  int l2;
  int junk = 0;
  glb_init(l2==0);
  junk++;
  junk++;
  junk++;
  junk++;
  junk++;
  while (l2 < g) {
    l2 = l2 + 1;
  }
  junk++;
  junk++;
  junk++;
  junk++;
  junk++;
  g2 = l2;
}
Beispiel #9
0
Datei: main.c Projekt: olivo/BP
void* qrcu_updater() {
  int i;
  int readerstart1;
  int readerstart2;
  int readerstart3;
  int sum;

#ifndef SATABS
  glb_init(idx==0);
  glb_init(ctr1==1);
  glb_init(ctr2==0);
  glb_init(readerprogress1==0);
  glb_init(readerprogress2==0);
  glb_init(readerprogress3==0);
  glb_init(mutex==0);  
#endif

  /* Snapshot reader state. */
#ifdef SATABS
  { __CPROVER_atomic_begin();
#else
  { __blockattribute__((atomic))
#endif
      readerstart1 = readerprogress1;
      readerstart2 = readerprogress2;
      readerstart3 = readerprogress3;
#ifdef SATABS
  __CPROVER_atomic_end(); }
#else
  }
#endif

  sum_unordered;
  if (sum <= 1) { sum_unordered; }
  if (sum > 1) {
    acquire(mutex);
    if (idx <= 0) { ctr2++; idx = 1; ctr1--; }
    else { ctr1++; idx = 0; ctr2--; }
    if (idx <= 0) { while (ctr2 > 0); }
    else { while (ctr1 > 0); }
    release(mutex);
  }

  /* Verify reader progress. */
#ifdef SATABS
  { __CPROVER_atomic_begin();
#else
  { __blockattribute__((atomic))
#endif
      if (NONDET) {
	assume(readerstart1 == 1);
	assume(readerprogress1 == 1);
	assert(0);
      } else {
	if (NONDET) {
	  assume(readerstart2 == 1);
	  assume(readerprogress2 == 1);
	  assert(0);
	} else {
	  if (NONDET) {
	    assume(readerstart2 == 1);
	    assume(readerprogress2 == 1);
	    assert(0);
	  } else { }
	}
      }
#ifdef SATABS
  __CPROVER_atomic_end(); }
#else
  }
#endif
  /* Frontend generates too many transitions:
  { __blockattribute__((atomic))
      sum = 0;
      if (readerstart1 == 1 && readerprogress1 == 1)
	sum++;
      if (readerstart2 == 1 && readerprogress2 == 1)
	sum++;
      assert(sum == 0);
      } */

}
Beispiel #10
0
int main() {
  glb_init(g>0);
  assert(g1 <= g);
  assert(g2 <= g);
  assert(g1+g2 <= 2*g);
}