Exemplo n.º 1
0
static void* new_block ( ThreadId tid, SizeT req_szB, SizeT req_alignB,
                  Bool is_zeroed )
{
   void* p;
   HP_Chunk* hc;
   SizeT actual_szB, slop_szB;
   Trace_Block* block;

   if ((SSizeT)req_szB < 0) return NULL;

   // Allocate and zero if necessary
   p = VG_(cli_malloc)( req_alignB, req_szB );
   if (!p) {
      return NULL;
   }
   if (is_zeroed) VG_(memset)(p, 0, req_szB);
   actual_szB = VG_(malloc_usable_size)(p);
   tl_assert(actual_szB >= req_szB);
   slop_szB = actual_szB - req_szB;

   // Make new HP_Chunk node, add to malloc_list
   hc           = VG_(malloc)("freya.malloc", sizeof(HP_Chunk));
   hc->data     = (Addr)p;
   hc->req_szB  = req_szB;
   hc->slop_szB = slop_szB;
   block        = alloc_trace(tid);
   hc->block    = block;
   hc->tid      = tid;

   while (block) {
      block->allocs ++;
      block->total += req_szB;
      block->current += req_szB;
      if (block->peak < block->current)
         block->peak = block->current;
      block = block->parent;
   }

   VG_(HT_add_node)(malloc_list, hc);
   return p;
}
Exemplo n.º 2
0
void MonteCarlo(collector *C, int NMC, REAL emean, REAL estdv, REAL sigma, REAL angle, REAL azimuth) {
    particle	    *P;
    trace	    *T;
    int		    NF;
    unsigned int seed;
    NF = 0;
#if DEBUG
    printf("entering MonteCarlo for %d samples and storing into %lx (%d)\n",
	   NMC, (long unsigned int) C, C->NTOTAL);
#endif
/* create the trace and particle */
    fast_srand(&seed);
    T = alloc_trace();
    P = (particle *) malloc(sizeof(particle));
/* the Monte Carlo loop */
//what is sigma??
    if (sigma > AS_REAL(0.0)) {
	while (NF++ < NMC) {
	    MakeParticle(P, normal(emean, estdv,&seed), angle+normal(AS_REAL(0.0), sigma,&seed), azimuth+normal(AS_REAL(0.0), sigma,&seed), &seed);
	    reset_trace(T);
	    while (P->energy > AS_REAL(0.0)) {
		proton_event(P, T, &seed); //stepping()
	    }
	    if (TRACE) dump_trace(stdout, T, P);
	    collect(C, P, T); //Hits collection
	}
    } else {
	while (NF++ < NMC) {
	    MakeParticle(P, normal(emean, estdv,&seed), angle, azimuth, &seed);
	    reset_trace(T);
	    while (P->energy > AS_REAL(0.0)) {
		proton_event(P, T, &seed);
	    }
	    if (TRACE) dump_trace(stdout, T, P);
	    collect(C, P, T);
	}
    }
}
Exemplo n.º 3
0
static void fr_mmap(Addr a, SizeT len, Bool rr, Bool ww, Bool xx, ULong di_handle)
{
   if (clo_mmap)
      mem_map( a, a + len, alloc_trace(VG_(get_running_tid)()) );
}