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

Defines

#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, int size)
 allocates memory block on NMEM handle
int 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
int yaz_errno (void)
void yaz_set_errno (int v)
void yaz_strerror (char *buf, int max)

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. Evemtually we'll put in something better.

FIXME - it also has some semaphore stuff, and stuff to handle errno. These should be moved to some other place!

Definition in file nmem.c.


Define Documentation

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

Definition at line 65 of file nmem.c.

Referenced by nmem_malloc().

#define NMEM_CHUNK   (4*1024)

Definition at line 33 of file nmem.c.

Referenced by get_block().


Function Documentation

static void free_block ( struct nmem_block p  )  [static]

Definition at line 70 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  )  [static, read]

Definition at line 81 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,
int  size 
)

void nmem_reset ( NMEM  n  ) 

releases memory associaged with an NMEM handle

Parameters:
n NMEM handle

Definition at line 102 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().

int nmem_total ( NMEM  n  ) 

returns size in bytes of memory for NMEM handle

Returns:
number of bytes

Definition at line 142 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:
src source NMEM handle
dst destination NMEM handle

Definition at line 174 of file nmem.c.

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

Referenced by handle_records(), handle_srw_response(), handle_srw_scan_response(), process_searchRequest(), scan_response(), yaz_copy_Z_Query(), and yaz_copy_z_RPNQuery().

int yaz_errno ( void   ) 

void yaz_set_errno ( int  v  ) 

Definition at line 192 of file nmem.c.

Referenced by tcpip_get(), and unix_bind().

void yaz_strerror ( char *  buf,
int  max 
)

Definition at line 197 of file nmem.c.

References log_level, log_level_initialized, yaz_errno(), and yaz_log_module_level().

Referenced by yaz_log().


Variable Documentation

int log_level = 0 [static]

Definition at line 67 of file nmem.c.

int log_level_initialized = 0 [static]

Definition at line 68 of file nmem.c.


Generated on Mon Dec 29 12:08:47 2008 for YAZ by  doxygen 1.5.6