libnv: Remove nvlist argument from cnvlist_{take,free}_* functions.

All information which are need for those operations is already stored in
the cookie.

We decided not to bump libnv version because this API is not used yet in the
base system.

Reviewed by:	pjd
This commit is contained in:
Mariusz Zaborski 2018-06-18 21:26:58 +00:00
parent 30665f3c42
commit d82e41b6b8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=335343
4 changed files with 76 additions and 70 deletions

View file

@ -575,7 +575,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_bool)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
ATF_REQUIRE_EQ(cnvlist_take_bool(nvl, cookie), value); ATF_REQUIRE_EQ(cnvlist_take_bool(cookie), value);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -618,7 +618,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_number)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
ATF_REQUIRE_EQ(cnvlist_take_number(nvl, cookie), value); ATF_REQUIRE_EQ(cnvlist_take_number(cookie), value);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -662,7 +662,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_string)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
out_string = cnvlist_take_string(nvl, cookie); out_string = cnvlist_take_string(cookie);
ATF_REQUIRE(out_string != NULL); ATF_REQUIRE(out_string != NULL);
ATF_REQUIRE_EQ(strcmp(out_string, value), 0); ATF_REQUIRE_EQ(strcmp(out_string, value), 0);
@ -725,7 +725,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_nvlist)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
result = cnvlist_take_nvlist(nvl, cookie); result = cnvlist_take_nvlist(cookie);
ATF_REQUIRE(!nvlist_exists_nvlist(nvl, key)); ATF_REQUIRE(!nvlist_exists_nvlist(nvl, key));
ATF_REQUIRE(result == value); ATF_REQUIRE(result == value);
@ -784,7 +784,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_bool_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
out_array = cnvlist_take_bool_array(nvl, cookie, &nitems); out_array = cnvlist_take_bool_array(cookie, &nitems);
ATF_REQUIRE_EQ(nitems, 16); ATF_REQUIRE_EQ(nitems, 16);
ATF_REQUIRE(out_array != NULL); ATF_REQUIRE(out_array != NULL);
for (i = 0; i < 16; i++) for (i = 0; i < 16; i++)
@ -836,7 +836,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_number_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
out_array = cnvlist_take_number_array(nvl, cookie, &nitems); out_array = cnvlist_take_number_array(cookie, &nitems);
ATF_REQUIRE(out_array != NULL); ATF_REQUIRE(out_array != NULL);
ATF_REQUIRE_EQ(nitems, 16); ATF_REQUIRE_EQ(nitems, 16);
@ -885,7 +885,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_string_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
out_array = cnvlist_take_string_array(nvl, cookie, &nitems); out_array = cnvlist_take_string_array(cookie, &nitems);
ATF_REQUIRE_EQ(nitems, 4); ATF_REQUIRE_EQ(nitems, 4);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
ATF_REQUIRE(out_array[i] != NULL); ATF_REQUIRE(out_array[i] != NULL);
@ -957,7 +957,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_nvlist_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
result = cnvlist_take_nvlist_array(nvl, cookie, &num_items); result = cnvlist_take_nvlist_array(cookie, &num_items);
ATF_REQUIRE(result != NULL); ATF_REQUIRE(result != NULL);
ATF_REQUIRE_EQ(num_items, 8); ATF_REQUIRE_EQ(num_items, 8);
@ -1022,7 +1022,7 @@ ATF_TEST_CASE_BODY(cnvlist_take_binary)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
out_binary = cnvlist_take_binary(nvl, cookie, &out_size); out_binary = cnvlist_take_binary(cookie, &out_size);
ATF_REQUIRE_EQ(out_size, in_size); ATF_REQUIRE_EQ(out_size, in_size);
ATF_REQUIRE_EQ(memcmp(in_binary, out_binary, out_size), 0); ATF_REQUIRE_EQ(memcmp(in_binary, out_binary, out_size), 0);
@ -1069,7 +1069,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_bool)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_bool(nvl, cookie); cnvlist_free_bool(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1112,7 +1112,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_number)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_number(nvl, cookie); cnvlist_free_number(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1155,7 +1155,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_string)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_string(nvl, cookie); cnvlist_free_string(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1215,7 +1215,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_nvlist)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_nvlist(nvl, cookie); cnvlist_free_nvlist(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1262,7 +1262,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_binary)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_binary(nvl, cookie); cnvlist_free_binary(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1309,7 +1309,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_bool_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_bool_array(nvl, cookie); cnvlist_free_bool_array(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1354,7 +1354,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_number_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_number_array(nvl, cookie); cnvlist_free_number_array(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1396,7 +1396,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_string_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_string_array(nvl, cookie); cnvlist_free_string_array(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);
@ -1459,7 +1459,7 @@ ATF_TEST_CASE_BODY(cnvlist_free_nvlist_array)
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0); ATF_REQUIRE_EQ(strcmp(key, nvlist_next(nvl, &type, &cookie)), 0);
cnvlist_free_nvlist_array(nvl, cookie); cnvlist_free_nvlist_array(cookie);
cookie = NULL; cookie = NULL;
ATF_REQUIRE_EQ(nvlist_error(nvl), 0); ATF_REQUIRE_EQ(nvlist_error(nvl), 0);

View file

@ -66,52 +66,52 @@
.Fn cnvlist_get_descriptor_array "const void *cookie" "size_t *nitemsp" .Fn cnvlist_get_descriptor_array "const void *cookie" "size_t *nitemsp"
.\" .\"
.Ft bool .Ft bool
.Fn cnvlist_take_bool "nvlist_t *nvl" "void *cookie" .Fn cnvlist_take_bool "void *cookie"
.Ft uint64_t .Ft uint64_t
.Fn cnvlist_take_number "nvlist_t *nvl" "void *cookie" .Fn cnvlist_take_number "void *cookie"
.Ft "const char *" .Ft "const char *"
.Fn cnvlist_take_string "nvlist_t *nvl" "void *cookie" .Fn cnvlist_take_string "void *cookie"
.Ft "const nvlist_t *" .Ft "const nvlist_t *"
.Fn cnvlist_take_nvlist "nvlist_t *nvl" "void *cookie" .Fn cnvlist_take_nvlist "void *cookie"
.Ft "const void *" .Ft "const void *"
.Fn cnvlist_take_binary "nvlist_t *nvl" "void *cookie" "size_t *sizep" .Fn cnvlist_take_binary "void *cookie" "size_t *sizep"
.Ft "const bool *" .Ft "const bool *"
.Fn cnvlist_take_bool_array "nvlist_t *nvl" "void *cookie" "size_t *nitemsp" .Fn cnvlist_take_bool_array "void *cookie" "size_t *nitemsp"
.Ft "const uint64_t *" .Ft "const uint64_t *"
.Fn cnvlist_take_number_array "nvlist_t *nvl" "void *cookie" "size_t *nitemsp" .Fn cnvlist_take_number_array "void *cookie" "size_t *nitemsp"
.Ft "const char * const *" .Ft "const char * const *"
.Fn cnvlist_take_string_array "nvlist_t *nvl" "void *cookie" "size_t *nitemsp" .Fn cnvlist_take_string_array "void *cookie" "size_t *nitemsp"
.Ft "const nvlist_t * const *" .Ft "const nvlist_t * const *"
.Fn cnvlist_take_nvlist_array "nvlist_t *nvl" "void *cookie" "size_t *nitemsp" .Fn cnvlist_take_nvlist_array "void *cookie" "size_t *nitemsp"
.Ft int .Ft int
.Fn cnvlist_take_descriptor "nvlist_t *nvl" "void *cookie" .Fn cnvlist_take_descriptor "void *cookie"
.Ft "const int *" .Ft "const int *"
.Fn cnvlist_take_descriptor_array "nvlist_t *nvl" "void *cookie" "size_t *nitemsp" .Fn cnvlist_take_descriptor_array "void *cookie" "size_t *nitemsp"
.\" .\"
.Ft void .Ft void
.Fn cnvlist_free_null "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_null "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_bool "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_bool "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_number "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_number "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_string "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_string "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_nvlist "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_nvlist "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_descriptor "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_descriptor "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_binary "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_binary "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_bool_array "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_bool_array "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_number_array "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_number_array "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_string_array "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_string_array "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_nvlist_array "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_nvlist_array "void *cookie"
.Ft void .Ft void
.Fn cnvlist_free_descriptor_array "nvlist_t *nvl" "void *cookie" .Fn cnvlist_free_descriptor_array "void *cookie"
.Sh DESCRIPTION .Sh DESCRIPTION
The The
.Nm libnv .Nm libnv
@ -192,8 +192,8 @@ while (nvlist_next(nvl, &type, &cookie) != NULL) {
} }
} }
name = cnvlist_take_string(nvl, scookie); name = cnvlist_take_string(scookie);
cnvlist_free_bool(nvl, bcookie); cnvlist_free_bool(bcookie);
printf("test2: %s\\n", name); printf("test2: %s\\n", name);
free(name); free(name);

