Main index | Section 9 | Options |
#include <sys/param.h>
#include <sys/uio.h>
#include <sys/mchain.h>
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.
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.
struct mdchain *mdp; struct mbuf *m; uint16_t length; uint8_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);
MDCHAIN (9) | February 28, 2001 |
Main index | Section 9 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
“ | Today, the Unix equivalent of a power drill would have 20 dials and switches, come with a nonstandard plug, require the user to hand-wind the motor coil, and not accept 3/8" or 7/8" drill bits (though this would be documented in the BUGS section of its instruction manual). | ” |
— The Unix Haters' handbook |