diff --git a/src/system/kernel/slab/ObjectCache.cpp b/src/system/kernel/slab/ObjectCache.cpp index a68c2ce521..d16ff02943 100644 --- a/src/system/kernel/slab/ObjectCache.cpp +++ b/src/system/kernel/slab/ObjectCache.cpp @@ -141,7 +141,7 @@ ObjectCache::InitSlab(slab* slab, void* pages, size_t byteCount, uint32 flags) CREATE_PARANOIA_CHECK_SET(slab, "slab"); - + for (size_t i = 0; i < slab->size; i++) { status_t status = B_OK; if (constructor) @@ -245,6 +245,13 @@ ObjectCache::ReturnObjectToSlab(slab* source, void* object, uint32 flags) } +void* +ObjectCache::ObjectAtIndex(slab* source, int32 index) const +{ + return (uint8*)source->pages + source->offset + index * object_size; +} + + #if PARANOID_KERNEL_FREE bool diff --git a/src/system/kernel/slab/ObjectCache.h b/src/system/kernel/slab/ObjectCache.h index 1c45c96c9b..27c56cf9c4 100644 --- a/src/system/kernel/slab/ObjectCache.h +++ b/src/system/kernel/slab/ObjectCache.h @@ -106,6 +106,7 @@ public: void ReturnObjectToSlab(slab* source, void* object, uint32 flags); + void* ObjectAtIndex(slab* source, int32 index) const; bool Lock() { return mutex_lock(&lock) == B_OK; } void Unlock() { mutex_unlock(&lock); }