History log of /haiku-fatelf/src/system/libroot/posix/malloc/arch-specific.cpp
Revision Date Author Comments
# 173342c0 17-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Change the heap reservation for 64-bit platforms.

Hoard reserves a chunk of the address space to grow the heap into.
As there is a much larger address space available on 64-bit systems,
we may as well reserve a larger chunk of address space (64GB for now,
though could probably reserve a lot more than that and still leave
plenty of room for other areas).


# e453c0f4 28-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

64-bit printf warning fixes in libroot.


# c3b03e58 28-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

64-bit fixes to Hoard.


# 3d0d4b62 15-Feb-2011 Axel Dörfler <axeld@pinc-software.de>

* Implemented a way to specify additional debug options via MALLOC_DEBUG when
using libroot_debug.so, instead of having to hardcode them in the application
via calling private heap functions.
* The following options are implemented: 'p' turns on paranoid validation,
'w' triggers periodic wall checking every 500ms ('W' does the same, but every
100ms), 'g' to use guard pages (beware, this will dramatically increase
memory usage), and 'r' which forbids reusing of memory, freed memory is never
actually freed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40514 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 90daf7c6 04-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* init_after_fork(): In case the reservation for the heap area failed
sHeapBase will probably not point to memory in the heap area. Use
sFreeHeapBase instead.
* When reserving the heap area range fails, set sHeapBase to NULL, so we'll
later know about the fact.
* hoardSbrk(): When resizing the area fails, we'll now try to allocate a new
one, if the former failure was not due to an "out of memory" situation.
E.g. if the heap range reservation failed or, if we just have exhausted the
range, another area could be in the way. Also when mmap()ing over
malloc()ed, the heap area count be split in two with the first part
retaining the old area ID, thus preventing resizing as well. Fixed #5168.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34897 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d78ffde5 29-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Some minor cleanup and improved comments.
* Fixed check in hoardSbrk(): resize_area() was invoked, even if the area was
already large enough.
* Increased the initial heap size to 64 pages. Apparently the hoard
implementation is rather generous and the first malloc() (caused by
__init_heap()) already required enlarging the area.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34336 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3609af39 19-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Renamed _kern_reserve_heap_address_range() to _kern_reserve_address_range(),
and added a _kern_unreserve_address_range() as well.
* The runtime loader now reserves the space needed for all its areas first
to make sure there is enough space left for all areas of a single image.
* This also fixes the final part of bug #4008.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31115 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d5a68919 25-Jan-2009 Jérôme Duval <korli@users.berlios.de>

* Patch from Olivier Coursiere: restore sFreeHeapSize in case of resize_area failure


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7867cf37 08-Oct-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Increase the heap size in 64 KB steps. Was 4 KB before, which was a bit
slow for short-running, heap-intensive programs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27925 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3ad603ac 22-May-2006 François Revol <revol@free.fr>

implement sbrk() by calling hoard's version, through sbrk_hook (fct pointer was named this way in R5).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17540 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 66b7a0f4 17-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Renamed the _kern_init_heap_address_range() syscall to _kern_reserve_heap_address_range()
and made it more powerful.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16825 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 204131dc 30-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Added a real yield function to the kernel (using the next_priority approach).
The test application lets run a thread at the highest priority that calls
yield all the time - the system stays responsible when it runs, so it seems
to work fine :)
Changed the malloc implementation to use _kern_thread_yield() instead of
snoozing.
We should think about making this call public, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16166 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7e46f831 30-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

snooze(5) works more or less fine for standard threads, but is a very bad
idea for real-time threads. They could completely hog the CPU in this
case. Thanks to Marcus for investigating!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16161 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 78f2557c 22-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Found and fixed number one app_server crashing bug: our Hoard backend didn't
support unsbrk(), and that is actually called quite often in Hoard, resulting
in out of memory quite fast.
We don't shrink the heap (yet), but at least we can reuse the memory that
was freed by Hoard (it doesn't just remove bytes from the end, it will also
free up smaller parts in the middle).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4393552b 16-May-2005 Axel Dörfler <axeld@pinc-software.de>

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


# 5af32e75 13-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed src/kernel to src/system.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12359 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 173342c0ab918a72a12540ee1de8213720a2d3f5 17-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Change the heap reservation for 64-bit platforms.

Hoard reserves a chunk of the address space to grow the heap into.
As there is a much larger address space available on 64-bit systems,
we may as well reserve a larger chunk of address space (64GB for now,
though could probably reserve a lot more than that and still leave
plenty of room for other areas).


