NAME | SYNOPSIS | INTERFACE LEVEL | PARAMETERS | DESCRIPTION | RETURN VALUES | CONTEXT
#include <sys/nvpair.h>int nvlist_alloc(nvlist_t **nvlp, uint_t nvflag, int kmflag);
Solaris DDI specific (Solaris DDI)
Address of a pointer to list of name-value pairs (nvlist_t).
Specify bit fields defining nvlist_t properties:
The nvpair names are unique.
Name-data type combination is unique
Kernel memory allocation policy, either KM_SLEEP or KM_NOSLEEP.
The nvlist_t to be processed.
Pointer to buffer to contain the encoded size.
Address of buffer to pack nvlist into. Must be 8-byte aligned. If NULL, library will allocate memory.
Buffer containing packed nvlist_t.
Size of buffer bufp or buf points to.
Encoding method for packing.
The nvlist_alloc() function allocates a new name-value pair list and updates nvlp to point to the handle. The argument nvflag specifies nvlist_t properties to remain persistent across packing, unpacking, and duplication.
The nvlist_free() function frees a name-value pair list.
The nvlist_size() function returns the minimum size of a contiguous buffer large enough to pack nvl. The encoding parameter specifies the method of encoding when packing nvl. Supported encoding methods are:
Straight bcopy() as described in bcopy(9F).
Use XDR encoding, suitable for sending to another host.
The nvlist_pack() function packs nvl into contiguous memory starting at *bufp. The encoding parameter specifies the method of encoding (see above).
If *bufp is not NULL, *bufp is expected to be a caller-allocated buffer of size *buflen. The kmflag argument is ignored.
If *bufp is NULL, the library will allocate memory and update *bufp to point to the memory and update *buflen to contain the size of the allocated memory. The value of kmflag indicates the memory allocation policy
The nvlist_unpack() function takes a buffer with a packed nvlist_t and unpacks it into a searchable nvlist_t. The library allocates memory for nvlist_t. The caller is responsible for freeing the memory by calling nvlist_free().
The nvlist_dup() function makes a copy of nvl and updates nvlp to point to the copy.
For nvlist_alloc(), nvlist_dup():
success
invalid argument
insufficient memory
For nvlist_pack(), nvlist_unpack():
success
invalid argument
insufficient memory
encode/decode error
encode/decode method not supported
For nvlist_size():
success
invalid argument
The nvlist_alloc(), nvlist_pack(), nvlist_unpack(), and nvlist_dup() functions can be called from interrupt context only if the KM_NOSLEEP flag is set. They can be called from user context with any valid flag.
NAME | SYNOPSIS | INTERFACE LEVEL | PARAMETERS | DESCRIPTION | RETURN VALUES | CONTEXT