YAZ  4.2.57
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>

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 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
void * nmem_malloc (NMEM n, size_t size)
 allocates memory block on NMEM handle
size_t nmem_total (NMEM n)
 returns size in bytes of memory for NMEM handle
NMEM nmem_create (void)
 returns new NMEM handle
void nmem_destroy (NMEM n)
 destroys NMEM handle and memory associated with it
void nmem_transfer (NMEM dst, NMEM src)
 transfers memory from one NMEM handle to another

Variables

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 59 of file nmem.c.

Referenced by nmem_malloc().

#define NMEM_CHUNK   (4*1024)

Definition at line 27 of file nmem.c.

Referenced by get_block().

Function Documentation

static void free_block ( struct nmem_block p)
static

Definition at line 64 of file nmem.c.

References nmem_block::buf, log_level, xfree, and yaz_log().

Referenced by nmem_reset().

static struct nmem_block* get_block ( size_t  size)
staticread

Definition at line 75 of file nmem.c.

References nmem_block::buf, log_level, NMEM_CHUNK, nmem_block::size, nmem_block::top, xmalloc, and yaz_log().

Referenced by nmem_malloc().

NMEM nmem_create ( void  )
void nmem_destroy ( NMEM  n)
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 95 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 135 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 167 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().

Variable Documentation

int log_level = 0
static

Definition at line 61 of file nmem.c.

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

int log_level_initialized = 0
static

Definition at line 62 of file nmem.c.

Referenced by nmem_create().