Lines Matching full:up

202 is_bitmap(struct unrhdr *uh, struct unr *up)  in is_bitmap()  argument
204 return (up->ptr != uh && up->ptr != NULL); in is_bitmap()
253 struct unr *up; in next_iter_unrl() local
263 up = TAILQ_FIRST(&uh->head); in next_iter_unrl()
264 if (up == NULL) { in next_iter_unrl()
268 iter->upos = up; in next_iter_unrl()
269 if (up->ptr == NULL) in next_iter_unrl()
278 up = iter->upos; in next_iter_unrl()
281 if (up == NULL) { in next_iter_unrl()
286 up = iter->upos = TAILQ_FIRST(&uh->head); in next_iter_unrl()
291 if (y + 1 < iter->upos_first_item + up->len) { in next_iter_unrl()
292 if (up->ptr == uh) { in next_iter_unrl()
295 } else if (is_bitmap(uh, up)) { in next_iter_unrl()
296 ub = up->ptr; in next_iter_unrl()
299 up->len, &c); in next_iter_unrl()
306 iter->upos_first_item += up->len; in next_iter_unrl()
308 up = iter->upos = TAILQ_NEXT((struct unr *)iter->upos, list); in next_iter_unrl()
357 struct unr *up; in check_unrhdr() local
364 TAILQ_FOREACH(up, &uh->head, list) { in check_unrhdr()
366 if (is_bitmap(uh, up)) { in check_unrhdr()
367 ub = up->ptr; in check_unrhdr()
368 KASSERT (up->len <= NBITS, in check_unrhdr()
370 up->len, NBITS, line)); in check_unrhdr()
373 bit_count(ub->map, 0, up->len, &w); in check_unrhdr()
375 } else if (up->ptr != NULL) in check_unrhdr()
376 y += up->len; in check_unrhdr()
422 struct unr *up; in delete_unr() local
425 up = ptr; in delete_unr()
426 TAILQ_INSERT_TAIL(&uh->ppfree, up, list); in delete_unr()
432 struct unr *up; in clean_unrhdrl() local
436 while ((up = TAILQ_FIRST(&uh->ppfree)) != NULL) { in clean_unrhdrl()
437 TAILQ_REMOVE(&uh->ppfree, up, list); in clean_unrhdrl()
440 Free(up); in clean_unrhdrl()
512 struct unr *up, *uq; in clear_unrhdr() local
516 TAILQ_FOREACH_SAFE(up, &uh->head, list, uq) { in clear_unrhdr()
517 if (up->ptr != uh) { in clear_unrhdr()
518 Free(up->ptr); in clear_unrhdr()
520 Free(up); in clear_unrhdr()
541 struct unr *up, *uf, *us; in optimize_unr() local
558 up = uf; in optimize_unr()
560 up = TAILQ_NEXT(up, list); in optimize_unr()
561 if (up == NULL) in optimize_unr()
563 if ((up->len + l) > NBITS) in optimize_unr()
566 if (is_bitmap(uh, up)) in optimize_unr()
568 l += up->len; in optimize_unr()
652 collapse_unr(struct unrhdr *uh, struct unr *up) in collapse_unr() argument
658 if (is_bitmap(uh, up)) { in collapse_unr()
659 ub = up->ptr; in collapse_unr()
660 if (ub_full(ub, up->len)) { in collapse_unr()
661 delete_unr(uh, up->ptr); in collapse_unr()
662 up->ptr = uh; in collapse_unr()
663 } else if (ub_empty(ub, up->len)) { in collapse_unr()
664 delete_unr(uh, up->ptr); in collapse_unr()
665 up->ptr = NULL; in collapse_unr()
670 if (up->len == 0) { in collapse_unr()
671 upp = TAILQ_PREV(up, unrhd, list); in collapse_unr()
673 upp = TAILQ_NEXT(up, list); in collapse_unr()
674 TAILQ_REMOVE(&uh->head, up, list); in collapse_unr()
675 delete_unr(uh, up); in collapse_unr()
676 up = upp; in collapse_unr()
680 if (up != NULL) { in collapse_unr()
681 upp = TAILQ_PREV(up, unrhd, list); in collapse_unr()
682 if (upp != NULL && up->ptr == upp->ptr) { in collapse_unr()
683 up->len += upp->len; in collapse_unr()
687 upp = TAILQ_NEXT(up, list); in collapse_unr()
688 if (upp != NULL && up->ptr == upp->ptr) { in collapse_unr()
689 up->len += upp->len; in collapse_unr()
701 if (up == upp) in collapse_unr()
702 up = NULL; in collapse_unr()
711 if (up == upp) in collapse_unr()
712 up = NULL; in collapse_unr()
726 struct unr *up; in alloc_unrl() local
736 up = TAILQ_FIRST(&uh->head); in alloc_unrl()
741 if (up == NULL && uh->last > 0) { in alloc_unrl()
752 if (up == NULL) in alloc_unrl()
755 KASSERT(up->ptr != uh, ("UNR first element is allocated")); in alloc_unrl()
757 if (up->ptr == NULL) { /* free run */ in alloc_unrl()
759 up->len--; in alloc_unrl()
761 ub = up->ptr; in alloc_unrl()
762 bit_ffc(ub->map, up->len, &y); in alloc_unrl()
768 collapse_unr(uh, up); in alloc_unrl()
789 struct unr *up, *upn; in alloc_unr_specificl() local
799 up = TAILQ_FIRST(&uh->head); in alloc_unr_specificl()
801 if (up == NULL && item - uh->low == uh->first) { in alloc_unr_specificl()
811 if (up == NULL) { in alloc_unr_specificl()
812 up = new_unr(uh, p1, p2); in alloc_unr_specificl()
813 up->ptr = NULL; in alloc_unr_specificl()
814 up->len = i; in alloc_unr_specificl()
815 TAILQ_INSERT_TAIL(&uh->head, up, list); in alloc_unr_specificl()
816 up = new_unr(uh, p1, p2); in alloc_unr_specificl()
817 up->ptr = uh; in alloc_unr_specificl()
818 up->len = 1; in alloc_unr_specificl()
819 TAILQ_INSERT_TAIL(&uh->head, up, list); in alloc_unr_specificl()
826 TAILQ_FOREACH(up, &uh->head, list) { in alloc_unr_specificl()
827 if (up->len > i) in alloc_unr_specificl()
829 i -= up->len; in alloc_unr_specificl()
833 if (up == NULL) { in alloc_unr_specificl()
835 up = new_unr(uh, p1, p2); in alloc_unr_specificl()
836 up->ptr = NULL; in alloc_unr_specificl()
837 up->len = i; in alloc_unr_specificl()
838 TAILQ_INSERT_TAIL(&uh->head, up, list); in alloc_unr_specificl()
840 up = new_unr(uh, p1, p2); in alloc_unr_specificl()
841 up->ptr = uh; in alloc_unr_specificl()
842 up->len = 1; in alloc_unr_specificl()
843 TAILQ_INSERT_TAIL(&uh->head, up, list); in alloc_unr_specificl()
847 if (is_bitmap(uh, up)) { in alloc_unr_specificl()
848 ub = up->ptr; in alloc_unr_specificl()
854 } else if (up->ptr == uh) in alloc_unr_specificl()
857 KASSERT(up->ptr == NULL, in alloc_unr_specificl()
858 ("alloc_unr_specificl: up->ptr != NULL (up=%p)", up)); in alloc_unr_specificl()
861 tl = up->len - (1 + i); in alloc_unr_specificl()
866 TAILQ_INSERT_AFTER(&uh->head, up, upn, list); in alloc_unr_specificl()
874 TAILQ_INSERT_BEFORE(up, upn, list); in alloc_unr_specificl()
876 up->len = 1; in alloc_unr_specificl()
877 up->ptr = uh; in alloc_unr_specificl()
884 collapse_unr(uh, up); in alloc_unr_specificl()
922 struct unr *up, *upp, *upn; in free_unrl() local
947 up = new_unr(uh, p1, p2); in free_unrl()
948 up->ptr = uh; in free_unrl()
949 up->len = uh->first - item; in free_unrl()
950 TAILQ_INSERT_HEAD(&uh->head, up, list); in free_unrl()
951 uh->first -= up->len; in free_unrl()
957 TAILQ_FOREACH(up, &uh->head, list) { in free_unrl()
958 if (up->len > item) in free_unrl()
960 item -= up->len; in free_unrl()
964 if (is_bitmap(uh, up)) { in free_unrl()
965 ub = up->ptr; in free_unrl()
971 collapse_unr(uh, up); in free_unrl()
975 KASSERT(up->ptr == uh, ("UNR Freeing free item %d (run))\n", item)); in free_unrl()
978 if (up->len == 1) { in free_unrl()
979 up->ptr = NULL; in free_unrl()
981 collapse_unr(uh, up); in free_unrl()
986 upp = TAILQ_PREV(up, unrhd, list); in free_unrl()
989 up->len--; in free_unrl()
991 collapse_unr(uh, up); in free_unrl()
996 upn = TAILQ_NEXT(up, list); in free_unrl()
997 if (item == up->len - 1 && upn != NULL && upn->ptr == NULL) { in free_unrl()
999 up->len--; in free_unrl()
1001 collapse_unr(uh, up); in free_unrl()
1006 pl = up->len - (1 + item); in free_unrl()
1011 TAILQ_INSERT_AFTER(&uh->head, up, upp, list); in free_unrl()
1019 TAILQ_INSERT_BEFORE(up, upp, list); in free_unrl()
1021 up->len = 1; in free_unrl()
1022 up->ptr = NULL; in free_unrl()
1024 collapse_unr(uh, up); in free_unrl()
1061 print_unr(struct unrhdr *uh, struct unr *up) in print_unr() argument
1066 db_printf(" %p len = %5u ", up, up->len); in print_unr()
1067 if (up->ptr == NULL) in print_unr()
1069 else if (up->ptr == uh) in print_unr()
1072 ub = up->ptr; in print_unr()
1074 for (x = 0; x < up->len; x++) { in print_unr()
1087 struct unr *up; in print_unrhdr() local
1094 TAILQ_FOREACH(up, &uh->head, list) { in print_unrhdr()
1096 print_unr(uh, up); in print_unrhdr()
1097 if (up->ptr == NULL || up->ptr == uh) in print_unrhdr()
1098 x += up->len; in print_unrhdr()