Lines Matching refs:reg

75 static void region_list_remove(struct region_list *list, struct region *reg)
77 if (reg->prev)
78 reg->prev->next = reg->next;
80 if (reg->next)
81 reg->next->prev = reg->prev;
83 if (list->first == reg)
84 list->first = reg->next;
86 if (list->last == reg)
87 list->last = reg->prev;
89 reg->next = NULL;
90 reg->prev = NULL;
93 static void region_list_append(struct region_list *list, struct region *reg)
96 list->first = reg;
97 list->last = reg;
98 list->iter = reg;
100 reg->prev = NULL;
102 list->last->next = reg;
103 reg->prev = list->last;
104 list->last = reg;
106 reg->next = NULL;
110 static void dump_starting_from(struct region *reg)
112 for (; reg; reg = reg->next) {
113 printf("%p: Blocks %d-%d (%d)\n", reg,
114 reg->bg * info.blocks_per_group + reg->block,
115 reg->bg * info.blocks_per_group + reg->block + reg->len - 1,
116 reg->len);
133 struct region *reg;
134 reg = malloc(sizeof(struct region));
135 reg->block = block;
136 reg->len = len;
137 reg->bg = bg_num;
138 reg->next = NULL;
140 region_list_append(&alloc->list, reg);
238 struct region *reg = alloc->list.last->prev;
241 if (reg) {
242 reg->next = NULL;
332 struct region *reg;
338 reg = malloc(sizeof(struct region));
339 reg->block = block;
340 reg->len = len;
341 reg->next = NULL;
342 reg->prev = NULL;
343 reg->bg = i;
344 return reg;
368 struct region *reg;
380 reg = ext4_allocate_contiguous_blocks(len);
389 reg = malloc(sizeof(struct region));
390 reg->block = block;
391 reg->len = bg_len;
392 reg->next = NULL;
393 reg->prev = NULL;
394 reg->bg = i;
397 return reg;
407 struct region *reg;
410 reg = ext4_allocate_partial(len);
411 if (reg == NULL)
415 first_reg = reg;
418 prev_reg->next = reg;
419 reg->prev = prev_reg;
422 prev_reg = reg;
423 len -= reg->len;
431 struct region *reg = ext4_allocate_contiguous_blocks(len);
433 if (reg == NULL)
434 reg = ext4_allocate_multiple_contiguous_blocks(len);
436 return reg;
449 struct region *reg = do_allocate(len);
451 if (reg == NULL)
455 alloc->list.first = reg;
456 alloc->list.last = reg;
466 struct region *reg = alloc->list.first;
468 for (i = 0; reg != NULL; reg = reg->next)
477 struct region *reg = alloc->list.first;
479 for (i = 0; reg != NULL; reg = reg->next)
480 i += reg->len;
488 struct region *reg = alloc->list.iter;
491 for (; reg; reg = reg->next) {
492 if (block < reg->len)
493 return reg->block + block;
494 block -= reg->len;
501 struct region *reg = alloc->oob_list.iter;
504 for (; reg; reg = reg->next) {
505 if (block < reg->len)
506 return reg->block + block;
507 block -= reg->len;
546 struct region *reg = alloc->list.iter;
550 while (reg && len >= reg->len) {
551 len -= reg->len;
552 reg = reg->next;
555 if (reg == NULL && len > 0)
561 new->bg = reg->bg;
562 new->block = reg->block + len;
563 new->len = reg->len - len;
564 new->next = reg->next;
565 new->prev = reg;
567 reg->next = new;
568 reg->len = len;
574 return reg;
613 struct region *reg = list->iter;
615 while (reg != NULL && blocks > 0) {
616 if (reg->len > list->partial_iter + blocks) {
621 blocks -= (reg->len - list->partial_iter);
623 reg = reg->next;
645 struct region *reg = do_allocate(len);
647 if (reg == NULL) {
652 for (; reg; reg = reg->next)
653 region_list_append(&alloc->oob_list, reg);
730 struct region *reg;
732 reg = alloc->list.first;
733 while (reg) {
734 struct region *next = reg->next;
735 free(reg);
736 reg = next;
739 reg = alloc->oob_list.first;
740 while (reg) {
741 struct region *next = reg->next;
742 free(reg);
743 reg = next;