YAZ  5.23.1
Data Structures | Macros | Functions | Variables
nmem.c File Reference

Implements Nibble Memory. More...

#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stddef.h>
#include <yaz/xmalloc.h>
#include <yaz/nmem.h>
#include <yaz/log.h>
#include <yaz/snprintf.h>

Go to the source code of this file.

Data Structures

struct  nmem_block
 
struct  nmem_control
 
struct  align
 

Macros

#define NMEM_CHUNK   (4*1024)
 
#define NMEM_ALIGN   (offsetof(struct align, u))
 

Functions

static void nmem_lock (void)
 
static void nmem_unlock (void)
 
static void free_block (struct nmem_block *p)
 
static struct nmem_blockget_block (size_t size)
 
void nmem_reset (NMEM n)
 releases memory associaged with an NMEM handle More...
 
void * nmem_malloc (NMEM n, size_t size)
 allocates memory block on NMEM handle More...
 
size_t nmem_total (NMEM n)
 returns size in bytes of memory for NMEM handle More...
 
void nmem_init_globals (void)
 
NMEM nmem_create (void)
 returns new NMEM handle More...
 
void nmem_destroy (NMEM n)
 destroys NMEM handle and memory associated with it More...
 
void nmem_transfer (NMEM dst, NMEM src)
 transfers memory from one NMEM handle to another More...
 
int nmem_get_status (char *dst, size_t l)
 returns memory status for NMEM - as XML More...
 

Variables

static size_t no_nmem_handles = 0
 
static size_t no_nmem_blocks = 0
 
static size_t nmem_allocated = 0
 
static int log_level = 0
 
static int log_level_initialized = 0
 

Detailed Description

Implements Nibble Memory.

This is a simple and fairly wasteful little module for nibble memory allocation.

Definition in file nmem.c.

Macro Definition Documentation

#define NMEM_ALIGN   (offsetof(struct align, u))

Definition at line 71 of file nmem.c.

Referenced by nmem_malloc().

#define NMEM_CHUNK   (4*1024)

Definition at line 39 of file nmem.c.

Referenced by get_block().

Function Documentation

static void free_block ( struct nmem_block p)
static
static struct nmem_block* get_block ( size_t  size)
static
NMEM nmem_create ( void  )
void nmem_destroy ( NMEM  n)
int nmem_get_status ( char *  dst,
size_t  l 
)

returns memory status for NMEM - as XML

Parameters
dstbuffer for result
lsize of buffer (200 should suffice)
Returns
0 if OK
-1 on failure

Definition at line 229 of file nmem.c.

References nmem_allocated, nmem_lock(), nmem_unlock(), no_nmem_blocks, no_nmem_handles, and yaz_snprintf().

void nmem_init_globals ( void  )

Definition at line 174 of file nmem.c.

References nmem_lock(), and nmem_unlock().

Referenced by yaz_init_globals().

static void nmem_lock ( void  )
static
void* nmem_malloc ( NMEM  n,
size_t  size 
)
void nmem_reset ( NMEM  n)

releases memory associaged with an NMEM handle

Parameters
nNMEM handle

Definition at line 129 of file nmem.c.

References nmem_control::blocks, free_block(), log_level, nmem_block::next, nmem_control::total, and yaz_log().

Referenced by ccl_stop_words_tree(), cql_parser_stream(), nmem_destroy(), odr_reset(), yaz_marc_reset(), and yaz_record_conv_reset().

size_t nmem_total ( NMEM  n)

returns size in bytes of memory for NMEM handle

Returns
number of bytes

Definition at line 169 of file nmem.c.

References nmem_control::total.

Referenced by odr_total().

void nmem_transfer ( NMEM  dst,
NMEM  src 
)

transfers memory from one NMEM handle to another

Parameters
srcsource NMEM handle
dstdestination NMEM handle

Definition at line 216 of file nmem.c.

References nmem_control::blocks, nmem_block::next, and nmem_control::total.

Referenced by handle_srw_response(), handle_srw_scan_response(), handle_Z3950_records(), handle_Z3950_scan_response(), and process_searchRequest().

static void nmem_unlock ( void  )
static

Variable Documentation

int log_level = 0
static

Definition at line 73 of file nmem.c.

Referenced by free_block(), get_block(), nmem_create(), and nmem_reset().

int log_level_initialized = 0
static

Definition at line 74 of file nmem.c.

Referenced by nmem_create().

size_t nmem_allocated = 0
static

Definition at line 37 of file nmem.c.

Referenced by free_block(), get_block(), and nmem_get_status().

size_t no_nmem_blocks = 0
static

Definition at line 36 of file nmem.c.

Referenced by free_block(), get_block(), and nmem_get_status().

size_t no_nmem_handles = 0
static

Definition at line 35 of file nmem.c.

Referenced by nmem_create(), nmem_destroy(), and nmem_get_status().