Lines Matching refs:nvp
85 * | nvp (nvpair_t) | | nvp (nvpair_t) |
101 * | nvp (nvpair_t) | | nvp (nvpair_t) |
134 #define EMBEDDED_NVL(nvp) ((nvlist_t *)(void *)NVP_VALUE(nvp))
135 #define EMBEDDED_NVL_ARRAY(nvp) ((nvlist_t **)(void *)NVP_VALUE(nvp))
137 #define NVP_VALOFF(nvp) (NV_ALIGN(sizeof (nvpair_t) + (nvp)->nvp_name_sz))
138 #define NVPAIR2I_NVP(nvp) \
139 ((i_nvp_t *)((size_t)(nvp) - offsetof(i_nvp_t, nvi_nvp)))
191 nv_mem_zalloc(nvpriv_t *nvp, size_t size)
193 nv_alloc_t *nva = nvp->nvp_nva;
203 nv_mem_free(nvpriv_t *nvp, void *buf, size_t size)
205 nv_alloc_t *nva = nvp->nvp_nva;
315 nvpair_t *nvp;
326 nvp = &buf->nvi_nvp;
327 nvp->nvp_size = len;
329 return (nvp);
336 nvp_buf_free(nvlist_t *nvl, nvpair_t *nvp)
339 size_t nvsize = nvp->nvp_size + offsetof(i_nvp_t, nvi_nvp);
341 nv_mem_free(priv, NVPAIR2I_NVP(nvp), nvsize);
348 nvp_buf_link(nvlist_t *nvl, nvpair_t *nvp)
351 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
367 nvp_buf_unlink(nvlist_t *nvl, nvpair_t *nvp)
370 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
443 i_validate_nvpair_name(nvpair_t *nvp)
445 if ((nvp->nvp_name_sz <= 0) ||
446 (nvp->nvp_size < NVP_SIZE_CALC(nvp->nvp_name_sz, 0)))
450 if (NVP_NAME(nvp)[nvp->nvp_name_sz - 1] != '\0')
453 return (strlen(NVP_NAME(nvp)) == nvp->nvp_name_sz - 1 ? 0 : EFAULT);
487 i_validate_nvpair(nvpair_t *nvp)
489 data_type_t type = NVP_TYPE(nvp);
493 if (i_validate_nvpair_name(nvp) != 0)
496 if (i_validate_nvpair_value(type, NVP_NELEM(nvp), NVP_VALUE(nvp)) != 0)
503 size2 = i_get_value_size(type, NVP_VALUE(nvp), NVP_NELEM(nvp));
504 size1 = nvp->nvp_size - NVP_VALOFF(nvp);
521 nvpair_t *nvp = &curr->nvi_nvp;
524 if ((err = nvlist_add_common(dnvl, NVP_NAME(nvp), NVP_TYPE(nvp),
525 NVP_NELEM(nvp), NVP_VALUE(nvp))) != 0)
537 nvpair_free(nvpair_t *nvp)
539 switch (NVP_TYPE(nvp)) {
541 nvlist_free(EMBEDDED_NVL(nvp));
544 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
547 for (i = 0; i < NVP_NELEM(nvp); i++)
574 nvpair_t *nvp = &curr->nvi_nvp;
577 nvpair_free(nvp);
578 nvp_buf_free(nvl, nvp);
590 nvlist_contains_nvp(nvlist_t *nvl, nvpair_t *nvp)
595 if (nvp == NULL)
599 if (&curr->nvi_nvp == nvp)
656 nvpair_t *nvp = &curr->nvi_nvp;
659 if (strcmp(name, NVP_NAME(nvp)) != 0)
662 nvp_buf_unlink(nvl, nvp);
663 nvpair_free(nvp);
664 nvp_buf_free(nvl, nvp);
687 nvpair_t *nvp = &curr->nvi_nvp;
689 if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type) {
690 nvp_buf_unlink(nvl, nvp);
691 nvpair_free(nvp);
692 nvp_buf_free(nvl, nvp);
703 nvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp)
705 if (nvl == NULL || nvp == NULL)
708 nvp_buf_unlink(nvl, nvp);
709 nvpair_free(nvp);
710 nvp_buf_free(nvl, nvp);
865 nvpair_t *nvp;
912 if (name_sz >= 1ULL << (sizeof (nvp->nvp_name_sz) * NBBY - 1))
917 if ((nvp = nvp_buf_alloc(nvl, nvp_sz)) == NULL)
920 ASSERT(nvp->nvp_size == nvp_sz);
921 nvp->nvp_name_sz = name_sz;
922 nvp->nvp_value_elem = nelem;
923 nvp->nvp_type = type;
924 bcopy(name, NVP_NAME(nvp), name_sz);
931 char *buf = NVP_VALUE(nvp);
945 nvlist_t *nnvl = EMBEDDED_NVL(nvp);
949 nvp_buf_free(nvl, nvp);
956 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
966 nvpair_free(nvp);
967 nvp_buf_free(nvl, nvp);
976 bcopy(data, NVP_VALUE(nvp), value_sz);
985 nvp_buf_link(nvl, nvp);
1158 nvlist_next_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1167 curr = NVPAIR2I_NVP(nvp);
1170 * Ensure that nvp is a valid nvpair on this nvlist.
1172 * have to walk the list to determine if nvp is still on the list.
1174 if (nvp == NULL)
1176 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1187 nvlist_prev_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1196 curr = NVPAIR2I_NVP(nvp);
1198 if (nvp == NULL)
1200 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1223 nvpair_name(nvpair_t *nvp)
1225 return (NVP_NAME(nvp));
1229 nvpair_type(nvpair_t *nvp)
1231 return (NVP_TYPE(nvp));
1235 nvpair_type_is_array(nvpair_t *nvp)
1237 data_type_t type = NVP_TYPE(nvp);
1257 nvpair_value_common(nvpair_t *nvp, data_type_t type, uint_t *nelem, void *data)
1259 if (nvp == NULL || nvpair_type(nvp) != type)
1288 bcopy(NVP_VALUE(nvp), data,
1298 *(void **)data = (void *)NVP_VALUE(nvp);
1317 if ((*nelem = NVP_NELEM(nvp)) != 0)
1318 *(void **)data = (void *)NVP_VALUE(nvp);
1335 nvpair_t *nvp;
1346 nvp = &curr->nvi_nvp;
1348 if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type)
1349 return (nvpair_value_common(nvp, type, nelem, data));
1619 nvpair_t *nvp;
1724 for (nvp = nvlist_next_nvpair(nvl, NULL); nvp != NULL;
1725 nvp = nvlist_next_nvpair(nvl, nvp)) {
1728 if (strncmp(np, nvpair_name(nvp), n) ||
1729 (strlen(nvpair_name(nvp)) != n))
1733 if (idxp && !nvpair_type_is_array(nvp))
1737 * Full match found, return nvp and idx if this
1742 *ret = nvp;
1753 if (nvpair_type(nvp) == DATA_TYPE_NVLIST) {
1754 nvl = EMBEDDED_NVL(nvp);
1756 } else if (nvpair_type(nvp) == DATA_TYPE_NVLIST_ARRAY) {
1757 (void) nvpair_value_nvlist_array(nvp,
1768 if (nvp == NULL)
1803 nvpair_t *nvp;
1811 nvp = &curr->nvi_nvp;
1813 if (strcmp(name, NVP_NAME(nvp)) == 0)
1821 nvpair_value_boolean_value(nvpair_t *nvp, boolean_t *val)
1823 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_VALUE, NULL, val));
1827 nvpair_value_byte(nvpair_t *nvp, uchar_t *val)
1829 return (nvpair_value_common(nvp, DATA_TYPE_BYTE, NULL, val));
1833 nvpair_value_int8(nvpair_t *nvp, int8_t *val)
1835 return (nvpair_value_common(nvp, DATA_TYPE_INT8, NULL, val));
1839 nvpair_value_uint8(nvpair_t *nvp, uint8_t *val)
1841 return (nvpair_value_common(nvp, DATA_TYPE_UINT8, NULL, val));
1845 nvpair_value_int16(nvpair_t *nvp, int16_t *val)
1847 return (nvpair_value_common(nvp, DATA_TYPE_INT16, NULL, val));
1851 nvpair_value_uint16(nvpair_t *nvp, uint16_t *val)
1853 return (nvpair_value_common(nvp, DATA_TYPE_UINT16, NULL, val));
1857 nvpair_value_int32(nvpair_t *nvp, int32_t *val)
1859 return (nvpair_value_common(nvp, DATA_TYPE_INT32, NULL, val));
1863 nvpair_value_uint32(nvpair_t *nvp, uint32_t *val)
1865 return (nvpair_value_common(nvp, DATA_TYPE_UINT32, NULL, val));
1869 nvpair_value_int64(nvpair_t *nvp, int64_t *val)
1871 return (nvpair_value_common(nvp, DATA_TYPE_INT64, NULL, val));
1875 nvpair_value_uint64(nvpair_t *nvp, uint64_t *val)
1877 return (nvpair_value_common(nvp, DATA_TYPE_UINT64, NULL, val));
1882 nvpair_value_double(nvpair_t *nvp, double *val)
1884 return (nvpair_value_common(nvp, DATA_TYPE_DOUBLE, NULL, val));
1889 nvpair_value_string(nvpair_t *nvp, char **val)
1891 return (nvpair_value_common(nvp, DATA_TYPE_STRING, NULL, val));
1895 nvpair_value_nvlist(nvpair_t *nvp, nvlist_t **val)
1897 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST, NULL, val));
1901 nvpair_value_boolean_array(nvpair_t *nvp, boolean_t **val, uint_t *nelem)
1903 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_ARRAY, nelem, val));
1907 nvpair_value_byte_array(nvpair_t *nvp, uchar_t **val, uint_t *nelem)
1909 return (nvpair_value_common(nvp, DATA_TYPE_BYTE_ARRAY, nelem, val));
1913 nvpair_value_int8_array(nvpair_t *nvp, int8_t **val, uint_t *nelem)
1915 return (nvpair_value_common(nvp, DATA_TYPE_INT8_ARRAY, nelem, val));
1919 nvpair_value_uint8_array(nvpair_t *nvp, uint8_t **val, uint_t *nelem)
1921 return (nvpair_value_common(nvp, DATA_TYPE_UINT8_ARRAY, nelem, val));
1925 nvpair_value_int16_array(nvpair_t *nvp, int16_t **val, uint_t *nelem)
1927 return (nvpair_value_common(nvp, DATA_TYPE_INT16_ARRAY, nelem, val));
1931 nvpair_value_uint16_array(nvpair_t *nvp, uint16_t **val, uint_t *nelem)
1933 return (nvpair_value_common(nvp, DATA_TYPE_UINT16_ARRAY, nelem, val));
1937 nvpair_value_int32_array(nvpair_t *nvp, int32_t **val, uint_t *nelem)
1939 return (nvpair_value_common(nvp, DATA_TYPE_INT32_ARRAY, nelem, val));
1943 nvpair_value_uint32_array(nvpair_t *nvp, uint32_t **val, uint_t *nelem)
1945 return (nvpair_value_common(nvp, DATA_TYPE_UINT32_ARRAY, nelem, val));
1949 nvpair_value_int64_array(nvpair_t *nvp, int64_t **val, uint_t *nelem)
1951 return (nvpair_value_common(nvp, DATA_TYPE_INT64_ARRAY, nelem, val));
1955 nvpair_value_uint64_array(nvpair_t *nvp, uint64_t **val, uint_t *nelem)
1957 return (nvpair_value_common(nvp, DATA_TYPE_UINT64_ARRAY, nelem, val));
1961 nvpair_value_string_array(nvpair_t *nvp, char ***val, uint_t *nelem)
1963 return (nvpair_value_common(nvp, DATA_TYPE_STRING_ARRAY, nelem, val));
1967 nvpair_value_nvlist_array(nvpair_t *nvp, nvlist_t ***val, uint_t *nelem)
1969 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST_ARRAY, nelem, val));
1973 nvpair_value_hrtime(nvpair_t *nvp, hrtime_t *val)
1975 return (nvpair_value_common(nvp, DATA_TYPE_HRTIME, NULL, val));
1982 nvlist_add_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1984 if (nvl == NULL || nvp == NULL)
1987 return (nvlist_add_common(nvl, NVP_NAME(nvp), NVP_TYPE(nvp),
1988 NVP_NELEM(nvp), NVP_VALUE(nvp)));
2080 nvpair_t *nvp;
2096 if ((nvp = nvp_buf_alloc(nvl, nvsize)) == NULL)
2099 if ((err = nvs->nvs_ops->nvs_nvp_op(nvs, nvp)) != 0) {
2100 nvp_buf_free(nvl, nvp);
2104 if (i_validate_nvpair(nvp) != 0) {
2105 nvpair_free(nvp);
2106 nvp_buf_free(nvl, nvp);
2110 nvp_buf_link(nvl, nvp);
2214 nvs_embedded_nvl_array(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2216 size_t nelem = NVP_NELEM(nvp);
2217 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
2234 nvpair_free(nvp);
2600 nvpair_native_embedded(nvstream_t *nvs, nvpair_t *nvp)
2605 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2614 return (nvs_embedded(nvs, EMBEDDED_NVL(nvp)));
2618 nvpair_native_embedded_array(nvstream_t *nvs, nvpair_t *nvp)
2622 char *value = native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp);
2623 size_t len = NVP_NELEM(nvp) * sizeof (uint64_t);
2633 for (i = 0; i < NVP_NELEM(nvp); i++, packed++)
2642 return (nvs_embedded_nvl_array(nvs, nvp, NULL));
2646 nvpair_native_string_array(nvstream_t *nvs, nvpair_t *nvp)
2652 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2658 bzero(strp, NVP_NELEM(nvp) * sizeof (uint64_t));
2662 char **strp = (void *)NVP_VALUE(nvp);
2663 char *buf = ((char *)strp + NVP_NELEM(nvp) * sizeof (uint64_t));
2666 for (i = 0; i < NVP_NELEM(nvp); i++) {
2676 nvs_native_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
2690 if (native_cp(nvs, nvp, nvp->nvp_size) != 0)
2698 if (i_validate_nvpair_name(nvp) != 0)
2701 type = NVP_TYPE(nvp);
2708 if ((value_sz = i_get_value_size(type, NULL, NVP_NELEM(nvp))) < 0)
2711 if (NVP_SIZE_CALC(nvp->nvp_name_sz, value_sz) > nvp->nvp_size)
2716 ret = nvpair_native_embedded(nvs, nvp);
2719 ret = nvpair_native_embedded_array(nvs, nvp);
2722 nvpair_native_string_array(nvs, nvp);
2732 nvs_native_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2734 uint64_t nvp_sz = nvp->nvp_size;
2736 switch (NVP_TYPE(nvp)) {
2740 if (nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize) != 0)
2749 if (nvs_embedded_nvl_array(nvs, nvp, &nvsize) != 0)
2768 nvs_native_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2772 return (nvs_native_nvp_op(nvs, nvp));
2937 nvs_xdr_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
2941 char *buf_end = (char *)nvp + nvp->nvp_size;
2947 ASSERT(xdr != NULL && nvp != NULL);
2950 if ((buf = NVP_NAME(nvp)) >= buf_end)
2956 nvp->nvp_name_sz = strlen(buf) + 1;
2959 if (!xdr_int(xdr, (int *)&nvp->nvp_type) ||
2960 !xdr_int(xdr, &nvp->nvp_value_elem))
2963 type = NVP_TYPE(nvp);
2964 nelem = nvp->nvp_value_elem;
2979 if ((buf = NVP_VALUE(nvp)) >= buf_end)
2993 if (nvs_embedded_nvl_array(nvs, nvp, NULL) == 0)
3121 nvs_xdr_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3123 data_type_t type = NVP_TYPE(nvp);
3126 * where name string size = 4 + NV_ALIGN4(strlen(NVP_NAME(nvp)))
3128 uint64_t nvp_sz = 4 + 4 + 4 + NV_ALIGN4(strlen(NVP_NAME(nvp))) + 4 + 4;
3155 nvp_sz += 4 + NV_ALIGN4(strlen((char *)NVP_VALUE(nvp)));
3159 nvp_sz += NV_ALIGN4(NVP_NELEM(nvp));
3169 nvp_sz += 4 + 4 * (uint64_t)NVP_NELEM(nvp);
3174 nvp_sz += 4 + 8 * (uint64_t)NVP_NELEM(nvp);
3179 char **strs = (void *)NVP_VALUE(nvp);
3181 for (i = 0; i < NVP_NELEM(nvp); i++)
3195 err = nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize);
3197 err = nvs_embedded_nvl_array(nvs, nvp, &nvsize);
3248 nvs_xdr_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3257 if (nvs_xdr_nvp_size(nvs, nvp, &nvsize) != 0)
3260 decode_len = nvp->nvp_size;
3265 return (nvs_xdr_nvp_op(nvs, nvp));