src/bft/bft_mem.c File Reference

| programmer's documentation

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
bft_mem.c File Reference
`#include "cs_defs.h"`
`#include <assert.h>`
`#include <errno.h>`
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <string.h>`
`#include "bft_error.h"`
`#include "bft_mem_usage.h"`
`#include "bft_mem.h"`
`#include "bft_printf.h"`
Include dependency graph for bft_mem.c:

## Macros
#define | DIR_SEPARATOR '/'

## 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...
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...
int | bft_mem_have_memalign (void)
| Indicate if a memory aligned allocation variant is available. More...

## Macro Definition Documentation

#define DIR_SEPARATOR '/'

## Function Documentation

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.

Returns
  pointer to the error handler function.

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).

Parameters

  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.

Parameters

  [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

Returns
  NULL pointer.

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.

Returns
  1 if memory aligned allocation is possible, 0 otherwise.

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.

Parameters

  log_file_name | name of optional log_file (if NULL, no log).

int bft_mem_initialized | ( | void |  | ) |

Indicates if bft_mem_...() functions are initialized.

Returns
  1 if bft_mem_init has been called, 0 otherwise.

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.

Parameters

  [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.

Returns
  pointer to allocated memory.

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.

Parameters

  [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.

Returns
  pointer to allocated memory.

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.

Parameters

  [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.

Returns
  pointer to reallocated memory.

size_t bft_mem_size_current | ( | void |  | ) |

Return current theoretical dynamic memory allocated.

Returns
  current memory handled through bft_mem_...() (in kB).

size_t bft_mem_size_max | ( | void |  | ) |

Return maximum theoretical dynamic memory allocated.

Returns
  maximum memory handled through bft_mem_...() (in kB).