 Include dependency graph for bft_mem.h:
 Include dependency graph for bft_mem.h:Go to the source code of this file.
| Data Structures | |
| struct | cs_mem_block_t | 
| Macros | |
| #define | BFT_MALLOC(_ptr, _ni, _type) | 
| Allocate memory for _ni elements of type _type.  More... | |
| #define | BFT_REALLOC(_ptr, _ni, _type) | 
| Reallocate memory for _ni elements of type _type.  More... | |
| #define | BFT_FREE(_ptr) _ptr = bft_mem_free(_ptr, #_ptr, __FILE__, __LINE__) | 
| Free allocated memory.  More... | |
| #define | BFT_MEMALIGN(_ptr, _align, _ni, _type) | 
| Allocate aligned memory for _ni elements of type _type.  More... | |
| Typedefs | |
| typedef size_t() | bft_mem_get_size_t(void *ptr) | 
| typedef void *() | bft_mem_realloc_t(void *ptr, size_t ni, size_t size, const char *var_name, const char *file_name, int line_num) | 
| typedef void() | bft_mem_free_t(void *ptr, const char *var_name, const char *file_name, int line_num) | 
| Enumerations | |
| enum | cs_alloc_mode_t { CS_ALLOC_HOST , CS_ALLOC_HOST_DEVICE , CS_ALLOC_HOST_DEVICE_PINNED , CS_ALLOC_HOST_DEVICE_SHARED , CS_ALLOC_DEVICE } | 
| Functions | |
| void | bft_mem_init (const char *log_file_name) | 
| Initialize memory handling.  More... | |
| void | bft_mem_end (void) | 
| End memory handling.  More... | |
| int | bft_mem_initialized (void) | 
| Indicates if bft_mem_...() functions are initialized.  More... | |
| void * | bft_mem_malloc (size_t ni, size_t size, const char *var_name, const char *file_name, int line_num) | 
| Allocate memory for ni elements of size bytes.  More... | |
| void * | bft_mem_realloc (void *ptr, size_t ni, size_t size, const char *var_name, const char *file_name, int line_num) | 
| Reallocate memory for ni elements of size bytes.  More... | |
| void * | bft_mem_free (void *ptr, const char *var_name, const char *file_name, int line_num) | 
| Free allocated memory.  More... | |
| void * | bft_mem_memalign (size_t alignment, size_t ni, size_t size, const char *var_name, const char *file_name, int line_num) | 
| Allocate aligned memory for ni elements of size bytes.  More... | |
| size_t | bft_mem_size_current (void) | 
| Return current theoretical dynamic memory allocated.  More... | |
| size_t | bft_mem_size_max (void) | 
| Return maximum theoretical dynamic memory allocated.  More... | |
| int | bft_mem_have_memalign (void) | 
| Indicate if a memory aligned allocation variant is available.  More... | |
| bft_error_handler_t * | bft_mem_error_handler_get (void) | 
| Returns the error handler associated with the bft_mem_...() functions.  More... | |
| void | bft_mem_error_handler_set (bft_error_handler_t *handler) | 
| Associates an error handler with the bft_mem_...() functions.  More... | |
| void | bft_mem_alternative_set (bft_mem_realloc_t *realloc_func, bft_mem_free_t *free_func) | 
| BFT_FREE | ( | _ptr | ) | _ptr = bft_mem_free(_ptr, #_ptr, __FILE__, __LINE__) | 
Free allocated memory.
This macro calls bft_mem_free(), automatically setting the allocated variable name and source file name and line arguments.
The freed pointer is set to NULL to avoid accidental reuse.
| [in,out] | _ptr | pointer to allocated memory. | 
| BFT_MALLOC | ( | _ptr, | |
| _ni, | |||
| _type | |||
| ) | 
Allocate memory for _ni elements of type _type.
This macro calls bft_mem_malloc(), automatically setting the allocated variable name and source file name and line arguments.
| [out] | _ptr | pointer to allocated memory. | 
| [in] | _ni | number of elements. | 
| [in] | _type | element type. | 
| BFT_MEMALIGN | ( | _ptr, | |
| _align, | |||
| _ni, | |||
| _type | |||
| ) | 
Allocate aligned memory for _ni elements of type _type.
This macro calls bft_mem_memalign(), automatically setting the allocated variable name and source file name and line arguments.
| [out] | _ptr | pointer to allocated memory. | 
| [in] | _align | alignment. | 
| [in] | _ni | number of elements. | 
| [in] | _type | element type. | 
| BFT_REALLOC | ( | _ptr, | |
| _ni, | |||
| _type | |||
| ) | 
Reallocate memory for _ni elements of type _type.
This macro calls bft_mem_realloc(), automatically setting the allocated variable name and source file name and line arguments.
| [in,out] | _ptr | pointer to allocated memory. | 
| [in] | _ni | number of elements. | 
| [in] | _type | element type. | 
| typedef void() bft_mem_free_t(void *ptr, const char *var_name, const char *file_name, int line_num) | 
| typedef size_t() bft_mem_get_size_t(void *ptr) | 
| typedef void*() bft_mem_realloc_t(void *ptr, size_t ni, size_t size, const char *var_name, const char *file_name, int line_num) | 
| enum cs_alloc_mode_t | 
Allocation modes for accelerated code.
| void bft_mem_alternative_set | ( | bft_mem_realloc_t * | realloc_func, | 
| bft_mem_free_t * | free_func | ||
| ) | 
| void bft_mem_end | ( | void | ) | 
End memory handling.
This function should be called after all other bft_mem_...() functions. In case of memory allocation logging, it writes final information to the log file and closes is.
| bft_error_handler_t* bft_mem_error_handler_get | ( | void | ) | 
Returns the error handler associated with the bft_mem_...() functions.
| void bft_mem_error_handler_set | ( | bft_error_handler_t * | handler | ) | 
Associates an error handler with the bft_mem_...() functions.
With the default error handler, an error message is output to stderr, (after bft_print_flush() is called), and the general error handler used by bft_error() is then called (which results in the termination of the current process or process group).
| handler | pointer to the error handler function [in]. | 
| void* bft_mem_free | ( | void * | ptr, | 
| const char * | var_name, | ||
| const char * | file_name, | ||
| int | line_num | ||
| ) | 
Free allocated memory.
This function calls free(), but adds tracing capabilities, and automatically calls the bft_error() errorhandler if it fails to free the corresponding memory. In case of a NULL pointer argument, the function simply returns.
| [in] | ptr | pointer to previous memory location (if NULL, bft_alloc() called). | 
| [in] | var_name | allocated variable name string | 
| [in] | file_name | name of calling source file | 
| [in] | line_num | line number in calling source file | 
| int bft_mem_have_memalign | ( | void | ) | 
Indicate if a memory aligned allocation variant is available.
If no such function is available, bft_mem_memalign() will always fail.
| void bft_mem_init | ( | const char * | log_file_name | ) | 
Initialize memory handling.
This function should be called before any other bft_mem_...() function. To activate memory allocation logging, a logfile name should be given as an argument. The resulting file will be a regular, local file. If this file cannot be opened for some reason, logging is silently de-activated.
| log_file_name | name of optional log_file (if NULL, no log). | 
| int bft_mem_initialized | ( | void | ) | 
Indicates if bft_mem_...() functions are initialized.
| void* bft_mem_malloc | ( | size_t | ni, | 
| size_t | size, | ||
| const char * | var_name, | ||
| const char * | file_name, | ||
| int | line_num | ||
| ) | 
Allocate memory for ni elements of size bytes.
This function calls malloc(), but adds tracing capabilities, and automatically calls the bft_error() errorhandler if it fails to allocate the required memory.
Allocation couting and logging to trace file will be done if both required by the bft_mem_init options and if file_name != nullptr. If required but file_name == nullptr, it must be handled by the caller, using bft_mem_log_mem_op.
| [in] | ni | number of elements. | 
| [in] | size | element size. | 
| [in] | var_name | allocated variable name string. | 
| [in] | file_name | name of calling source file. | 
| [in] | line_num | line number in calling source file. | 
| void* bft_mem_memalign | ( | size_t | alignment, | 
| size_t | ni, | ||
| size_t | size, | ||
| const char * | var_name, | ||
| const char * | file_name, | ||
| int | line_num | ||
| ) | 
Allocate aligned memory for ni elements of size bytes.
This function calls posix_memalign() if available, but adds tracing capabilities, and automatically calls the bft_error() errorhandler if it fails to allocate the required memory.
The associated function bft_mem_have_memalign() indicates if this type of allocation may be used on this system.
| [in] | alignment | alignment. | 
| [in] | ni | number of elements. | 
| [in] | size | element size. | 
| [in] | var_name | allocated variable name string. | 
| [in] | file_name | name of calling source file. | 
| [in] | line_num | line number in calling source file. | 
| void* bft_mem_realloc | ( | void * | ptr, | 
| size_t | ni, | ||
| size_t | size, | ||
| const char * | var_name, | ||
| const char * | file_name, | ||
| int | line_num | ||
| ) | 
Reallocate memory for ni elements of size bytes.
This function calls realloc(), but adds tracing capabilities, and automatically calls the bft_error() errorhandler if it fails to allocate the required memory.
| [in] | ptr | pointer to previous memory location (if NULL, bft_alloc() called). | 
| [in] | ni | number of elements. | 
| [in] | size | element size. | 
| [in] | var_name | allocated variable name string. | 
| [in] | file_name | name of calling source file. | 
| [in] | line_num | line number in calling source file. | 
| size_t bft_mem_size_current | ( | void | ) | 
Return current theoretical dynamic memory allocated.
| size_t bft_mem_size_max | ( | void | ) | 
Return maximum theoretical dynamic memory allocated.