Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
Copyright 2026 Oxide Computer Company
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
cc [ flag... ] file... -lnvpair [ library... ] #include <libnvpair.h>
The library defines four opaque handles: nvpair_t
handle to a name-value pair
handle to a list of name-value pairs
handle to a pluggable allocator
handle to pluggable allocator operations
The library supports the following operations:
Allocate and free an nvlist_t.
Specify the allocater to be used when manipulating an nvlist_t.
Add and remove an nvpair_t from a list.
Search nvlist_t for a specified name pair.
Pack an nvlist_t into a contiguous buffer.
Expand a packed nvlist into a searchable nvlist_t.
When items are retrieved from a list, the memory associated with them is owned by the nvlist_t itself and therefore their lifetimes are tied together. Calling nvlist_free(3NVPAIR) will free that data, after which any pointers obtained by having called an nvlist lookup function must not be used.
Conversely, when adding items to an nvlist_t they are copied into the list and therefore it is up to the caller to free any memory for the original object. For example, if you allocate memory for a char * and add it to a nvlist_t with nvlist_add_string(3NVPAIR), when the nvlist_t is freed with nvlist_free(3NVPAIR) the originally allocated char * will not be freed along with it. See nvlist_add_nvlist(3NVPAIR) for more information.
| nvlist_add_boolean nvlist_add_boolean_value |
| nvlist_add_boolean_array nvlist_add_byte |
| nvlist_add_byte_array nvlist_add_double |
| nvlist_add_int8 nvlist_add_int8_array |
| nvlist_add_int16 nvlist_add_int16_array |
| nvlist_add_int32 nvlist_add_int32_array |
| nvlist_add_int64 nvlist_add_int64_array |
| nvlist_add_nvlist nvlist_add_nvlist_array |
| nvlist_add_nvpair nvlist_add_string |
| nvlist_add_string_array nvlist_add_uint8 |
| nvlist_add_uint8_array nvlist_add_uint16 |
| nvlist_add_uint16_array nvlist_add_uint32 |
| nvlist_add_uint32_array nvlist_add_uint64 |
| nvlist_add_uint64_array nvlist_alloc |
| nvlist_dup nvlist_empty |
| nvlist_exists |
| nvlist_free nvlist_lookup_boolean |
| nvlist_lookup_boolean_value nvlist_lookup_boolean_array |
| nvlist_lookup_byte nvlist_lookup_byte_array |
| nvlist_lookup_double nvlist_lookup_int8 |
| nvlist_lookup_int8_array nvlist_lookup_int16 |
| nvlist_lookup_int16_array nvlist_lookup_int32 |
| nvlist_lookup_int32_array nvlist_lookup_int64 |
| nvlist_lookup_int64_array nvlist_lookup_nvlist |
| nvlist_lookup_nvlist_array nvlist_lookup_nv_alloc |
| nvlist_lookup_nvpair nvlist_lookup_pairs |
| nvlist_lookup_string nvlist_lookup_string_array |
| nvlist_lookup_uint8 nvlist_lookup_uint8_array |
| nvlist_lookup_uint16 nvlist_lookup_uint16_array |
| nvlist_lookup_uint32 nvlist_lookup_uint32_array |
| nvlist_lookup_uint64 nvlist_lookup_uint64_array |
| nvlist_merge nvlist_next_nvpair |
| nvlist_pack nvlist_remove |
| nvlist_remove_all nvlist_size |
| nvlist_unpack nvlist_xalloc |
| nvlist_xdup nvlist_xpack |
| nvlist_xunpack nvpair_name |
| nvpair_type nvpair_value_boolean_array |
| nvpair_value_boolean_value nvpair_value_byte |
| nvpair_value_byte_array nvpair_value_double |
| nvpair_value_int8 nvpair_value_int8_array |
| nvpair_value_int16 nvpair_value_int16_array |
| nvpair_value_int32 nvpair_value_int32_array |
| nvpair_value_int64 nvpair_value_int64_array |
| nvpair_value_nvlist nvpair_value_nvlist_array |
| nvpair_value_string nvpair_value_string_array |
| nvpair_value_uint8 nvpair_value_uint8_array |
| nvpair_value_uint16 nvpair_value_uint16_array |
| nvpair_value_uint32 nvpair_value_uint32_array |
| nvpair_value_uint64 nvpair_value_uint64_array |
| nv_alloc_init nv_alloc_fini |
| nv_alloc_reset |
shared object
64-bit shared object
| ATTRIBUTE TYPE ATTRIBUTE VALUE |
| Interface Stability Committed |
| MT-Level MT-Safe |