# e453c0f4a7d0014d73e9b499aa1fe813dc64c084 28-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

64-bit printf warning fixes in libroot.


# c3b03e587739a9f9ea1017ac00b6d2ed383bac8d 28-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

64-bit fixes to Hoard.


# 3d0d4b6200bc16c89e241afb715ce35f15f50020 15-Feb-2011 Axel Dörfler <axeld@pinc-software.de>

* Implemented a way to specify additional debug options via MALLOC_DEBUG when
using libroot_debug.so, instead of having to hardcode them in the application
via calling private heap functions.
* The following options are implemented: 'p' turns on paranoid validation,
'w' triggers periodic wall checking every 500ms ('W' does the same, but every
100ms), 'g' to use guard pages (beware, this will dramatically increase
memory usage), and 'r' which forbids reusing of memory, freed memory is never
actually freed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40514 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 90daf7c61e0078461e73b65a8e865d2d99634af1 04-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* init_after_fork(): In case the reservation for the heap area failed
sHeapBase will probably not point to memory in the heap area. Use
sFreeHeapBase instead.
* When reserving the heap area range fails, set sHeapBase to NULL, so we'll
later know about the fact.
* hoardSbrk(): When resizing the area fails, we'll now try to allocate a new
one, if the former failure was not due to an "out of memory" situation.
E.g. if the heap range reservation failed or, if we just have exhausted the
range, another area could be in the way. Also when mmap()ing over
malloc()ed, the heap area count be split in two with the first part
retaining the old area ID, thus preventing resizing as well. Fixed #5168.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34897 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d78ffde5d1a65b612f2d3be414dd0e3f4b2b77cc 29-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Some minor cleanup and improved comments.
* Fixed check in hoardSbrk(): resize_area() was invoked, even if the area was
already large enough.
* Increased the initial heap size to 64 pages. Apparently the hoard
implementation is rather generous and the first malloc() (caused by
__init_heap()) already required enlarging the area.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34336 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3609af391d646e2629e70e7b214a79ed57578ffc 19-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Renamed _kern_reserve_heap_address_range() to _kern_reserve_address_range(),
and added a _kern_unreserve_address_range() as well.
* The runtime loader now reserves the space needed for all its areas first
to make sure there is enough space left for all areas of a single image.
* This also fixes the final part of bug #4008.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31115 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d5a68919751e1f4b20112810b3330a1bb296d949 25-Jan-2009 Jérôme Duval <korli@users.berlios.de>

* Patch from Olivier Coursiere: restore sFreeHeapSize in case of resize_area failure


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7867cf37df38d633afc68cfcdab4f0c7de9f7edf 08-Oct-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Increase the heap size in 64 KB steps. Was 4 KB before, which was a bit
slow for short-running, heap-intensive programs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27925 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3ad603ace4c8b95cd2d38367ae092d1148e5a8ea 22-May-2006 François Revol <revol@free.fr>

implement sbrk() by calling hoard's version, through sbrk_hook (fct pointer was named this way in R5).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17540 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 66b7a0f4770a9b02e1f80d72fc93ce16b82b01d4 17-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Renamed the _kern_init_heap_address_range() syscall to _kern_reserve_heap_address_range()
and made it more powerful.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16825 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 204131dc9755d05c7bb677c1095613d8340ebfb3 30-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Added a real yield function to the kernel (using the next_priority approach).
The test application lets run a thread at the highest priority that calls
yield all the time - the system stays responsible when it runs, so it seems
to work fine :)
Changed the malloc implementation to use _kern_thread_yield() instead of
snoozing.
We should think about making this call public, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16166 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7e46f8319eb42452fc0fdf636dd23861674ed0c5 30-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

snooze(5) works more or less fine for standard threads, but is a very bad
idea for real-time threads. They could completely hog the CPU in this
case. Thanks to Marcus for investigating!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16161 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 78f2557c8f55eacf6ad15e5ae91f865fce81be29 22-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Found and fixed number one app_server crashing bug: our Hoard backend didn't
support unsbrk(), and that is actually called quite often in Hoard, resulting
in out of memory quite fast.
We don't shrink the heap (yet), but at least we can reuse the memory that
was freed by Hoard (it doesn't just remove bytes from the end, it will also
free up smaller parts in the middle).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4393552b4d1148752ec9da0f15e2434fede8bcab 16-May-2005 Axel Dörfler <axeld@pinc-software.de>

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


# 5af32e752606778be5dd7379f319fe43cb3f6b8c 13-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed src/kernel to src/system.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12359 a95241bf-73f2-0310-859d-f6bbb57e9c96