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
A Total Overhaul on the Lunaix's Virtual Memory Model (#26)
[lunaix-os.git]
/
lunaix-os
/
kernel
/
mm
/
dmm.c
diff --git
a/lunaix-os/kernel/mm/dmm.c
b/lunaix-os/kernel/mm/dmm.c
index 3da8501f34aecdb43aa89a1fcd3270d15e9e6b6a..f665e9d023863dbe0c709873edfe52c27a04683c 100644
(file)
--- a/
lunaix-os/kernel/mm/dmm.c
+++ b/
lunaix-os/kernel/mm/dmm.c
@@
-21,20
+21,22
@@
create_heap(struct proc_mm* pvms, ptr_t addr)
.flags = MAP_ANON | MAP_PRIVATE,
.type = REGION_TYPE_HEAP,
.proct = PROT_READ | PROT_WRITE,
.flags = MAP_ANON | MAP_PRIVATE,
.type = REGION_TYPE_HEAP,
.proct = PROT_READ | PROT_WRITE,
- .mlen = P
G
_SIZE };
+ .mlen = P
AGE
_SIZE };
int status = 0;
struct mm_region* heap;
int status = 0;
struct mm_region* heap;
- if ((status = m
em_map
(NULL, &heap, addr, NULL, &map_param))) {
+ if ((status = m
map_user
(NULL, &heap, addr, NULL, &map_param))) {
return status;
}
heap->region_copied = __heap_copied;
mm_index((void**)&pvms->heap, heap);
return status;
}
heap->region_copied = __heap_copied;
mm_index((void**)&pvms->heap, heap);
+
+ return status;
}
__DEFINE_LXSYSCALL1(void*, sbrk, ssize_t, incr)
{
}
__DEFINE_LXSYSCALL1(void*, sbrk, ssize_t, incr)
{
- struct proc_mm* pvms =
&__current->mm
;
+ struct proc_mm* pvms =
vmspace(__current)
;
struct mm_region* heap = pvms->heap;
assert(heap);
struct mm_region* heap = pvms->heap;
assert(heap);
@@
-47,11
+49,11
@@
__DEFINE_LXSYSCALL1(void*, sbrk, ssize_t, incr)
__DEFINE_LXSYSCALL1(int, brk, void*, addr)
{
__DEFINE_LXSYSCALL1(int, brk, void*, addr)
{
- struct proc_mm* pvms =
&__current->mm
;
+ struct proc_mm* pvms =
vmspace(__current)
;
struct mm_region* heap = pvms->heap;
if (!heap) {
struct mm_region* heap = pvms->heap;
if (!heap) {
- return DO_STATUS(create_heap(pvms, addr));
+ return DO_STATUS(create_heap(pvms,
(ptr_t)
addr));
}
assert(heap);
}
assert(heap);