Exemplo n.º 1
0
int
main(void)
{
  int i;
  struct vm_area ** vma;

  vma_gpool_init();

  superblock_1();
  superblock_2();
  superblock_3();
  superblock_4();
  superblock_5();

  block_1();
  block_2();
  block_3();
  block_4();
  block_5();
  block_6();
  block_7();

  vma = malloc(N_ALLOC*sizeof(struct vm_area*));
  assert(vma);

  #pragma omp parallel for num_threads(N_THREAD)
  for (i=0; i<N_ALLOC/2; ++i) {
    vma[i] = vma_alloc();
    assert(vma[i]);
  }

  #pragma omp parallel for num_threads(N_THREAD)
  for (i=0; i<N_ALLOC/4; ++i) {
    vma_free(vma[i]);
  }

  #pragma omp parallel for num_threads(N_THREAD)
  for (i=N_ALLOC/2; i<N_ALLOC; ++i) {
    vma[i] = vma_alloc();
    assert(vma[i]);
  }

  #pragma omp parallel for num_threads(N_THREAD)
  for (i=N_ALLOC/4; i<N_ALLOC; ++i) {
    vma_free(vma[i]);
  }

  free(vma);

  vma_gpool_free();

#ifdef SHOW
  #pragma omp parallel num_threads(N_THREAD)
  vma_gpool_gather();
  vma_gpool_show();
#endif

  return EXIT_SUCCESS;
}
Exemplo n.º 2
0
static Tree_Node_T match_map_65536(Map_65536_T map_65536, Char_T **pos_p, bool *pat_end_p)
{
#if PROFILING
  fun_calls[MATCH_MAP_65536].num++;
#endif
   
  uint16_t t_block = block_2(*pos_p);
  Tree_Node_T child = map_65536->children + t_block;

  *pat_end_p = test_bit(map_65536->pat_end_flag, t_block);
  /* 匹配的三种情况: 1.只是终止节点,没有后续; 2.既是终止节点,又有后续; 3.不是终止节点,但有后续 */
  if (*pat_end_p || child->link)
    (*pos_p) += 2;

  return child->link == NULL ? NULL : child;
}