haiku/headers/private
Michael Lotz 5c4d1c5e21 Complete rework of the heap implementation. Freelists are now part of the pages
and pages are now kept in lists as well. This allows to return free pages once
a bin does not need them anymore. Partially filled pages are kept in a sorted
linked list so that allocation will always happen on the fullest page - this
favours having full pages and makes it more likely lightly used pages will get
completely empty so they can be returned. Generally this now goes more in the
direction of a slab allocator.
The allocation logic has been extracted, so a heap is now simply attachable to
a region of memory. This allows for multiple heaps and for dynamic growing. In
case the allocator runs out of free pages, an asynchronous growing thread is
notified to create a new area and attach a new heap to it.
By default the kernel heap is now set to 16MB and grows by 8MB each time all
heaps run full.
This should solve quite a few issues, like certain bins just claiming all pages
so that even if there is free space nothing can be allocated. Also it obviously
does aways with filling the heap page by page until it overgrows.
I think this is now a well performing and scalable allocator we can live with
for quite some time. It is well tested under emulation and real hardware and
performs as expected. If problems come up there is an extensive sanity checker
that can be enabled by PARANOID_VALIDATION that covers most aspects of the
allocator. For normal operation this is not necessary though and is therefore
disabled by default.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23939 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-10 21:00:13 +00:00
..
app bonefish+axeld: 2007-11-14 01:28:47 +00:00
audio Move this to media/, seems audio/ is only for old stuff. 2007-08-29 12:31:55 +00:00
bluetooth Add private bluetooth headers being used in the kit and the future server 2008-02-01 20:59:14 +00:00
debug Added support for looking up symbols of other team to libdebug. The 2005-07-16 21:12:32 +00:00
disk_scanner missing comment tokens 2007-06-20 21:30:00 +00:00
drivers Mask io-space bit in promise_tx2 driver, the driver was broken after recent ide-adapter changes. 2008-01-01 20:31:14 +00:00
firewire work from JiSheng Zhang : firewire and ohci modules from FreeBSD current, update for fw_raw and fw_control. Thanks! 2007-08-30 21:59:49 +00:00
fs_shell * cache_detach_sub_transaction() didn't really work: it did not put all needed 2008-01-18 17:07:18 +00:00
graphics * Overlay on the G33 does not work anymore in the secondary ring buffer; 2008-01-31 18:28:48 +00:00
input the keymap is now saved when key locks or key modifiers are changed 2007-07-16 18:40:32 +00:00
interface Fixed problem with some popup menus (check ticket #1679) 2008-01-03 07:30:05 +00:00
kernel Complete rework of the heap implementation. Freelists are now part of the pages 2008-02-10 21:00:13 +00:00
libroot Works much better when actually allocating the TLS entry... 2008-01-14 02:03:34 +00:00
mail * part of libbe_test build fix... why is the _IMPEXP stuff there in the 2007-10-21 15:19:25 +00:00
media Some cleanup. 2007-10-15 14:09:14 +00:00
midi Made all server version and signatures consistent, and thus closing bug #909. 2006-10-22 17:56:02 +00:00
net * Added flags field in net_protocol_module_info; there is currently a single 2008-02-07 15:09:19 +00:00
opengl/GL/internal updated mesa to 6.5.3 2007-06-08 23:00:44 +00:00
print Slight rework of my previous commit... now ports can be asked too ;) 2008-02-08 02:00:08 +00:00
runtime_loader Now supports symbolic links correctly, and no longer loads the same shared 2006-06-27 00:07:42 +00:00
screen_saver * ScreenCornerSelector is now a BControl and fully keyboard navigable. 2006-06-09 16:03:16 +00:00
shared Allow derived classes to access the member variables. 2007-10-01 18:39:02 +00:00
storage * added a PrintToStream() method 2008-02-02 12:38:15 +00:00
syslog_daemon Implemented syslog support for the kernel debug output. Not fancy at all yet, but 2006-01-24 20:28:52 +00:00
textencoding missing comment tokens 2007-06-20 21:20:11 +00:00
tracker * Rewrote BeBuild.h which had "a few" consequences (got rid of all those class 2007-10-15 20:13:55 +00:00
usb_vision * added a bunch of drivers by Siarzhuk Zharski 2006-05-29 09:54:03 +00:00
userlandfs * Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of 2007-10-02 19:47:31 +00:00