View file

@ -124,14 +124,16 @@ cnvlist_get_binary(const void *cookie, size_t *sizep)
#define CNVLIST_TAKE(ftype, type, NVTYPE) \ #define CNVLIST_TAKE(ftype, type, NVTYPE) \
ftype \ ftype \
cnvlist_take_##type(nvlist_t *nvl, void *cookie) \ cnvlist_take_##type(void *cookie) \
{ \ { \
ftype value; \ ftype value; \
nvlist_t *nvl; \
\ \
if (nvpair_type(cookie) != NV_TYPE_##NVTYPE) { \ if (nvpair_type(cookie) != NV_TYPE_##NVTYPE) { \
nvlist_report_missing(NV_TYPE_##NVTYPE, \ nvlist_report_missing(NV_TYPE_##NVTYPE, \
nvpair_name(cookie)); \ nvpair_name(cookie)); \
} \ } \
nvl = nvpair_nvlist(cookie); \
value = (ftype)(intptr_t)nvpair_get_##type(cookie); \ value = (ftype)(intptr_t)nvpair_get_##type(cookie); \
nvlist_remove_nvpair(nvl, cookie); \ nvlist_remove_nvpair(nvl, cookie); \
nvpair_free_structure(cookie); \ nvpair_free_structure(cookie); \
@ -150,14 +152,16 @@ CNVLIST_TAKE(int, descriptor, DESCRIPTOR)
#define CNVLIST_TAKE_ARRAY(ftype, type, NVTYPE) \ #define CNVLIST_TAKE_ARRAY(ftype, type, NVTYPE) \
ftype \ ftype \
cnvlist_take_##type(nvlist_t *nvl, void *cookie, size_t *nitemsp) \ cnvlist_take_##type(void *cookie, size_t *nitemsp) \
{ \ { \
ftype value; \ ftype value; \
nvlist_t *nvl; \
\ \
if (nvpair_type(cookie) != NV_TYPE_##NVTYPE) { \ if (nvpair_type(cookie) != NV_TYPE_##NVTYPE) { \
nvlist_report_missing(NV_TYPE_##NVTYPE, \ nvlist_report_missing(NV_TYPE_##NVTYPE, \
nvpair_name(cookie)); \ nvpair_name(cookie)); \
} \ } \
nvl = nvpair_nvlist(cookie); \
value = (ftype)(intptr_t)nvpair_get_##type(cookie, nitemsp); \ value = (ftype)(intptr_t)nvpair_get_##type(cookie, nitemsp); \
nvlist_remove_nvpair(nvl, cookie); \ nvlist_remove_nvpair(nvl, cookie); \
nvpair_free_structure(cookie); \ nvpair_free_structure(cookie); \
@ -175,12 +179,14 @@ CNVLIST_TAKE_ARRAY(int *, descriptor_array, DESCRIPTOR_ARRAY);
#undef CNVLIST_TAKE_ARRAY #undef CNVLIST_TAKE_ARRAY
void * void *
cnvlist_take_binary(nvlist_t *nvl, void *cookie, size_t *sizep) cnvlist_take_binary(void *cookie, size_t *sizep)
{ {
void *value; void *value;
nvlist_t *nvl;
if (nvpair_type(cookie) != NV_TYPE_BINARY) if (nvpair_type(cookie) != NV_TYPE_BINARY)
nvlist_report_missing(NV_TYPE_BINARY, nvpair_name(cookie)); nvlist_report_missing(NV_TYPE_BINARY, nvpair_name(cookie));
nvl = nvpair_nvlist(cookie);
value = (void *)(intptr_t)nvpair_get_binary(cookie, sizep); value = (void *)(intptr_t)nvpair_get_binary(cookie, sizep);
nvlist_remove_nvpair(nvl, cookie); nvlist_remove_nvpair(nvl, cookie);
nvpair_free_structure(cookie); nvpair_free_structure(cookie);
@ -190,10 +196,10 @@ cnvlist_take_binary(nvlist_t *nvl, void *cookie, size_t *sizep)
#define CNVLIST_FREE(type) \ #define CNVLIST_FREE(type) \
void \ void \
cnvlist_free_##type(nvlist_t *nvl, void *cookie) \ cnvlist_free_##type(void *cookie) \
{ \ { \
\ \
nvlist_free_nvpair(nvl, cookie); \ nvlist_free_nvpair(nvpair_nvlist(cookie), cookie); \
} }
CNVLIST_FREE(bool) CNVLIST_FREE(bool)

View file

@ -82,18 +82,18 @@ const int *cnvlist_get_descriptor_array(const void *cookie, size_t *nitemsp);
* The caller is responsible for freeing received data. * The caller is responsible for freeing received data.
*/ */
bool cnvlist_take_bool(nvlist_t *nvl, void *cookie); bool cnvlist_take_bool(void *cookie);
uint64_t cnvlist_take_number(nvlist_t *nvl, void *cookie); uint64_t cnvlist_take_number(void *cookie);
char *cnvlist_take_string(nvlist_t *nvl, void *cookie); char *cnvlist_take_string(void *cookie);
nvlist_t *cnvlist_take_nvlist(nvlist_t *nvl, void *cookie); nvlist_t *cnvlist_take_nvlist(void *cookie);
void *cnvlist_take_binary(nvlist_t *nvl, void *cookie, size_t *sizep); void *cnvlist_take_binary(void *cookie, size_t *sizep);
bool *cnvlist_take_bool_array(nvlist_t *nvl, void *cookie, size_t *nitemsp); bool *cnvlist_take_bool_array(void *cookie, size_t *nitemsp);
uint64_t *cnvlist_take_number_array(nvlist_t *nvl, void *cookie, size_t *nitemsp); uint64_t *cnvlist_take_number_array(void *cookie, size_t *nitemsp);
char **cnvlist_take_string_array(nvlist_t *nvl, void *cookie, size_t *nitemsp); char **cnvlist_take_string_array(void *cookie, size_t *nitemsp);
nvlist_t **cnvlist_take_nvlist_array(nvlist_t *nvl, void *cookie, size_t *nitemsp); nvlist_t **cnvlist_take_nvlist_array(void *cookie, size_t *nitemsp);
#ifndef _KERNEL #ifndef _KERNEL
int cnvlist_take_descriptor(nvlist_t *nvl, void *cookie); int cnvlist_take_descriptor(void *cookie);
int *cnvlist_take_descriptor_array(nvlist_t *nvl, void *cookie, size_t *nitemsp); int *cnvlist_take_descriptor_array(void *cookie, size_t *nitemsp);
#endif #endif
/* /*
@ -101,18 +101,18 @@ int *cnvlist_take_descriptor_array(nvlist_t *nvl, void *cookie, size_t *nitem
* and frees memory associated with it. * and frees memory associated with it.
*/ */
void cnvlist_free_bool(nvlist_t *nvl, void *cookie); void cnvlist_free_bool(void *cookie);
void cnvlist_free_number(nvlist_t *nvl, void *cookie); void cnvlist_free_number(void *cookie);
void cnvlist_free_string(nvlist_t *nvl, void *cookie); void cnvlist_free_string(void *cookie);
void cnvlist_free_nvlist(nvlist_t *nvl, void *cookie); void cnvlist_free_nvlist(void *cookie);
void cnvlist_free_binary(nvlist_t *nvl, void *cookie); void cnvlist_free_binary(void *cookie);
void cnvlist_free_bool_array(nvlist_t *nvl, void *cookie); void cnvlist_free_bool_array(void *cookie);
void cnvlist_free_number_array(nvlist_t *nvl, void *cookie); void cnvlist_free_number_array(void *cookie);
void cnvlist_free_string_array(nvlist_t *nvl, void *cookie); void cnvlist_free_string_array(void *cookie);
void cnvlist_free_nvlist_array(nvlist_t *nvl, void *cookie); void cnvlist_free_nvlist_array(void *cookie);
#ifndef _KERNEL #ifndef _KERNEL
void cnvlist_free_descriptor(nvlist_t *nvl, void *cookie); void cnvlist_free_descriptor(void *cookie);
void cnvlist_free_descriptor_array(nvlist_t *nvl, void *cookie); void cnvlist_free_descriptor_array(void *cookie);
#endif #endif
__END_DECLS __END_DECLS