History log of /haiku/src/tests/add-ons/kernel/kernelland_emu/slab.cpp
Revision Date Author Comments
# 27f78bf5 24-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed build after signature change in r35601.


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


# 86c794e5 21-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

slab allocator:
* Implemented a more elaborated raw memory allocation backend (MemoryManager).
We allocate 8 MB areas whose pages we allocate and map when needed. An area is
divided into equally-sized chunks which form the basic units of allocation. We
have areas with three possible chunk sizes (small, medium, large), which is
basically what the ObjectCache implementations were using anyway.
* Added "uint32 flags" parameter to several of the slab allocator's object
cache and object depot functions. E.g. object_depot_store() potentially wants
to allocate memory for a magazine. But also in pure freeing functions it
might eventually become useful to have those flags, since they could end up
deleting an area, which might not be allowable in all situations. We should
introduce specific flags to indicate that.
* Reworked the block allocator. Since the MemoryManager allocates block-aligned
areas, maintains a hash table for lookup, and maps chunks to object caches,
we can quickly find out which object cache a to be freed allocation belongs
to and thus don't need the boundary tags anymore.
* Reworked the slab boot strap process. We allocate from the initial area only
when really necessary, i.e. when the object cache for the respective
allocation size has not been created yet. A single page is thus sufficient.

other:
* vm_allocate_early(): Added boolean "blockAlign" parameter. If true, the
semantics is the same as for B_ANY_KERNEL_BLOCK_ADDRESS.
* Use an object cache for page mappings. This significantly reduces the
contention on the heap bin locks.


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


# 70742459 19-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed build.


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


# 74e2b875 07-Dec-2009 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


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


# 1de1f379 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced the dummy slab implementation with that of the UserlandFS.
* Correctly implemented object construction and destruction.


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


# cc586449 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Split misc.cpp further.
* Removed user_strcpy() (it doesn't exist in the kernel) and reimplemented
user_{memcpy,strlcpy}().
* Added kernel_debugger().


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


# 27f78bf52215d391c19691d57983772f625f372d 24-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed build after signature change in r35601.


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


# 86c794e5c10f1b2d99d672d424a8637639c703dd 21-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

slab allocator:
* Implemented a more elaborated raw memory allocation backend (MemoryManager).
We allocate 8 MB areas whose pages we allocate and map when needed. An area is
divided into equally-sized chunks which form the basic units of allocation. We
have areas with three possible chunk sizes (small, medium, large), which is
basically what the ObjectCache implementations were using anyway.
* Added "uint32 flags" parameter to several of the slab allocator's object
cache and object depot functions. E.g. object_depot_store() potentially wants
to allocate memory for a magazine. But also in pure freeing functions it
might eventually become useful to have those flags, since they could end up
deleting an area, which might not be allowable in all situations. We should
introduce specific flags to indicate that.
* Reworked the block allocator. Since the MemoryManager allocates block-aligned
areas, maintains a hash table for lookup, and maps chunks to object caches,
we can quickly find out which object cache a to be freed allocation belongs
to and thus don't need the boundary tags anymore.
* Reworked the slab boot strap process. We allocate from the initial area only
when really necessary, i.e. when the object cache for the respective
allocation size has not been created yet. A single page is thus sufficient.

other:
* vm_allocate_early(): Added boolean "blockAlign" parameter. If true, the
semantics is the same as for B_ANY_KERNEL_BLOCK_ADDRESS.
* Use an object cache for page mappings. This significantly reduces the
contention on the heap bin locks.


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


# 70742459f5c4c260938ea78b14218866952dfc6d 19-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed build.


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


# 74e2b8751182e262898817aade1252c75ea4fbee 07-Dec-2009 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


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


# 1de1f379a1164243c47c9130318e678bb19b4c62 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced the dummy slab implementation with that of the UserlandFS.
* Correctly implemented object construction and destruction.


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


# cc586449f76ad8d9d0d8f4724ac6193c9816d379 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Split misc.cpp further.
* Removed user_strcpy() (it doesn't exist in the kernel) and reimplemented
user_{memcpy,strlcpy}().
* Added kernel_debugger().


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