1 #include <lunaix/mm/region.h>
2 #include <lunaix/mm/valloc.h>
5 region_add(struct mm_region* regions,
10 struct mm_region* region = valloc(sizeof(struct mm_region));
12 *region = (struct mm_region){ .attr = attr, .end = end, .start = start };
14 llist_append(®ions->head, ®ion->head);
18 region_release_all(struct mm_region* regions)
20 struct mm_region *pos, *n;
22 llist_for_each(pos, n, ®ions->head, head)
29 region_copy(struct mm_region* src, struct mm_region* dest)
35 struct mm_region *pos, *n;
37 llist_for_each(pos, n, &src->head, head)
39 region_add(dest, pos->start, pos->end, pos->attr);
44 region_get(struct mm_region* regions, unsigned long vaddr)
50 struct mm_region *pos, *n;
52 llist_for_each(pos, n, ®ions->head, head)
54 if (pos->start <= vaddr && vaddr < pos->end) {