Lines Matching refs:mp

42 	mem_pool_t mp;  in MPCreate()  local
56 if ((mp = calloc(1, sizeof(mem_pool))) == NULL) { in MPCreate()
60 mp->mp_type = is_hugepage; in MPCreate()
61 mp->mp_chunk_size = chunk_size; in MPCreate()
62 mp->mp_free_chunks = ((total_size + (chunk_size -1))/chunk_size); in MPCreate()
63 mp->mp_total_chunks = mp->mp_free_chunks; in MPCreate()
64 total_size = chunk_size * ((size_t)mp->mp_free_chunks); in MPCreate()
71 mp->mp_startptr = get_huge_pages(total_size, NULL); in MPCreate()
72 if (!mp->mp_startptr) { in MPCreate()
75 free(mp); in MPCreate()
80 int res = posix_memalign((void **)&mp->mp_startptr, getpagesize(), total_size); in MPCreate()
84 free(mp); in MPCreate()
93 if (mlock(mp->mp_startptr, total_size) < 0) in MPCreate()
97 mp->mp_freeptr = (mem_chunk_t)mp->mp_startptr; in MPCreate()
98 mp->mp_freeptr->mc_free_chunks = mp->mp_free_chunks; in MPCreate()
99 mp->mp_freeptr->mc_next = NULL; in MPCreate()
103 return mp; in MPCreate()
107 MPAllocateChunk(mem_pool_t mp) in MPAllocateChunk() argument
111 return malloc(mp->mp_chunk_size); in MPAllocateChunk()
113 mem_chunk_t p = mp->mp_freeptr; in MPAllocateChunk()
115 if (mp->mp_free_chunks == 0) { in MPAllocateChunk()
116 TRACE_INFO("mp_free_chunks: %u\n", mp->mp_free_chunks); in MPAllocateChunk()
122 mp->mp_free_chunks--; in MPAllocateChunk()
125 mp->mp_freeptr = (mem_chunk_t)((u_char *)p + mp->mp_chunk_size); in MPAllocateChunk()
126 mp->mp_freeptr->mc_free_chunks = p->mc_free_chunks; in MPAllocateChunk()
127 mp->mp_freeptr->mc_next = p->mc_next; in MPAllocateChunk()
130 mp->mp_freeptr = p->mc_next; in MPAllocateChunk()
138 MPFreeChunk(mem_pool_t mp, void *p) in MPFreeChunk() argument
147 assert(((u_char *)p - mp->mp_startptr) % mp->mp_chunk_size == 0); in MPFreeChunk()
152 mcp->mc_next = mp->mp_freeptr; in MPFreeChunk()
153 mp->mp_freeptr = mcp; in MPFreeChunk()
154 mp->mp_free_chunks++; in MPFreeChunk()
159 MPDestroy(mem_pool_t mp) in MPDestroy() argument
162 if(mp->mp_type == MEM_HUGEPAGE) { in MPDestroy()
163 free_huge_pages(mp->mp_startptr); in MPDestroy()
166 free(mp->mp_startptr); in MPDestroy()
170 free(mp); in MPDestroy()
174 MPGetFreeChunks(mem_pool_t mp) in MPGetFreeChunks() argument
176 return mp->mp_free_chunks; in MPGetFreeChunks()
180 MPIsDanger(mem_pool_t mp) in MPIsDanger() argument
184 uint32_t danger_num = mp->mp_total_chunks * DANGER_THREASHOLD; in MPIsDanger()
185 uint32_t safe_num = mp->mp_total_chunks * SAFE_THREASHOLD; in MPIsDanger()
186 if (danger_num < mp->mp_total_chunks - mp->mp_free_chunks) { in MPIsDanger()
187 return mp->mp_total_chunks - mp->mp_free_chunks - safe_num; in MPIsDanger()
193 MPIsOverSafeline(mem_pool_t mp) in MPIsOverSafeline() argument
196 uint32_t safe_num = mp->mp_total_chunks * SAFELINE; in MPIsOverSafeline()
197 if (safe_num < mp->mp_total_chunks - mp->mp_free_chunks) { in MPIsOverSafeline()