regional.h File Reference

Regional allocator. More...


Data Structures

struct  regional
 the regional* is the first block*. More...

Functions

struct regionalregional_create ()
 Create a new regional.
struct regionalregional_create_custom (size_t size)
 Create a new region, with custom settings.
void regional_free_all (struct regional *r)
 Free all memory associated with regional.
void regional_destroy (struct regional *r)
 Destroy regional.
void * regional_alloc (struct regional *r, size_t size)
 Allocate size bytes of memory inside regional.
void * regional_alloc_init (struct regional *r, const void *init, size_t size)
 Allocate size bytes of memory inside regional and copy INIT into it.
void * regional_alloc_zero (struct regional *r, size_t size)
 Allocate size bytes of memory inside regional that are initialized to 0.
char * regional_strdup (struct regional *r, const char *string)
 Duplicate string and allocate the result in regional.
void regional_log_stats (struct regional *r)
 Debug print regional statistics to log.
size_t regional_get_mem (struct regional *r)
 get total memory size in use by region


Detailed Description

Regional allocator.

Allocates small portions of of larger chunks. Based on region-allocator from NSD, but rewritten to be light.

Different from (nsd) region-allocator.h o does not have recycle bin o does not collect stats; just enough to answer get_mem() in use. o does not keep cleanup list o does not have function pointers to setup o allocs the regional struct inside the first block. o can take a block to create regional from. o blocks and large allocations are kept on singly linked lists.


Function Documentation

struct regional* regional_create (  )  [read]

struct regional* regional_create_custom ( size_t  size  )  [read]

Create a new region, with custom settings.

Parameters:
size,: length of first block.
Returns:
: newly allocated regional.

References regional::first_size, log_assert, and regional_init().

Referenced by alloc_reg_obtain(), libworker_setup(), prealloc_blocks(), regional_create(), and worker_init().

void regional_free_all ( struct regional r  ) 

void regional_destroy ( struct regional r  ) 

void* regional_alloc ( struct regional r,
size_t  size 
)

Allocate size bytes of memory inside regional.

The memory is deallocated when region_free_all is called for this region.

Parameters:
r,: the region.
size,: number of bytes.
Returns:
: pointer to memory allocated.

References ALIGN_UP, ALIGNMENT, regional::available, regional::data, regional::large_list, regional::next, REGIONAL_CHUNK_SIZE, REGIONAL_LARGE_OBJECT_SIZE, and regional::total_large.

Referenced by acl_list_insert(), add_rr_to_rrset(), anchor_new_ta(), anchor_new_ta_key(), assemble_it(), compress_tree_newnode(), construct_reply_info_base(), createResponse(), delegpt_add_addr(), delegpt_add_ns(), delegpt_create(), dns_alloc_msg(), dns_copy_msg(), dns_msg_create(), donotq_insert(), ds_digest_match_dnskey(), forwards_insert_data(), gen_dns_msg(), generate_sub_request(), hints_insert(), insert_rr(), iter_add_prepend_answer(), iter_add_prepend_auth(), iter_new(), iter_prepend(), key_entry_get_rrset(), key_entry_setup(), libworker_send_query(), mesh_state_add_cb(), mesh_state_add_reply(), mesh_state_attachment(), mesh_state_create(), moveover_rrsigs(), new_rrset(), nsec3_calc_hash(), nsec3_ce_wildcard(), nsec3_hash_name(), packed_rrset_copy_region(), parse_copy_decompress_rrset(), parse_create_qinfo(), parse_create_rrset(), parse_reply(), process_response(), read_addrs(), read_names(), regional_alloc_init(), regional_alloc_zero(), repinfo_alloc_rrset_keys(), reply_info_parse(), rrset_array_unlock_touch(), rrset_canonical(), synth_cname_rrset(), synth_dname_msg(), val_dlv_init(), val_new(), and worker_send_query().

void* regional_alloc_init ( struct regional r,
const void *  init,
size_t  size 
)

void* regional_alloc_zero ( struct regional r,
size_t  size 
)

Allocate size bytes of memory inside regional that are initialized to 0.

The memory is deallocated when region_free_all is called for this region.

Parameters:
r,: the region.
size,: number of bytes.
Returns:
: pointer to memory allocated.

References regional_alloc().

Referenced by dns_msg_create(), load_msg(), load_rrset(), lz_find_create_node(), new_local_rrset(), and synth_dname_msg().

char* regional_strdup ( struct regional r,
const char *  string 
)

Duplicate string and allocate the result in regional.

Parameters:
r,: the region.
string,: null terminated string.
Returns:
: pointer to memory allocated.

References regional_alloc_init().


Generated on Tue Oct 13 06:45:51 2009 for unbound by  doxygen 1.5.9