The heap is now located at 384 MB, and creates a reserved range that spans over the

following 1152 MB - that area only guarantees that the heap can grow this much before
the application need the memory for something else. And even then, the heap range
is reused from top-to-bottom, allowing for maximum heap usage. Of course, if the
memory after the heap range is not claimed yet, it can still be claimed by the heap,
too. Added new syscall to create the reserved range.
Fixed a bug in vm_delete_areas(): when it removed reserved areas, the area list
could get messed up.
Fixed a bug in resize_area(): resized areas could never be deleted (missing vm_put_area())!
resize_area() now supports reserved regions (but not perfectly yet, see ToDo items).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12692 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2005-05-16 22:15:13 +00:00
parent 4bdd131ac5
commit 4393552b4d
4 changed files with 79 additions and 19 deletions
+1
View File
@@ -210,6 +210,7 @@ extern status_t _kern_transfer_area(area_id area, void **_address, uint32 addre
extern status_t _kern_set_area_protection(area_id area, uint32 newProtection);
extern area_id _kern_clone_area(const char *name, void **_address, uint32 addressSpec,
uint32 protection, area_id sourceArea);
extern status_t _kern_init_heap_address_range(addr_t base, addr_t size);
area_id sys_vm_map_file(const char *name, void **address, int addr_type,
addr_t size, int lock, int mapping, const char *path, off_t offset);
+1
View File
@@ -86,6 +86,7 @@ status_t _user_transfer_area(area_id area, void **_address, uint32 addressSpec,
status_t _user_set_area_protection(area_id area, uint32 newProtection);
area_id _user_clone_area(const char *name, void **_address, uint32 addressSpec,
uint32 protection, area_id sourceArea);
status_t _user_init_heap_address_range(addr_t base, addr_t size);
// to protect code regions with interrupts turned on
void permit_page_faults(void);