Exemplo n.º 1
0
Arquivo: basic9.c Projeto: Machiry/AOS
/* proc1 writes some data, commits it, then exits */
void proc1() 
{
     rvm_t rvm;
     trans_t trans;
     char* segs[1];
     
     rvm = rvm_init(__FILE__ ".d");
     rvm_destroy(rvm, "testseg");
     segs[0] = (char *) rvm_map(rvm, "testseg", 10000);

     trans = rvm_begin_trans(rvm, 1, (void **) segs);
     rvm_about_to_modify(trans, segs[0], 0, 100);
     sprintf(segs[0], "one");
     rvm_commit_trans(trans);

     trans = rvm_begin_trans(rvm, 1, (void **) segs);
     rvm_about_to_modify(trans, segs[0], 0, 100);
     sprintf(segs[0], "two");
     rvm_abort_trans(trans);

     trans = rvm_begin_trans(rvm, 1, (void **) segs);
     rvm_about_to_modify(trans, segs[0], 0, 100);
     sprintf(segs[0], "foo");
     rvm_commit_trans(trans);

     abort();
}
Exemplo n.º 2
0
/* proc1 writes some data, commits it, then exits */
void proc1() {
	rvm_t rvm;
	trans_t trans;
	char* segs[2];

	rvm = rvm_init("rvm_segments");
	segs[0] = (char *) rvm_map(rvm, "testseg", 10000);
	segs[1] = (char *) rvm_map(rvm, "anotherseg", 10000);
     
	trans = rvm_begin_trans(rvm, 2, (void **) segs);
     
	rvm_about_to_modify(trans, segs[0], 0, 100);
	sprintf(segs[0], "hello, world");
     
	rvm_about_to_modify(trans, segs[0], 1000, 100);
	sprintf(segs[0]+1000, "hello, world");

	rvm_about_to_modify(trans, segs[1], 0, 100);
	sprintf(segs[1], "hello, world");
     
	rvm_about_to_modify(trans, segs[1], 1000, 100);
	sprintf(segs[1]+1000, "hello, world");
   
	rvm_abort_trans(trans);

	abort();
}
Exemplo n.º 3
0
int main(int argc, char **argv)
{
     rvm_t rvm;
     char *seg;
     void *segs[1];
     trans_t trans;
     
     rvm = rvm_init("rvm_segments");
     
     rvm_destroy(rvm, "testseg");
     
     seg = (char *) rvm_map(rvm, "testseg", 10000);
	 segs[0] = seg;

     /* write some data and commit it */
     trans = rvm_begin_trans(rvm, 1, segs);
     rvm_about_to_modify(trans, seg, 0, 100);
     sprintf(seg, TEST_STRING1);
     
     rvm_about_to_modify(trans, seg, OFFSET2, 100);
     sprintf(seg+OFFSET2, TEST_STRING1);
     
     rvm_commit_trans(trans);

     /* start writing some different data, but abort */
     trans = rvm_begin_trans(rvm, 1, segs);
     rvm_about_to_modify(trans, seg, 0, 100);
     sprintf(seg, TEST_STRING2);
     
     rvm_about_to_modify(trans, seg, OFFSET2, 100);
     sprintf(seg+OFFSET2, TEST_STRING2);

	 rvm_abort_trans(trans);

     /* test that the data was restored */
     if(strcmp(seg+OFFSET2, TEST_STRING1)) {
	  printf("ERROR: second hello is incorrect (%s)\n",
		 seg+OFFSET2);
	  exit(2);
     }

     if(strcmp(seg, TEST_STRING1)) {
	  printf("ERROR: first hello is incorrect (%s)\n",
		 seg);
	  exit(2);
     }
     

     rvm_unmap(rvm, seg);
     printf("OK\n");
     exit(0);
}
Exemplo n.º 4
0
/* proc1 writes some data, commits it, then exits */
void proc1() {
	rvm_t rvm;
	char *seg;
	char *segs[1];
	trans_t trans;

	rvm = rvm_init("rvm_segments");

	rvm_destroy(rvm, "testseg");

	segs[0] = (char *) rvm_map(rvm, "testseg", 10000);
	seg = segs[0];

	/* write some data and commit it */
	trans = rvm_begin_trans(rvm, 1, (void**) segs);
	rvm_about_to_modify(trans, seg, 0, 100);
	sprintf(seg, TEST_STRING1);

	rvm_about_to_modify(trans, seg, OFFSET2, 100);
	sprintf(seg + OFFSET2, TEST_STRING2);

	rvm_about_to_modify(trans, seg, OFFSET3, 100);
	sprintf(seg + OFFSET3, TEST_STRING3);
	rvm_commit_trans(trans);

	/* start writing some different data, but abort */
	trans = rvm_begin_trans(rvm, 1, (void**) segs);
	rvm_about_to_modify(trans, seg, 0, 100);
	sprintf(seg, TEST_STRING4);

	rvm_about_to_modify(trans, seg, OFFSET2, 100);
	sprintf(seg + OFFSET2, TEST_STRING5);

	rvm_about_to_modify(trans, seg, OFFSET3, 100);
	sprintf(seg + OFFSET3, TEST_STRING6);
	rvm_abort_trans(trans);
	abort();
}