Lines Matching defs:zhdr
138 struct zbud_header *zhdr = page_address(page);
139 zhdr->first_chunks = 0;
140 zhdr->last_chunks = 0;
141 INIT_LIST_HEAD(&zhdr->buddy);
142 return zhdr;
146 static void free_zbud_page(struct zbud_header *zhdr)
148 __free_page(virt_to_page(zhdr));
155 static unsigned long encode_handle(struct zbud_header *zhdr, enum buddy bud)
165 handle = (unsigned long)zhdr;
170 handle += PAGE_SIZE - (zhdr->last_chunks << CHUNK_SHIFT);
181 static int num_free_chunks(struct zbud_header *zhdr)
187 return NCHUNKS - zhdr->first_chunks - zhdr->last_chunks;
250 struct zbud_header *zhdr = NULL;
264 zhdr = list_first_entry(&pool->unbuddied[i],
266 list_del(&zhdr->buddy);
267 if (zhdr->first_chunks == 0)
282 zhdr = init_zbud_page(page);
287 zhdr->first_chunks = chunks;
289 zhdr->last_chunks = chunks;
291 if (zhdr->first_chunks == 0 || zhdr->last_chunks == 0) {
293 freechunks = num_free_chunks(zhdr);
294 list_add(&zhdr->buddy, &pool->unbuddied[freechunks]);
297 list_add(&zhdr->buddy, &pool->buddied);
300 *handle = encode_handle(zhdr, bud);
313 struct zbud_header *zhdr;
317 zhdr = handle_to_zbud_header(handle);
321 zhdr->last_chunks = 0;
323 zhdr->first_chunks = 0;
326 list_del(&zhdr->buddy);
328 if (zhdr->first_chunks == 0 && zhdr->last_chunks == 0) {
330 free_zbud_page(zhdr);
334 freechunks = num_free_chunks(zhdr);
335 list_add(&zhdr->buddy, &pool->unbuddied[freechunks]);