Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions | Variables
mallocn_lockfree_impl.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "MEM_guardedalloc.h"
#include "../../source/blender/blenlib/BLI_strict_flags.h"
#include "atomic_ops.h"
#include "mallocn_intern.h"

Go to the source code of this file.

Classes

struct  MemHead
 
struct  MemHeadAligned
 

Macros

#define MEMHEAD_FROM_PTR(ptr)   (((MemHead *)ptr) - 1)
 
#define PTR_FROM_MEMHEAD(memhead)   (memhead + 1)
 
#define MEMHEAD_ALIGNED_FROM_PTR(ptr)   (((MemHeadAligned *)ptr) - 1)
 
#define MEMHEAD_IS_ALIGNED(memhead)   ((memhead)->len & (size_t)MEMHEAD_ALIGN_FLAG)
 
#define MEMHEAD_LEN(memhead)   ((memhead)->len & ~((size_t)(MEMHEAD_ALIGN_FLAG)))
 
#define USE_ATOMIC_MAX
 

Typedefs

typedef struct MemHead MemHead
 
typedef struct MemHeadAligned MemHeadAligned
 

Enumerations

enum  { MEMHEAD_ALIGN_FLAG = 1 }
 

Functions

MEM_INLINE void update_maximum (size_t *maximum_value, size_t value)
 
static void print_error (const char *str,...)
 
size_t MEM_lockfree_allocN_len (const void *vmemh)
 
void MEM_lockfree_freeN (void *vmemh)
 
voidMEM_lockfree_dupallocN (const void *vmemh)
 
voidMEM_lockfree_reallocN_id (void *vmemh, size_t len, const char *str)
 
voidMEM_lockfree_recallocN_id (void *vmemh, size_t len, const char *str)
 
voidMEM_lockfree_callocN (size_t len, const char *str)
 
voidMEM_lockfree_calloc_arrayN (size_t len, size_t size, const char *str)
 
voidMEM_lockfree_mallocN (size_t len, const char *str)
 
voidMEM_lockfree_malloc_arrayN (size_t len, size_t size, const char *str)
 
voidMEM_lockfree_mallocN_aligned (size_t len, size_t alignment, const char *str)
 
void MEM_lockfree_printmemlist_pydict (void)
 
void MEM_lockfree_printmemlist (void)
 
void MEM_lockfree_callbackmemlist (void(*func)(void *))
 
void MEM_lockfree_printmemlist_stats (void)
 
void MEM_lockfree_set_error_callback (void(*func)(const char *))
 
bool MEM_lockfree_consistency_check (void)
 
void MEM_lockfree_set_memory_debug (void)
 
size_t MEM_lockfree_get_memory_in_use (void)
 
unsigned int MEM_lockfree_get_memory_blocks_in_use (void)
 
void MEM_lockfree_reset_peak_memory (void)
 
size_t MEM_lockfree_get_peak_memory (void)
 
const char * MEM_lockfree_name_ptr (void *vmemh)
 

Variables

static unsigned int totblock = 0
 
static size_t mem_in_use = 0
 
static size_t peak_mem = 0
 
static bool malloc_debug_memset = false
 
static void(* error_callback )(const char *) = NULL
 

Detailed Description

Memory allocation which keeps track on allocated memory counters

Definition in file mallocn_lockfree_impl.c.

Macro Definition Documentation

◆ MEMHEAD_ALIGNED_FROM_PTR

#define MEMHEAD_ALIGNED_FROM_PTR (   ptr)    (((MemHeadAligned *)ptr) - 1)

Definition at line 45 of file mallocn_lockfree_impl.c.

◆ MEMHEAD_FROM_PTR

#define MEMHEAD_FROM_PTR (   ptr)    (((MemHead *)ptr) - 1)

Definition at line 43 of file mallocn_lockfree_impl.c.

◆ MEMHEAD_IS_ALIGNED

#define MEMHEAD_IS_ALIGNED (   memhead)    ((memhead)->len & (size_t)MEMHEAD_ALIGN_FLAG)

Definition at line 46 of file mallocn_lockfree_impl.c.

◆ MEMHEAD_LEN

#define MEMHEAD_LEN (   memhead)    ((memhead)->len & ~((size_t)(MEMHEAD_ALIGN_FLAG)))

Definition at line 47 of file mallocn_lockfree_impl.c.

◆ PTR_FROM_MEMHEAD

#define PTR_FROM_MEMHEAD (   memhead)    (memhead + 1)

Definition at line 44 of file mallocn_lockfree_impl.c.

◆ USE_ATOMIC_MAX

#define USE_ATOMIC_MAX

