tbb::interface6::fixed_pool Class Reference

`#include <memory_pool.h>`

Inheritance diagram for tbb::interface6::fixed_pool:
Collaboration diagram for tbb::interface6::fixed_pool:

## Public Member Functions

| fixed_pool (void *buf, size_t size)
| construct pool with underlying allocator More...
| ~fixed_pool ()
| destroy pool More...
Public Member Functions inherited from tbb::interface6::internal::pool_base
void | recycle ()
| Reset pool to reuse its memory (free all objects at once) More...
void * | malloc (size_t size)
| The "malloc" analogue to allocate block of memory of size bytes. More...
void | free (void *ptr)
| The "free" analogue to discard a previously allocated piece of memory. More...
void * | realloc (void *ptr, size_t size)
| The "realloc" analogue complementing pool_malloc. More...

## Static Private Member Functions

static void * | allocate_request (intptr_t pool_id, size_t &bytes)

## Private Attributes

void * | my_buffer
size_t | my_size

## Additional Inherited Members

Protected Member Functions inherited from tbb::interface6::internal::pool_base
void | destroy ()
| destroy pool - must be called in a child class More...
Protected Attributes inherited from tbb::interface6::internal::pool_base
rml::MemoryPool * | my_pool

## Detailed Description

Definition at line 202 of file memory_pool.h.

## Constructor & Destructor Documentation

## fixed_pool()

tbb::interface6::fixed_pool::fixed_pool | ( | void * | buf,
|  | size_t | size
| ) |  |

inline

construct pool with underlying allocator

Definition at line 251 of file memory_pool.h.

: my_buffer(buf), my_size(size) {
if (!buf || !size)
// TODO: improve support for mode with exceptions disabled
tbb::internal::throw_exception(std::invalid_argument("Zero in parameter is invalid"));
rml::MemPoolPolicy args(allocate_request, 0, size, /*fixedPool=*/true);
rml::MemPoolError res = rml::pool_create_v1(intptr_t(this), &args, &my_pool);
if (res!=rml::POOL_OK)
tbb::internal::throw_exception(std::runtime_error("Can't create pool"));
}

References allocate_request(), tbb::interface6::internal::pool_base::my_pool, size, and tbb::internal::throw_exception().

Here is the call graph for this function:

## ~fixed_pool()

tbb::interface6::fixed_pool::~fixed_pool | ( |  | ) |

inline

destroy pool

Definition at line 211 of file memory_pool.h.

{ destroy(); }

References tbb::interface6::internal::pool_base::destroy().

Here is the call graph for this function:

## Member Function Documentation

## allocate_request()

void * tbb::interface6::fixed_pool::allocate_request | ( | intptr_t | pool_id,
|  | size_t & | bytes
| ) |  |

inline static private

Definition at line 260 of file memory_pool.h.

{
fixed_pool &self = *reinterpret_cast<fixed_pool*>(pool_id);
__TBBMALLOC_ASSERT(0 != self.my_size, "The buffer must not be used twice.");
bytes = self.my_size;
self.my_size = 0; // remember that buffer has been used
return self.my_buffer;
}

References __TBBMALLOC_ASSERT, and my_size.

Referenced by fixed_pool().

Here is the caller graph for this function:

## Member Data Documentation

## my_buffer

void* tbb::interface6::fixed_pool::my_buffer

private

Definition at line 203 of file memory_pool.h.

## my_size

size_t tbb::interface6::fixed_pool::my_size

private

Definition at line 204 of file memory_pool.h.

Referenced by allocate_request().

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

- memory_pool.h

tbb::interface6::fixed_pool::allocate_request
static void * allocate_request(intptr_t pool_id, size_t &bytes)
Definition: memory_pool.h:260
tbb::interface6::internal::pool_base::destroy
void destroy()
destroy pool - must be called in a child class
Definition: memory_pool.h:67
tbb::internal::throw_exception
void throw_exception(exception_id eid)
Versionless convenience wrapper for throw_exception_v4()
Definition: tbb_exception.h:105
tbb::interface6::fixed_pool::fixed_pool
fixed_pool(void *buf, size_t size)
construct pool with underlying allocator
Definition: memory_pool.h:251
__TBBMALLOC_ASSERT
#define __TBBMALLOC_ASSERT(a, b)
Definition: memory_pool.h:37
size
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t size
Definition: ittnotify_static.h:109
tbb::interface6::internal::pool_base::my_pool
rml::MemoryPool * my_pool
Definition: memory_pool.h:69
tbb::interface6::fixed_pool::my_buffer
void * my_buffer
Definition: memory_pool.h:203
tbb::interface6::fixed_pool::my_size
size_t my_size
Definition: memory_pool.h:204

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.