Lines Matching defs:nvp
84 * | nvp (nvpair_t) | | nvp (nvpair_t) |
100 * | nvp (nvpair_t) | | nvp (nvpair_t) |
133 #define EMBEDDED_NVL(nvp) ((nvlist_t *)(void *)NVP_VALUE(nvp))
134 #define EMBEDDED_NVL_ARRAY(nvp) ((nvlist_t **)(void *)NVP_VALUE(nvp))
136 #define NVP_VALOFF(nvp) (NV_ALIGN(sizeof (nvpair_t) + (nvp)->nvp_name_sz))
137 #define NVPAIR2I_NVP(nvp) \
138 ((i_nvp_t *)((size_t)(nvp) - offsetof(i_nvp_t, nvi_nvp)))
185 nv_mem_zalloc(nvpriv_t *nvp, size_t size)
187 nv_alloc_t *nva = nvp->nvp_nva;
197 nv_mem_free(nvpriv_t *nvp, void *buf, size_t size)
199 nv_alloc_t *nva = nvp->nvp_nva;
309 nvpair_t *nvp;
320 nvp = &buf->nvi_nvp;
321 nvp->nvp_size = len;
323 return (nvp);
330 nvp_buf_free(nvlist_t *nvl, nvpair_t *nvp)
333 size_t nvsize = nvp->nvp_size + offsetof(i_nvp_t, nvi_nvp);
335 nv_mem_free(priv, NVPAIR2I_NVP(nvp), nvsize);
342 nvp_buf_link(nvlist_t *nvl, nvpair_t *nvp)
345 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
361 nvp_buf_unlink(nvlist_t *nvl, nvpair_t *nvp)
364 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
437 i_validate_nvpair_name(nvpair_t *nvp)
439 if ((nvp->nvp_name_sz <= 0) ||
440 (nvp->nvp_size < NVP_SIZE_CALC(nvp->nvp_name_sz, 0)))
444 if (NVP_NAME(nvp)[nvp->nvp_name_sz - 1] != '\0')
447 return (strlen(NVP_NAME(nvp)) == nvp->nvp_name_sz - 1 ? 0 : EFAULT);
481 i_validate_nvpair(nvpair_t *nvp)
483 data_type_t type = NVP_TYPE(nvp);
487 if (i_validate_nvpair_name(nvp) != 0)
490 if (i_validate_nvpair_value(type, NVP_NELEM(nvp), NVP_VALUE(nvp)) != 0)
497 size2 = i_get_value_size(type, NVP_VALUE(nvp), NVP_NELEM(nvp));
498 size1 = nvp->nvp_size - NVP_VALOFF(nvp);
515 nvpair_t *nvp = &curr->nvi_nvp;
518 if ((err = nvlist_add_common(dnvl, NVP_NAME(nvp), NVP_TYPE(nvp),
519 NVP_NELEM(nvp), NVP_VALUE(nvp))) != 0)
531 nvpair_free(nvpair_t *nvp)
533 switch (NVP_TYPE(nvp)) {
535 nvlist_free(EMBEDDED_NVL(nvp));
538 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
541 for (i = 0; i < NVP_NELEM(nvp); i++)
568 nvpair_t *nvp = &curr->nvi_nvp;
571 nvpair_free(nvp);
572 nvp_buf_free(nvl, nvp);
584 nvlist_contains_nvp(nvlist_t *nvl, nvpair_t *nvp)
589 if (nvp == NULL)
593 if (&curr->nvi_nvp == nvp)
650 nvpair_t *nvp = &curr->nvi_nvp;
653 if (strcmp(name, NVP_NAME(nvp)) != 0)
656 nvp_buf_unlink(nvl, nvp);
657 nvpair_free(nvp);
658 nvp_buf_free(nvl, nvp);
681 nvpair_t *nvp = &curr->nvi_nvp;
683 if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type) {
684 nvp_buf_unlink(nvl, nvp);
685 nvpair_free(nvp);
686 nvp_buf_free(nvl, nvp);
697 nvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp)
699 if (nvl == NULL || nvp == NULL)
702 nvp_buf_unlink(nvl, nvp);
703 nvpair_free(nvp);
704 nvp_buf_free(nvl, nvp);
859 nvpair_t *nvp;
909 if ((nvp = nvp_buf_alloc(nvl, nvp_sz)) == NULL)
912 ASSERT(nvp->nvp_size == nvp_sz);
913 nvp->nvp_name_sz = name_sz;
914 nvp->nvp_value_elem = nelem;
915 nvp->nvp_type = type;
916 bcopy(name, NVP_NAME(nvp), name_sz);
923 char *buf = NVP_VALUE(nvp);
937 nvlist_t *nnvl = EMBEDDED_NVL(nvp);
941 nvp_buf_free(nvl, nvp);
948 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
958 nvpair_free(nvp);
959 nvp_buf_free(nvl, nvp);
968 bcopy(data, NVP_VALUE(nvp), value_sz);
977 nvp_buf_link(nvl, nvp);
1150 nvlist_next_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1159 curr = NVPAIR2I_NVP(nvp);
1162 * Ensure that nvp is a valid nvpair on this nvlist.
1164 * have to walk the list to determine if nvp is still on the list.
1166 if (nvp == NULL)
1168 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1179 nvlist_prev_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1188 curr = NVPAIR2I_NVP(nvp);
1190 if (nvp == NULL)
1192 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1215 nvpair_name(nvpair_t *nvp)
1217 return (NVP_NAME(nvp));
1221 nvpair_type(nvpair_t *nvp)
1223 return (NVP_TYPE(nvp));
1227 nvpair_type_is_array(nvpair_t *nvp)
1229 data_type_t type = NVP_TYPE(nvp);
1249 nvpair_value_common(nvpair_t *nvp, data_type_t type, uint_t *nelem, void *data)
1251 if (nvp == NULL || nvpair_type(nvp) != type)
1280 bcopy(NVP_VALUE(nvp), data,
1290 *(void **)data = (void *)NVP_VALUE(nvp);
1309 if ((*nelem = NVP_NELEM(nvp)) != 0)
1310 *(void **)data = (void *)NVP_VALUE(nvp);
1327 nvpair_t *nvp;
1338 nvp = &curr->nvi_nvp;
1340 if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type)
1341 return (nvpair_value_common(nvp, type, nelem, data));
1611 nvpair_t *nvp;
1716 for (nvp = nvlist_next_nvpair(nvl, NULL); nvp != NULL;
1717 nvp = nvlist_next_nvpair(nvl, nvp)) {
1720 if (strncmp(np, nvpair_name(nvp), n) ||
1721 (strlen(nvpair_name(nvp)) != n))
1725 if (idxp && !nvpair_type_is_array(nvp))
1729 * Full match found, return nvp and idx if this
1734 *ret = nvp;
1745 if (nvpair_type(nvp) == DATA_TYPE_NVLIST) {
1746 nvl = EMBEDDED_NVL(nvp);
1748 } else if (nvpair_type(nvp) == DATA_TYPE_NVLIST_ARRAY) {
1749 (void) nvpair_value_nvlist_array(nvp,
1760 if (nvp == NULL)
1795 nvpair_t *nvp;
1803 nvp = &curr->nvi_nvp;
1805 if (strcmp(name, NVP_NAME(nvp)) == 0)
1813 nvpair_value_boolean_value(nvpair_t *nvp, boolean_t *val)
1815 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_VALUE, NULL, val));
1819 nvpair_value_byte(nvpair_t *nvp, uchar_t *val)
1821 return (nvpair_value_common(nvp, DATA_TYPE_BYTE, NULL, val));
1825 nvpair_value_int8(nvpair_t *nvp, int8_t *val)
1827 return (nvpair_value_common(nvp, DATA_TYPE_INT8, NULL, val));
1831 nvpair_value_uint8(nvpair_t *nvp, uint8_t *val)
1833 return (nvpair_value_common(nvp, DATA_TYPE_UINT8, NULL, val));
1837 nvpair_value_int16(nvpair_t *nvp, int16_t *val)
1839 return (nvpair_value_common(nvp, DATA_TYPE_INT16, NULL, val));
1843 nvpair_value_uint16(nvpair_t *nvp, uint16_t *val)
1845 return (nvpair_value_common(nvp, DATA_TYPE_UINT16, NULL, val));
1849 nvpair_value_int32(nvpair_t *nvp, int32_t *val)
1851 return (nvpair_value_common(nvp, DATA_TYPE_INT32, NULL, val));
1855 nvpair_value_uint32(nvpair_t *nvp, uint32_t *val)
1857 return (nvpair_value_common(nvp, DATA_TYPE_UINT32, NULL, val));
1861 nvpair_value_int64(nvpair_t *nvp, int64_t *val)
1863 return (nvpair_value_common(nvp, DATA_TYPE_INT64, NULL, val));
1867 nvpair_value_uint64(nvpair_t *nvp, uint64_t *val)
1869 return (nvpair_value_common(nvp, DATA_TYPE_UINT64, NULL, val));
1874 nvpair_value_double(nvpair_t *nvp, double *val)
1876 return (nvpair_value_common(nvp, DATA_TYPE_DOUBLE, NULL, val));
1881 nvpair_value_string(nvpair_t *nvp, char **val)
1883 return (nvpair_value_common(nvp, DATA_TYPE_STRING, NULL, val));
1887 nvpair_value_nvlist(nvpair_t *nvp, nvlist_t **val)
1889 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST, NULL, val));
1893 nvpair_value_boolean_array(nvpair_t *nvp, boolean_t **val, uint_t *nelem)
1895 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_ARRAY, nelem, val));
1899 nvpair_value_byte_array(nvpair_t *nvp, uchar_t **val, uint_t *nelem)
1901 return (nvpair_value_common(nvp, DATA_TYPE_BYTE_ARRAY, nelem, val));
1905 nvpair_value_int8_array(nvpair_t *nvp, int8_t **val, uint_t *nelem)
1907 return (nvpair_value_common(nvp, DATA_TYPE_INT8_ARRAY, nelem, val));
1911 nvpair_value_uint8_array(nvpair_t *nvp, uint8_t **val, uint_t *nelem)
1913 return (nvpair_value_common(nvp, DATA_TYPE_UINT8_ARRAY, nelem, val));
1917 nvpair_value_int16_array(nvpair_t *nvp, int16_t **val, uint_t *nelem)
1919 return (nvpair_value_common(nvp, DATA_TYPE_INT16_ARRAY, nelem, val));
1923 nvpair_value_uint16_array(nvpair_t *nvp, uint16_t **val, uint_t *nelem)
1925 return (nvpair_value_common(nvp, DATA_TYPE_UINT16_ARRAY, nelem, val));
1929 nvpair_value_int32_array(nvpair_t *nvp, int32_t **val, uint_t *nelem)
1931 return (nvpair_value_common(nvp, DATA_TYPE_INT32_ARRAY, nelem, val));
1935 nvpair_value_uint32_array(nvpair_t *nvp, uint32_t **val, uint_t *nelem)
1937 return (nvpair_value_common(nvp, DATA_TYPE_UINT32_ARRAY, nelem, val));
1941 nvpair_value_int64_array(nvpair_t *nvp, int64_t **val, uint_t *nelem)
1943 return (nvpair_value_common(nvp, DATA_TYPE_INT64_ARRAY, nelem, val));
1947 nvpair_value_uint64_array(nvpair_t *nvp, uint64_t **val, uint_t *nelem)
1949 return (nvpair_value_common(nvp, DATA_TYPE_UINT64_ARRAY, nelem, val));
1953 nvpair_value_string_array(nvpair_t *nvp, char ***val, uint_t *nelem)
1955 return (nvpair_value_common(nvp, DATA_TYPE_STRING_ARRAY, nelem, val));
1959 nvpair_value_nvlist_array(nvpair_t *nvp, nvlist_t ***val, uint_t *nelem)
1961 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST_ARRAY, nelem, val));
1965 nvpair_value_hrtime(nvpair_t *nvp, hrtime_t *val)
1967 return (nvpair_value_common(nvp, DATA_TYPE_HRTIME, NULL, val));
1974 nvlist_add_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1976 if (nvl == NULL || nvp == NULL)
1979 return (nvlist_add_common(nvl, NVP_NAME(nvp), NVP_TYPE(nvp),
1980 NVP_NELEM(nvp), NVP_VALUE(nvp)));
2071 nvpair_t *nvp;
2087 if ((nvp = nvp_buf_alloc(nvl, nvsize)) == NULL)
2090 if ((err = nvs->nvs_ops->nvs_nvp_op(nvs, nvp)) != 0) {
2091 nvp_buf_free(nvl, nvp);
2095 if (i_validate_nvpair(nvp) != 0) {
2096 nvpair_free(nvp);
2097 nvp_buf_free(nvl, nvp);
2101 nvp_buf_link(nvl, nvp);
2194 nvs_embedded_nvl_array(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2196 size_t nelem = NVP_NELEM(nvp);
2197 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
2214 nvpair_free(nvp);
2579 nvpair_native_embedded(nvstream_t *nvs, nvpair_t *nvp)
2584 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2593 return (nvs_embedded(nvs, EMBEDDED_NVL(nvp)));
2597 nvpair_native_embedded_array(nvstream_t *nvs, nvpair_t *nvp)
2601 char *value = native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp);
2602 size_t len = NVP_NELEM(nvp) * sizeof (uint64_t);
2612 for (i = 0; i < NVP_NELEM(nvp); i++, packed++)
2621 return (nvs_embedded_nvl_array(nvs, nvp, NULL));
2625 nvpair_native_string_array(nvstream_t *nvs, nvpair_t *nvp)
2631 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2637 bzero(strp, NVP_NELEM(nvp) * sizeof (uint64_t));
2641 char **strp = (void *)NVP_VALUE(nvp);
2642 char *buf = ((char *)strp + NVP_NELEM(nvp) * sizeof (uint64_t));
2645 for (i = 0; i < NVP_NELEM(nvp); i++) {
2655 nvs_native_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
2669 if (native_cp(nvs, nvp, nvp->nvp_size) != 0)
2677 if (i_validate_nvpair_name(nvp) != 0)
2680 type = NVP_TYPE(nvp);
2687 if ((value_sz = i_get_value_size(type, NULL, NVP_NELEM(nvp))) < 0)
2690 if (NVP_SIZE_CALC(nvp->nvp_name_sz, value_sz) > nvp->nvp_size)
2695 ret = nvpair_native_embedded(nvs, nvp);
2698 ret = nvpair_native_embedded_array(nvs, nvp);
2701 nvpair_native_string_array(nvs, nvp);
2711 nvs_native_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2713 uint64_t nvp_sz = nvp->nvp_size;
2715 switch (NVP_TYPE(nvp)) {
2719 if (nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize) != 0)
2728 if (nvs_embedded_nvl_array(nvs, nvp, &nvsize) != 0)
2747 nvs_native_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2751 return (nvs_native_nvp_op(nvs, nvp));
2916 nvs_xdr_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
2920 char *buf_end = (char *)nvp + nvp->nvp_size;
2926 ASSERT(xdr != NULL && nvp != NULL);
2929 if ((buf = NVP_NAME(nvp)) >= buf_end)
2935 nvp->nvp_name_sz = strlen(buf) + 1;
2938 if (!xdr_int(xdr, (int *)&nvp->nvp_type) ||
2939 !xdr_int(xdr, &nvp->nvp_value_elem))
2942 type = NVP_TYPE(nvp);
2943 nelem = nvp->nvp_value_elem;
2958 if ((buf = NVP_VALUE(nvp)) >= buf_end)
2972 if (nvs_embedded_nvl_array(nvs, nvp, NULL) == 0)
3100 nvs_xdr_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3102 data_type_t type = NVP_TYPE(nvp);
3105 * where name string size = 4 + NV_ALIGN4(strlen(NVP_NAME(nvp)))
3107 uint64_t nvp_sz = 4 + 4 + 4 + NV_ALIGN4(strlen(NVP_NAME(nvp))) + 4 + 4;
3134 nvp_sz += 4 + NV_ALIGN4(strlen((char *)NVP_VALUE(nvp)));
3138 nvp_sz += NV_ALIGN4(NVP_NELEM(nvp));
3148 nvp_sz += 4 + 4 * (uint64_t)NVP_NELEM(nvp);
3153 nvp_sz += 4 + 8 * (uint64_t)NVP_NELEM(nvp);
3158 char **strs = (void *)NVP_VALUE(nvp);
3160 for (i = 0; i < NVP_NELEM(nvp); i++)
3174 err = nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize);
3176 err = nvs_embedded_nvl_array(nvs, nvp, &nvsize);
3227 nvs_xdr_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3236 if (nvs_xdr_nvp_size(nvs, nvp, &nvsize) != 0)
3239 decode_len = nvp->nvp_size;
3244 return (nvs_xdr_nvp_op(nvs, nvp));