root/src/system/kernel/slab/SmallObjectCache.h
/*
 * Copyright 2008, Axel Dörfler. All Rights Reserved.
 * Copyright 2007, Hugo Santos. All Rights Reserved.
 *
 * Distributed under the terms of the MIT License.
 */
#ifndef SMALL_OBJECT_CACHE_H
#define SMALL_OBJECT_CACHE_H


#include "ObjectCache.h"


struct SmallObjectCache final : ObjectCache {
        static  SmallObjectCache*       Create(const char* name, size_t object_size,
                                                                        size_t alignment, size_t maximum,
                                                                        size_t magazineCapacity,
                                                                        size_t maxMagazineCount,
                                                                        uint32 flags, void* cookie,
                                                                        object_cache_constructor constructor,
                                                                        object_cache_destructor destructor,
                                                                        object_cache_reclaimer reclaimer);
        virtual void                            Delete();

        virtual slab*                           CreateSlab(uint32 flags);
        virtual void                            ReturnSlab(slab* slab, uint32 flags);
        virtual slab*                           ObjectSlab(void* object) const;
};


#endif  // SMALL_OBJECT_CACHE_H