1 #include <lunaix/mm/kalloc.h>
2 #include <lunaix/mm/region.h>
5 region_add(struct mm_region** regions,
10 struct mm_region* region = lxmalloc(sizeof(struct mm_region));
12 *region = (struct mm_region){ .attr = attr, .end = end, .start = start };
15 llist_init_head(®ion->head);
18 llist_append(&(*regions)->head, ®ion->head);
23 region_release_all(struct mm_region** regions)
25 struct mm_region *pos, *n;
27 llist_for_each(pos, n, &(*regions)->head, head)
36 region_copy(struct mm_region** src, struct mm_region** dest)
42 struct mm_region *pos, *n;
44 llist_init_head(*dest);
45 llist_for_each(pos, n, &(*src)->head, head)
47 region_add(dest, pos->start, pos->end, pos->attr);
52 region_get(struct mm_region** regions, unsigned long vaddr)
58 struct mm_region *pos, *n;
60 llist_for_each(pos, n, &(*regions)->head, head)
62 if (vaddr >= pos->start && vaddr < pos->end) {