git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: User mode support.
[lunaix-os.git]
/
lunaix-os
/
kernel
/
mm
/
region.c
diff --git
a/lunaix-os/kernel/mm/region.c
b/lunaix-os/kernel/mm/region.c
index d9fddeb0688da964512df788207637f959e6e0dd..1f706dc362140c5203a36b9371b04571b8f492b1 100644
(file)
--- a/
lunaix-os/kernel/mm/region.c
+++ b/
lunaix-os/kernel/mm/region.c
@@
-2,7
+2,7
@@
#include <lunaix/mm/region.h>
void
#include <lunaix/mm/region.h>
void
-region_add(struct mm_region*
*
regions,
+region_add(struct mm_region* regions,
unsigned long start,
unsigned long end,
unsigned int attr)
unsigned long start,
unsigned long end,
unsigned int attr)
@@
-11,55
+11,47
@@
region_add(struct mm_region** regions,
*region = (struct mm_region){ .attr = attr, .end = end, .start = start };
*region = (struct mm_region){ .attr = attr, .end = end, .start = start };
- if (!*regions) {
- llist_init_head(®ion->head);
- *regions = region;
- } else {
- llist_append(&(*regions)->head, ®ion->head);
- }
+ llist_append(®ions->head, ®ion->head);
}
void
}
void
-region_release_all(struct mm_region*
*
regions)
+region_release_all(struct mm_region* regions)
{
struct mm_region *pos, *n;
{
struct mm_region *pos, *n;
- llist_for_each(pos, n, &
(*regions)
->head, head)
+ llist_for_each(pos, n, &
regions
->head, head)
{
lxfree(pos);
}
{
lxfree(pos);
}
-
- *regions = NULL;
}
void
}
void
-region_copy(struct mm_region*
* src, struct mm_region*
* dest)
+region_copy(struct mm_region*
src, struct mm_region
* dest)
{
{
- if (!
*
src) {
+ if (!src) {
return;
}
struct mm_region *pos, *n;
return;
}
struct mm_region *pos, *n;
- llist_init_head(*dest);
- llist_for_each(pos, n, &(*src)->head, head)
+ llist_for_each(pos, n, &src->head, head)
{
region_add(dest, pos->start, pos->end, pos->attr);
}
}
struct mm_region*
{
region_add(dest, pos->start, pos->end, pos->attr);
}
}
struct mm_region*
-region_get(struct mm_region*
*
regions, unsigned long vaddr)
+region_get(struct mm_region* regions, unsigned long vaddr)
{
{
- if (!
*
regions) {
+ if (!regions) {
return NULL;
}
struct mm_region *pos, *n;
return NULL;
}
struct mm_region *pos, *n;
- llist_for_each(pos, n, &
(*regions)
->head, head)
+ llist_for_each(pos, n, &
regions
->head, head)
{
{
- if (
vaddr >= pos->start
&& vaddr < pos->end) {
+ if (
pos->start <= vaddr
&& vaddr < pos->end) {
return pos;
}
}
return pos;
}
}