Seastar
High performance C++ framework for concurrent servers
Classes | Public Member Functions | List of all members
seastar::slab_allocator< Item > Class Template Reference

Public Member Functions

 slab_allocator (double growth_factor, uint64_t limit, uint64_t max_object_size)
 
 slab_allocator (double growth_factor, uint64_t limit, uint64_t max_object_size, std::function< void(Item &item_ref)> erase_func)
 
template<typename... Args>
Item * create (const size_t size, Args &&... args)
 
void lock_item (Item *item)
 
void unlock_item (Item *item)
 
void free (Item *item)
 
void touch (Item *item)
 
void print_slab_classes ()
 
size_t class_size (const size_t size)
 

Member Function Documentation

◆ class_size()

template<typename Item >
size_t seastar::slab_allocator< Item >::class_size ( const size_t  size)
inline

Helper function: Useful for getting a slab class' chunk size from a size parameter.

◆ create()

template<typename Item >
template<typename... Args>
Item* seastar::slab_allocator< Item >::create ( const size_t  size,
Args &&...  args 
)
inline

Create an item from a given slab class based on requested size.

◆ free()

template<typename Item >
void seastar::slab_allocator< Item >::free ( Item *  item)
inline

Free an item back to its original slab class.

◆ print_slab_classes()

template<typename Item >
void seastar::slab_allocator< Item >::print_slab_classes ( )
inline

Helper function: Print all available slab classes and their respective properties.

◆ touch()

template<typename Item >
void seastar::slab_allocator< Item >::touch ( Item *  item)
inline

Update item position in the LRU of its slab class.


The documentation for this class was generated from the following file: