IPnom Home • Manuals • FreeBSD

 FreeBSD Man Pages

Man Sections:Commands (1)System Calls (2)Library Functions (3)Device Drivers (4)File Formats (5)Miscellaneous (7)System Utilities (8)
Keyword Live Search (10 results max):
 Type in part of a command in the search box.
 


lwres_buffer_getmem(3)

NAME

       lwres_buffer_init,      lwres_buffer_invalidate,      lwres_buffer_add,
       lwres_buffer_subtract,	  lwres_buffer_clear,	   lwres_buffer_first,
       lwres_buffer_forward,	 lwres_buffer_back,	lwres_buffer_getuint8,
       lwres_buffer_putuint8, lwres_buffer_getuint16,  lwres_buffer_putuint16,
       lwres_buffer_getuint32,	 lwres_buffer_putuint32,  lwres_buffer_putmem,
       lwres_buffer_getmem - lightweight resolver buffer management


SYNOPSIS

       #include <lwres/lwbuffer.h>

       void lwres_buffer_init(lwres_buffer_t *b, void *base, unsigned int
       length);

       void lwres_buffer_invalidate(lwres_buffer_t *b);

       void lwres_buffer_add(lwres_buffer_t *b, unsigned int n);

       void lwres_buffer_subtract(lwres_buffer_t *b, unsigned int n);

       void lwres_buffer_clear(lwres_buffer_t *b);

       void lwres_buffer_first(lwres_buffer_t *b);

       void lwres_buffer_forward(lwres_buffer_t *b, unsigned int n);

       void lwres_buffer_back(lwres_buffer_t *b, unsigned int n);

       lwres_uint8_t lwres_buffer_getuint8(lwres_buffer_t *b);

       void lwres_buffer_putuint8(lwres_buffer_t *b, lwres_uint8_t val);

       lwres_uint16_t lwres_buffer_getuint16(lwres_buffer_t *b);

       void lwres_buffer_putuint16(lwres_buffer_t *b, lwres_uint16_t val);

       lwres_uint32_t lwres_buffer_getuint32(lwres_buffer_t *b);

       void lwres_buffer_putuint32(lwres_buffer_t *b, lwres_uint32_t val);

       void lwres_buffer_putmem(lwres_buffer_t *b, const unsigned char *base,
       unsigned int length);

       void lwres_buffer_getmem(lwres_buffer_t *b, unsigned char *base,
       unsigned int length);


DESCRIPTION

       These  functions  provide  bounds  checked access to a region of memory
       where data is being read or written.  They are based  on,  and  similar
       to, the isc_buffer_ functions in the ISC library.

       A  buffer  is a region of memory, together with a set of related subre-
       gions.  The used region and the	available  region  are	disjoint,  and
       their  union  is the buffer's region.  The used region extends from the
       beginning of the used region to the byte before the current offset  (if
       any).   The remaining region the current pointer to the end of the used
       region.	The size of the consumed region can be changed	using  various
       buffer commands.  Initially, the consumed region is empty.

       The  active  region is an (optional) subregion of the remaining region.
       It extends from the current  offset  to	an  offset  in	the  remaining
       region.	 Initially, the active region is empty.  If the current offset
       advances beyond the chosen offset,  the	active	region	will  also  be
       empty.

	  /------------entire length---------------\\
	  /----- used region -----\\/-- available --\\
	  +----------------------------------------+
	  | consumed  | remaining |		   |
	  +----------------------------------------+
	  a	      b     c	  d		   e

	 a == base of buffer.
	 b == current pointer.	Can be anywhere between a and d.
	 c == active pointer.  Meaningful between b and d.
	 d == used pointer.
	 e == length of buffer.

	 a-e == entire length of buffer.
	 a-d == used region.
	 a-b == consumed region.
	 b-d == remaining region.
	 b-c == optional active region.

       lwres_buffer_init()  initializes the lwres_buffer_t *b and assocates it
       with the memory region of size length bytes starting at location  base.

       lwres_buffer_invalidate()  marks the buffer *b as invalid. Invalidating
       a buffer after use is not required, but makes it possible to catch  its
       possible accidental use.

       The  functions  lwres_buffer_add()  and lwres_buffer_subtract() respec-
       tively increase and decrease the used space in buffer *b  by  n	bytes.
       lwres_buffer_add()  checks  for	buffer	overflow and lwres_buffer_sub-
       tract() checks for underflow.  These functions do not allocate or deal-
       locate memory.  They just change the value of used.

       A  buffer is re-initialised by lwres_buffer_clear().  The function sets
       used , current and active to zero.

       lwres_buffer_first makes the consumed region of buffer *p empty by set-
       ting current to zero (the start of the buffer).

       lwres_buffer_forward()  increases the consumed region of buffer *b by n
       bytes, checking for overflow.  Similarly, lwres_buffer_back() decreases
       buffer b's consumed region by n bytes and checks for underflow.

       lwres_buffer_getuint8()	reads  an  unsigned  8-bit integer from *b and
       returns it.  lwres_buffer_putuint8() writes the unsigned 8-bit  integer

       Arbitrary amounts of data  are  read  or  written  from	a  lightweight
       resolver  buffer  with  lwres_buffer_getmem() and lwres_buffer_putmem()
       respectively.  lwres_buffer_putmem() copies length bytes of  memory  at
       base  to  b.   Conversely, lwres_buffer_getmem() copies length bytes of
       memory from b to base.

BIND9				 Jun 30, 2000		       LWRES_BUFFER(3)

SPONSORED LINKS




Man(1) output converted with man2html , sed , awk