Definition at line 50 of file mallocn_lockfree_impl.c.

Typedef Documentation

◆ MemHead

typedef struct MemHead MemHead

◆ MemHeadAligned

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MEMHEAD_ALIGN_FLAG 

Definition at line 39 of file mallocn_lockfree_impl.c.

Function Documentation

◆ MEM_lockfree_allocN_len()

size_t MEM_lockfree_allocN_len ( const void vmemh)

◆ MEM_lockfree_callbackmemlist()

void MEM_lockfree_callbackmemlist ( void(*)(void *)  func)

Definition at line 365 of file mallocn_lockfree_impl.c.

References void.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_calloc_arrayN()

void* MEM_lockfree_calloc_arrayN ( size_t  len,
size_t  size,
const char *  str 
)

◆ MEM_lockfree_callocN()

void* MEM_lockfree_callocN ( size_t  len,
const char *  str 
)

◆ MEM_lockfree_consistency_check()

bool MEM_lockfree_consistency_check ( void  )

Definition at line 389 of file mallocn_lockfree_impl.c.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_dupallocN()

void* MEM_lockfree_dupallocN ( const void vmemh)

◆ MEM_lockfree_freeN()

void MEM_lockfree_freeN ( void vmemh)

◆ MEM_lockfree_get_memory_blocks_in_use()

unsigned int MEM_lockfree_get_memory_blocks_in_use ( void  )

Definition at line 404 of file mallocn_lockfree_impl.c.

References totblock.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_get_memory_in_use()

size_t MEM_lockfree_get_memory_in_use ( void  )

Definition at line 399 of file mallocn_lockfree_impl.c.

References mem_in_use.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_get_peak_memory()

size_t MEM_lockfree_get_peak_memory ( void  )

Definition at line 415 of file mallocn_lockfree_impl.c.

References peak_mem.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_malloc_arrayN()

void* MEM_lockfree_malloc_arrayN ( size_t  len,
size_t  size,
const char *  str 
)

◆ MEM_lockfree_mallocN()

void* MEM_lockfree_mallocN ( size_t  len,
const char *  str 
)

◆ MEM_lockfree_mallocN_aligned()

void* MEM_lockfree_mallocN_aligned ( size_t  len,
size_t  alignment,
const char *  str 
)

◆ MEM_lockfree_name_ptr()

const char* MEM_lockfree_name_ptr ( void vmemh)

Definition at line 421 of file mallocn_lockfree_impl.c.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_printmemlist()

void MEM_lockfree_printmemlist ( void  )

Definition at line 360 of file mallocn_lockfree_impl.c.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_printmemlist_pydict()

void MEM_lockfree_printmemlist_pydict ( void  )

Definition at line 356 of file mallocn_lockfree_impl.c.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_printmemlist_stats()

void MEM_lockfree_printmemlist_stats ( void  )

Definition at line 370 of file mallocn_lockfree_impl.c.

References mem_in_use, and peak_mem.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_reallocN_id()

void* MEM_lockfree_reallocN_id ( void vmemh,
size_t  len,
const char *  str 
)

◆ MEM_lockfree_recallocN_id()

void* MEM_lockfree_recallocN_id ( void vmemh,
size_t  len,
const char *  str 
)

◆ MEM_lockfree_reset_peak_memory()

void MEM_lockfree_reset_peak_memory ( void  )

Definition at line 410 of file mallocn_lockfree_impl.c.

References mem_in_use, and peak_mem.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_set_error_callback()

void MEM_lockfree_set_error_callback ( void(*)(const char *)  func)

Definition at line 384 of file mallocn_lockfree_impl.c.

References error_callback.

Referenced by MEM_use_lockfree_allocator().

◆ MEM_lockfree_set_memory_debug()

void MEM_lockfree_set_memory_debug ( void  )

Definition at line 394 of file mallocn_lockfree_impl.c.

References malloc_debug_memset.

Referenced by MEM_use_lockfree_allocator().

◆ print_error()

static void print_error ( const char *  str,
  ... 
)
static

◆ update_maximum()

MEM_INLINE void update_maximum ( size_t *  maximum_value,
size_t  value 
)

Variable Documentation

◆ error_callback

void(* error_callback) (const char *) ( const char *  ) = NULL
static

Definition at line 37 of file mallocn_lockfree_impl.c.

Referenced by MEM_lockfree_set_error_callback(), and print_error().

◆ malloc_debug_memset

bool malloc_debug_memset = false
static

◆ mem_in_use

size_t mem_in_use = 0
static

◆ peak_mem

size_t peak_mem = 0
static

◆ totblock

unsigned int totblock = 0
static