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
Second Extended Filesystem (ext2) and other improvements (#33)
[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..50804dbf47ee46523e89e3003d2f1e6a532248fe 100644
(file)
--- a/
lunaix-os/kernel/mm/dmm.c
+++ b/
lunaix-os/kernel/mm/dmm.c
@@
-21,37
+21,39
@@
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);
int err = mem_adjust_inplace(&pvms->regions, heap, heap->end + incr);
if (err) {
struct mm_region* heap = pvms->heap;
assert(heap);
int err = mem_adjust_inplace(&pvms->regions, heap, heap->end + incr);
if (err) {
- return (void*)
DO_STATUS(err
);
+ return (void*)
__ptr(DO_STATUS(err)
);
}
return (void*)heap->end;
}
__DEFINE_LXSYSCALL1(int, brk, void*, addr)
{
}
return (void*)heap->end;
}
__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);