Lines Matching refs:block
26 * Find or create vm block based on requested @size.
32 struct ct_vm_block *block = NULL, *entry;
46 break; /* found a block that is big enough */
55 block = entry;
59 block = kzalloc(sizeof(*block), GFP_KERNEL);
60 if (!block)
63 block->addr = entry->addr;
64 block->size = size;
65 list_add(&block->list, &vm->used);
72 return block;
75 static void put_vm_block(struct ct_vm *vm, struct ct_vm_block *block)
80 block->size = CT_PAGE_ALIGN(block->size);
83 list_del(&block->list);
84 vm->size += block->size;
88 if (entry->addr >= (block->addr + block->size))
92 list_add_tail(&block->list, &vm->unused);
93 entry = block;
95 if ((block->addr + block->size) == entry->addr) {
96 entry->addr = block->addr;
97 entry->size += block->size;
98 kfree(block);
100 __list_add(&block->list, pos->prev, pos);
101 entry = block;
126 struct ct_vm_block *block;
132 block = get_vm_block(vm, size, atc);
133 if (block == NULL) {
135 "No virtual memory block that is big enough to allocate!\n");
140 pte_start = (block->addr >> CT_PAGE_SHIFT);
141 pages = block->size >> CT_PAGE_SHIFT;
148 block->size = size;
149 return block;
152 static void ct_vm_unmap(struct ct_vm *vm, struct ct_vm_block *block)
155 put_vm_block(vm, block);
172 struct ct_vm_block *block;
202 block = kzalloc(sizeof(*block), GFP_KERNEL);
203 if (NULL != block) {
204 block->addr = 0;
205 block->size = vm->size;
206 list_add(&block->list, &vm->unused);