*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->FreeBSD man pages -> md_get_int64be (9)              
Title
Content
Arch
Section
 

MDCHAIN(9)

Contents


NAME    [Toc]    [Back]

     mdchain, md_initm, md_done, md_append_record, md_next_record,
     md_get_uint8, md_get_uint16, md_get_uint16be, md_get_uint16le,
     md_get_uint32, md_get_uint32be, md_get_uint32le, md_get_int64,
     md_get_int64be, md_get_int64le, md_get_mem, md_get_mbuf, md_get_uio --
     set of functions to dissect an mbuf chain to various data types

SYNOPSIS    [Toc]    [Back]

     options LIBMCHAIN
     kldload libmchain

     #include <sys/param.h>
     #include <sys/uio.h>
     #include <sys/mchain.h>

     void
     md_initm(struct mdchain *mdp, struct mbuf *m);

     void
     md_done(struct mdchain *mdp);

     void
     md_append_record(struct mdchain *mdp, struct mbuf *top);

     int
     md_next_record(struct mdchain *mdp);

     int
     md_get_uint8(struct mdchain *mdp, u_int8_t *x);

     int
     md_get_uint16(struct mdchain *mdp, u_int16_t *x);

     int
     md_get_uint16be(struct mdchain *mdp, u_int16_t *x);

     int
     md_get_uint16le(struct mdchain *mdp, u_int16_t *x);

     int
     md_get_uint32(struct mdchain *mdp, u_int32_t *x);

     int
     md_get_uint32be(struct mdchain *mdp, u_int32_t *x);

     int
     md_get_uint32le(struct mdchain *mdp, u_int32_t *x);

     int
     md_get_int64(struct mdchain *mdp, int64_t *x);

     int
     md_get_int64be(struct mdchain *mdp, int64_t *x);

     int
     md_get_int64le(struct mdchain *mdp, int64_t *x);

     int
     md_get_mem(struct mdchain *mdp, caddr_t target, int size, int type);

     int
     md_get_mbuf(struct mdchain *mdp, int size, struct mbuf **m);

     int
     md_get_uio(struct mdchain *mdp, struct uio *uiop, int size);

DESCRIPTION    [Toc]    [Back]

     These functions are used to decompose mbuf chains to various data types.
     The mdchain structure is used as a working context and should be initialized
 through a call of the mb_initm() function.  It has the following
     fields:

     md_top  (struct mbuf *) a pointer to the top of the parsed mbuf chain

     md_cur  (struct mbuf *) a pointer to the currently parsed mbuf

     md_pas  (int) offset in the current mbuf

     The md_done() function disposes of an mbuf chain pointed to by the
     mdp->md_top field and sets the field to NULL.

     The md_append_record() appends a new mbuf chain using m_nextpkt field to
     form a single linked list of mbuf chains.	If the mdp->md_top field is
     NULL, then this function behaves exactly as the md_initm() function.

     The md_next_record() function extracts the next mbuf chain and disposes
     the current one, if any.  For a new mbuf chain it calls the md_initm()
     function.	If there is no data left the function returns ENOENT.

     All md_get_*() functions perform an actual copy of the data from an mbuf
     chain.  Functions which have le or be suffixes will perform conversion to
     the little- or big-endian data formats.

     md_get_mem() function copies size bytes of data specified by the source
     argument from an mbuf chain.  The type argument specifies the method used
     to perform a copy, and can be one of the following:

     MB_MSYSTEM  Use the bcopy() function.

     MB_MUSER	 Use the copyin(9) function.

     MB_MINLINE  Use an ``inline'' loop which does not call any function.

     If target is NULL, an actual copy is not performed and the function just
     skips the given number of bytes.

RETURN VALUES    [Toc]    [Back]

     All int functions return zero if successful, otherwise an error code is
     returned.

     Note: after failure of any function, an mbuf chain is left in the broken
     state and only the md_done() function can safely be called to destroy it.

EXAMPLES    [Toc]    [Back]

     struct mdchain *mdp;
     struct mbuf *m;
     u_int16_t length;
     u_int8_t byte;

     receive(so, &m);
     md_initm(mdp, m);
     if (md_get_uint8(mdp, &byte) != 0 ||
	 md_get_uint16le(mdp, &length) != 0)
	     error = EBADRPC;
     mb_done(mdp);

SEE ALSO    [Toc]    [Back]

      
      
     mbchain(9), mbuf(9)

AUTHORS    [Toc]    [Back]

     This manual page was written by Boris Popov <[email protected]>.


FreeBSD 5.2.1		       February 28, 2001		 FreeBSD 5.2.1
[ Back ]
 Similar pages
Name OS Title
mb_put_int64be FreeBSD set of functions to build an mbuf chain from various data types
mb_put_int64le FreeBSD set of functions to build an mbuf chain from various data types
mb_put_mem FreeBSD set of functions to build an mbuf chain from various data types
mb_put_uint16le FreeBSD set of functions to build an mbuf chain from various data types
mb_put_uio FreeBSD set of functions to build an mbuf chain from various data types
mb_done FreeBSD set of functions to build an mbuf chain from various data types
mb_init FreeBSD set of functions to build an mbuf chain from various data types
mb_put_mbuf FreeBSD set of functions to build an mbuf chain from various data types
mbchain FreeBSD set of functions to build an mbuf chain from various data types
mb_put_uint32le FreeBSD set of functions to build an mbuf chain from various data types
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service