Lines Matching refs:nvp

90  *   | nvp (nvpair_t)      |      | nvp (nvpair_t)    |
106 * | nvp (nvpair_t) | | nvp (nvpair_t) |
139 #define EMBEDDED_NVL(nvp) ((nvlist_t *)(void *)NVP_VALUE(nvp))
140 #define EMBEDDED_NVL_ARRAY(nvp) ((nvlist_t **)(void *)NVP_VALUE(nvp))
142 #define NVP_VALOFF(nvp) (NV_ALIGN(sizeof (nvpair_t) + (nvp)->nvp_name_sz))
143 #define NVPAIR2I_NVP(nvp) \
144 ((i_nvp_t *)((size_t)(nvp) - offsetof(i_nvp_t, nvi_nvp)))
198 nv_mem_zalloc(nvpriv_t *nvp, size_t size)
200 nv_alloc_t *nva = nvp->nvp_nva;
210 nv_mem_free(nvpriv_t *nvp, void *buf, size_t size)
212 nv_alloc_t *nva = nvp->nvp_nva;
463 nvt_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp)
474 char *name = NVP_NAME(nvp);
483 if (nvt_nvpair_match(&e->nvi_nvp, nvp, nvl->nvl_flag)) {
501 nvt_add_nvpair(nvlist_t *nvl, nvpair_t *nvp)
517 int err = nvt_remove_nvpair(nvl, nvp);
529 char *name = NVP_NAME(nvp);
537 i_nvp_t *new_entry = NVPAIR2I_NVP(nvp);
607 nvpair_t *nvp;
618 nvp = &buf->nvi_nvp;
619 nvp->nvp_size = len;
621 return (nvp);
628 nvp_buf_free(nvlist_t *nvl, nvpair_t *nvp)
631 size_t nvsize = nvp->nvp_size + offsetof(i_nvp_t, nvi_nvp);
633 nv_mem_free(priv, NVPAIR2I_NVP(nvp), nvsize);
640 nvp_buf_link(nvlist_t *nvl, nvpair_t *nvp)
643 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
659 nvp_buf_unlink(nvlist_t *nvl, nvpair_t *nvp)
662 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
735 i_validate_nvpair_name(nvpair_t *nvp)
737 if ((nvp->nvp_name_sz <= 0) ||
738 (nvp->nvp_size < NVP_SIZE_CALC(nvp->nvp_name_sz, 0)))
742 if (NVP_NAME(nvp)[nvp->nvp_name_sz - 1] != '\0')
745 return (strlen(NVP_NAME(nvp)) == nvp->nvp_name_sz - 1 ? 0 : EFAULT);
779 i_validate_nvpair(nvpair_t *nvp)
781 data_type_t type = NVP_TYPE(nvp);
785 if (i_validate_nvpair_name(nvp) != 0)
788 if (i_validate_nvpair_value(type, NVP_NELEM(nvp), NVP_VALUE(nvp)) != 0)
795 size2 = i_get_value_size(type, NVP_VALUE(nvp), NVP_NELEM(nvp));
796 size1 = nvp->nvp_size - NVP_VALOFF(nvp);
813 nvpair_t *nvp = &curr->nvi_nvp;
816 if ((err = nvlist_add_common(dnvl, NVP_NAME(nvp), NVP_TYPE(nvp),
817 NVP_NELEM(nvp), NVP_VALUE(nvp))) != 0)
829 nvpair_free(nvpair_t *nvp)
831 switch (NVP_TYPE(nvp)) {
833 nvlist_free(EMBEDDED_NVL(nvp));
836 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
839 for (i = 0; i < NVP_NELEM(nvp); i++)
866 nvpair_t *nvp = &curr->nvi_nvp;
869 nvpair_free(nvp);
870 nvp_buf_free(nvl, nvp);
883 nvlist_contains_nvp(nvlist_t *nvl, nvpair_t *nvp)
888 if (nvp == NULL)
892 if (&curr->nvi_nvp == nvp)
944 nvpair_t *nvp;
945 while ((nvp = nvt_lookup_name(nvl, name)) != NULL) {
946 VERIFY0(nvlist_remove_nvpair(nvl, nvp));
962 nvpair_t *nvp = nvt_lookup_name_type(nvl, name, type);
963 if (nvp == NULL)
966 return (nvlist_remove_nvpair(nvl, nvp));
970 nvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp)
972 if (nvl == NULL || nvp == NULL)
975 int err = nvt_remove_nvpair(nvl, nvp);
979 nvp_buf_unlink(nvl, nvp);
980 nvpair_free(nvp);
981 nvp_buf_free(nvl, nvp);
1136 nvpair_t *nvp;
1183 if (name_sz >= 1ULL << (sizeof (nvp->nvp_name_sz) * 8 - 1))
1188 if ((nvp = nvp_buf_alloc(nvl, nvp_sz)) == NULL)
1191 ASSERT(nvp->nvp_size == nvp_sz);
1192 nvp->nvp_name_sz = name_sz;
1193 nvp->nvp_value_elem = nelem;
1194 nvp->nvp_type = type;
1195 bcopy(name, NVP_NAME(nvp), name_sz);
1202 char *buf = NVP_VALUE(nvp);
1216 nvlist_t *nnvl = EMBEDDED_NVL(nvp);
1220 nvp_buf_free(nvl, nvp);
1227 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
1237 nvpair_free(nvp);
1238 nvp_buf_free(nvl, nvp);
1247 bcopy(data, NVP_VALUE(nvp), value_sz);
1256 err = nvt_add_nvpair(nvl, nvp);
1258 nvpair_free(nvp);
1259 nvp_buf_free(nvl, nvp);
1262 nvp_buf_link(nvl, nvp);
1435 nvlist_next_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1444 curr = NVPAIR2I_NVP(nvp);
1447 * Ensure that nvp is a valid nvpair on this nvlist.
1449 * have to walk the list to determine if nvp is still on the list.
1451 if (nvp == NULL)
1453 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1464 nvlist_prev_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1473 curr = NVPAIR2I_NVP(nvp);
1475 if (nvp == NULL)
1477 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1500 nvpair_name(nvpair_t *nvp)
1502 return (NVP_NAME(nvp));
1506 nvpair_type(nvpair_t *nvp)
1508 return (NVP_TYPE(nvp));
1512 nvpair_type_is_array(nvpair_t *nvp)
1514 data_type_t type = NVP_TYPE(nvp);
1534 nvpair_value_common(nvpair_t *nvp, data_type_t type, uint_t *nelem, void *data)
1536 if (nvp == NULL || nvpair_type(nvp) != type)
1565 bcopy(NVP_VALUE(nvp), data,
1575 *(void **)data = (void *)NVP_VALUE(nvp);
1594 if ((*nelem = NVP_NELEM(nvp)) != 0)
1595 *(void **)data = (void *)NVP_VALUE(nvp);
1617 nvpair_t *nvp = nvt_lookup_name_type(nvl, name, type);
1618 if (nvp == NULL)
1621 return (nvpair_value_common(nvp, type, nelem, data));
1888 nvpair_t *nvp;
1993 for (nvp = nvlist_next_nvpair(nvl, NULL); nvp != NULL;
1994 nvp = nvlist_next_nvpair(nvl, nvp)) {
1997 if (strncmp(np, nvpair_name(nvp), n) ||
1998 (strlen(nvpair_name(nvp)) != n))
2002 if (idxp && !nvpair_type_is_array(nvp))
2006 * Full match found, return nvp and idx if this
2011 *ret = nvp;
2022 if (nvpair_type(nvp) == DATA_TYPE_NVLIST) {
2023 nvl = EMBEDDED_NVL(nvp);
2025 } else if (nvpair_type(nvp) == DATA_TYPE_NVLIST_ARRAY) {
2026 (void) nvpair_value_nvlist_array(nvp,
2037 if (nvp == NULL)
2072 nvpair_t *nvp;
2080 nvp = &curr->nvi_nvp;
2082 if (strcmp(name, NVP_NAME(nvp)) == 0)
2090 nvpair_value_boolean_value(nvpair_t *nvp, boolean_t *val)
2092 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_VALUE, NULL, val));
2096 nvpair_value_byte(nvpair_t *nvp, uchar_t *val)
2098 return (nvpair_value_common(nvp, DATA_TYPE_BYTE, NULL, val));
2102 nvpair_value_int8(nvpair_t *nvp, int8_t *val)
2104 return (nvpair_value_common(nvp, DATA_TYPE_INT8, NULL, val));
2108 nvpair_value_uint8(nvpair_t *nvp, uint8_t *val)
2110 return (nvpair_value_common(nvp, DATA_TYPE_UINT8, NULL, val));
2114 nvpair_value_int16(nvpair_t *nvp, int16_t *val)
2116 return (nvpair_value_common(nvp, DATA_TYPE_INT16, NULL, val));
2120 nvpair_value_uint16(nvpair_t *nvp, uint16_t *val)
2122 return (nvpair_value_common(nvp, DATA_TYPE_UINT16, NULL, val));
2126 nvpair_value_int32(nvpair_t *nvp, int32_t *val)
2128 return (nvpair_value_common(nvp, DATA_TYPE_INT32, NULL, val));
2132 nvpair_value_uint32(nvpair_t *nvp, uint32_t *val)
2134 return (nvpair_value_common(nvp, DATA_TYPE_UINT32, NULL, val));
2138 nvpair_value_int64(nvpair_t *nvp, int64_t *val)
2140 return (nvpair_value_common(nvp, DATA_TYPE_INT64, NULL, val));
2144 nvpair_value_uint64(nvpair_t *nvp, uint64_t *val)
2146 return (nvpair_value_common(nvp, DATA_TYPE_UINT64, NULL, val));
2151 nvpair_value_double(nvpair_t *nvp, double *val)
2153 return (nvpair_value_common(nvp, DATA_TYPE_DOUBLE, NULL, val));
2158 nvpair_value_string(nvpair_t *nvp, char **val)
2160 return (nvpair_value_common(nvp, DATA_TYPE_STRING, NULL, val));
2164 nvpair_value_nvlist(nvpair_t *nvp, nvlist_t **val)
2166 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST, NULL, val));
2170 nvpair_value_boolean_array(nvpair_t *nvp, boolean_t **val, uint_t *nelem)
2172 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_ARRAY, nelem, val));
2176 nvpair_value_byte_array(nvpair_t *nvp, uchar_t **val, uint_t *nelem)
2178 return (nvpair_value_common(nvp, DATA_TYPE_BYTE_ARRAY, nelem, val));
2182 nvpair_value_int8_array(nvpair_t *nvp, int8_t **val, uint_t *nelem)
2184 return (nvpair_value_common(nvp, DATA_TYPE_INT8_ARRAY, nelem, val));
2188 nvpair_value_uint8_array(nvpair_t *nvp, uint8_t **val, uint_t *nelem)
2190 return (nvpair_value_common(nvp, DATA_TYPE_UINT8_ARRAY, nelem, val));
2194 nvpair_value_int16_array(nvpair_t *nvp, int16_t **val, uint_t *nelem)
2196 return (nvpair_value_common(nvp, DATA_TYPE_INT16_ARRAY, nelem, val));
2200 nvpair_value_uint16_array(nvpair_t *nvp, uint16_t **val, uint_t *nelem)
2202 return (nvpair_value_common(nvp, DATA_TYPE_UINT16_ARRAY, nelem, val));
2206 nvpair_value_int32_array(nvpair_t *nvp, int32_t **val, uint_t *nelem)
2208 return (nvpair_value_common(nvp, DATA_TYPE_INT32_ARRAY, nelem, val));
2212 nvpair_value_uint32_array(nvpair_t *nvp, uint32_t **val, uint_t *nelem)
2214 return (nvpair_value_common(nvp, DATA_TYPE_UINT32_ARRAY, nelem, val));
2218 nvpair_value_int64_array(nvpair_t *nvp, int64_t **val, uint_t *nelem)
2220 return (nvpair_value_common(nvp, DATA_TYPE_INT64_ARRAY, nelem, val));
2224 nvpair_value_uint64_array(nvpair_t *nvp, uint64_t **val, uint_t *nelem)
2226 return (nvpair_value_common(nvp, DATA_TYPE_UINT64_ARRAY, nelem, val));
2230 nvpair_value_string_array(nvpair_t *nvp, char ***val, uint_t *nelem)
2232 return (nvpair_value_common(nvp, DATA_TYPE_STRING_ARRAY, nelem, val));
2236 nvpair_value_nvlist_array(nvpair_t *nvp, nvlist_t ***val, uint_t *nelem)
2238 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST_ARRAY, nelem, val));
2242 nvpair_value_hrtime(nvpair_t *nvp, hrtime_t *val)
2244 return (nvpair_value_common(nvp, DATA_TYPE_HRTIME, NULL, val));
2251 nvlist_add_nvpair(nvlist_t *nvl, nvpair_t *nvp)
2253 if (nvl == NULL || nvp == NULL)
2256 return (nvlist_add_common(nvl, NVP_NAME(nvp), NVP_TYPE(nvp),
2257 NVP_NELEM(nvp), NVP_VALUE(nvp)));
2349 nvpair_t *nvp;
2365 if ((nvp = nvp_buf_alloc(nvl, nvsize)) == NULL)
2368 if ((err = nvs->nvs_ops->nvs_nvp_op(nvs, nvp)) != 0) {
2369 nvp_buf_free(nvl, nvp);
2373 if (i_validate_nvpair(nvp) != 0) {
2374 nvpair_free(nvp);
2375 nvp_buf_free(nvl, nvp);
2379 err = nvt_add_nvpair(nvl, nvp);
2381 nvpair_free(nvp);
2382 nvp_buf_free(nvl, nvp);
2385 nvp_buf_link(nvl, nvp);
2491 nvs_embedded_nvl_array(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2493 size_t nelem = NVP_NELEM(nvp);
2494 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
2511 nvpair_free(nvp);
2877 nvpair_native_embedded(nvstream_t *nvs, nvpair_t *nvp)
2882 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2892 return (nvs_embedded(nvs, EMBEDDED_NVL(nvp)));
2896 nvpair_native_embedded_array(nvstream_t *nvs, nvpair_t *nvp)
2900 char *value = native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp);
2901 size_t len = NVP_NELEM(nvp) * sizeof (uint64_t);
2911 for (i = 0; i < NVP_NELEM(nvp); i++) {
2923 return (nvs_embedded_nvl_array(nvs, nvp, NULL));
2927 nvpair_native_string_array(nvstream_t *nvs, nvpair_t *nvp)
2933 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2939 bzero(strp, NVP_NELEM(nvp) * sizeof (uint64_t));
2943 char **strp = (void *)NVP_VALUE(nvp);
2944 char *buf = ((char *)strp + NVP_NELEM(nvp) * sizeof (uint64_t));
2947 for (i = 0; i < NVP_NELEM(nvp); i++) {
2957 nvs_native_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
2971 if (native_cp(nvs, nvp, nvp->nvp_size) != 0)
2979 if (i_validate_nvpair_name(nvp) != 0)
2982 type = NVP_TYPE(nvp);
2989 if ((value_sz = i_get_value_size(type, NULL, NVP_NELEM(nvp))) < 0)
2992 if (NVP_SIZE_CALC(nvp->nvp_name_sz, value_sz) > nvp->nvp_size)
2997 ret = nvpair_native_embedded(nvs, nvp);
3000 ret = nvpair_native_embedded_array(nvs, nvp);
3003 nvpair_native_string_array(nvs, nvp);
3013 nvs_native_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3015 uint64_t nvp_sz = nvp->nvp_size;
3017 switch (NVP_TYPE(nvp)) {
3021 if (nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize) != 0)
3030 if (nvs_embedded_nvl_array(nvs, nvp, &nvsize) != 0)
3049 nvs_native_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3053 return (nvs_native_nvp_op(nvs, nvp));
3218 nvs_xdr_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
3222 char *buf_end = (char *)nvp + nvp->nvp_size;
3228 ASSERT(xdr != NULL && nvp != NULL);
3231 if ((buf = NVP_NAME(nvp)) >= buf_end)
3237 nvp->nvp_name_sz = strlen(buf) + 1;
3240 if (!xdr_int(xdr, (int *)&nvp->nvp_type) ||
3241 !xdr_int(xdr, &nvp->nvp_value_elem))
3244 type = NVP_TYPE(nvp);
3245 nelem = nvp->nvp_value_elem;
3260 if ((buf = NVP_VALUE(nvp)) >= buf_end)
3274 if (nvs_embedded_nvl_array(nvs, nvp, NULL) == 0)
3402 nvs_xdr_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3404 data_type_t type = NVP_TYPE(nvp);
3407 * where name string size = 4 + NV_ALIGN4(strlen(NVP_NAME(nvp)))
3409 uint64_t nvp_sz = 4 + 4 + 4 + NV_ALIGN4(strlen(NVP_NAME(nvp))) + 4 + 4;
3436 nvp_sz += 4 + NV_ALIGN4(strlen((char *)NVP_VALUE(nvp)));
3440 nvp_sz += NV_ALIGN4(NVP_NELEM(nvp));
3450 nvp_sz += 4 + 4 * (uint64_t)NVP_NELEM(nvp);
3455 nvp_sz += 4 + 8 * (uint64_t)NVP_NELEM(nvp);
3460 char **strs = (void *)NVP_VALUE(nvp);
3462 for (i = 0; i < NVP_NELEM(nvp); i++)
3476 err = nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize);
3478 err = nvs_embedded_nvl_array(nvs, nvp, &nvsize);
3529 nvs_xdr_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3538 if (nvs_xdr_nvp_size(nvs, nvp, &nvsize) != 0)
3541 decode_len = nvp->nvp_size;
3546 return (nvs_xdr_nvp_op(nvs, nvp));