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; }
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; }