Home | History | Annotate | Download | only in nvpair

Lines Matching defs:nvp

91  *   | nvp (nvpair_t)      |      | nvp (nvpair_t)    |
107 * | nvp (nvpair_t) | | nvp (nvpair_t) |
140 #define EMBEDDED_NVL(nvp) ((nvlist_t *)(void *)NVP_VALUE(nvp))
141 #define EMBEDDED_NVL_ARRAY(nvp) ((nvlist_t **)(void *)NVP_VALUE(nvp))
143 #define NVP_VALOFF(nvp) (NV_ALIGN(sizeof (nvpair_t) + (nvp)->nvp_name_sz))
144 #define NVPAIR2I_NVP(nvp) \
145 ((i_nvp_t *)((size_t)(nvp) - offsetof(i_nvp_t, nvi_nvp)))
196 nv_mem_zalloc(nvpriv_t *nvp, size_t size)
198 nv_alloc_t *nva = nvp->nvp_nva;
208 nv_mem_free(nvpriv_t *nvp, void *buf, size_t size)
210 nv_alloc_t *nva = nvp->nvp_nva;
314 nvpair_t *nvp;
325 nvp = &buf->nvi_nvp;
326 nvp->nvp_size = len;
328 return (nvp);
335 nvp_buf_free(nvlist_t *nvl, nvpair_t *nvp)
338 size_t nvsize = nvp->nvp_size + offsetof(i_nvp_t, nvi_nvp);
340 nv_mem_free(priv, NVPAIR2I_NVP(nvp), nvsize);
347 nvp_buf_link(nvlist_t *nvl, nvpair_t *nvp)
350 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
366 nvp_buf_unlink(nvlist_t *nvl, nvpair_t *nvp)
369 i_nvp_t *curr = NVPAIR2I_NVP(nvp);
442 i_validate_nvpair_name(nvpair_t *nvp)
444 if ((nvp->nvp_name_sz <= 0) ||
445 (nvp->nvp_size < NVP_SIZE_CALC(nvp->nvp_name_sz, 0)))
449 if (NVP_NAME(nvp)[nvp->nvp_name_sz - 1] != '\0')
452 return (strlen(NVP_NAME(nvp)) == nvp->nvp_name_sz - 1 ? 0 : EFAULT);
486 i_validate_nvpair(nvpair_t *nvp)
488 data_type_t type = NVP_TYPE(nvp);
492 if (i_validate_nvpair_name(nvp) != 0)
495 if (i_validate_nvpair_value(type, NVP_NELEM(nvp), NVP_VALUE(nvp)) != 0)
502 size2 = i_get_value_size(type, NVP_VALUE(nvp), NVP_NELEM(nvp));
503 size1 = nvp->nvp_size - NVP_VALOFF(nvp);
520 nvpair_t *nvp = &curr->nvi_nvp;
523 if ((err = nvlist_add_common(dnvl, NVP_NAME(nvp), NVP_TYPE(nvp),
524 NVP_NELEM(nvp), NVP_VALUE(nvp))) != 0)
536 nvpair_free(nvpair_t *nvp)
538 switch (NVP_TYPE(nvp)) {
540 nvlist_free(EMBEDDED_NVL(nvp));
543 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
546 for (i = 0; i < NVP_NELEM(nvp); i++)
573 nvpair_t *nvp = &curr->nvi_nvp;
576 nvpair_free(nvp);
577 nvp_buf_free(nvl, nvp);
589 nvlist_contains_nvp(nvlist_t *nvl, nvpair_t *nvp)
594 if (nvp == NULL)
598 if (&curr->nvi_nvp == nvp)
655 nvpair_t *nvp = &curr->nvi_nvp;
658 if (strcmp(name, NVP_NAME(nvp)) != 0)
661 nvp_buf_unlink(nvl, nvp);
662 nvpair_free(nvp);
663 nvp_buf_free(nvl, nvp);
686 nvpair_t *nvp = &curr->nvi_nvp;
688 if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type) {
689 nvp_buf_unlink(nvl, nvp);
690 nvpair_free(nvp);
691 nvp_buf_free(nvl, nvp);
702 nvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp)
704 if (nvl == NULL || nvp == NULL)
707 nvp_buf_unlink(nvl, nvp);
708 nvpair_free(nvp);
709 nvp);
864 nvpair_t *nvp;
914 if ((nvp = nvp_buf_alloc(nvl, nvp_sz)) == NULL)
917 ASSERT(nvp->nvp_size == nvp_sz);
918 nvp->nvp_name_sz = name_sz;
919 nvp->nvp_value_elem = nelem;
920 nvp->nvp_type = type;
921 bcopy(name, NVP_NAME(nvp), name_sz);
928 char *buf = NVP_VALUE(nvp);
942 nvlist_t *nnvl = EMBEDDED_NVL(nvp);
946 nvp_buf_free(nvl, nvp);
953 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
963 nvpair_free(nvp);
964 nvp_buf_free(nvl, nvp);
973 bcopy(data, NVP_VALUE(nvp), value_sz);
982 nvp_buf_link(nvl, nvp);
1155 nvlist_next_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1164 curr = NVPAIR2I_NVP(nvp);
1167 * Ensure that nvp is a valid nvpair on this nvlist.
1169 * have to walk the list to determine if nvp is still on the list.
1171 if (nvp == NULL)
1173 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1184 nvlist_prev_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1193 curr = NVPAIR2I_NVP(nvp);
1195 if (nvp == NULL)
1197 else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp))
1220 nvpair_name(nvpair_t *nvp)
1222 return (NVP_NAME(nvp));
1226 nvpair_type(nvpair_t *nvp)
1228 return (NVP_TYPE(nvp));
1232 nvpair_type_is_array(nvpair_t *nvp)
1234 data_type_t type = NVP_TYPE(nvp);
1254 nvpair_value_common(nvpair_t *nvp, data_type_t type, uint_t *nelem, void *data)
1256 if (nvp == NULL || nvpair_type(nvp) != type)
1285 bcopy(NVP_VALUE(nvp), data,
1295 *(void **)data = (void *)NVP_VALUE(nvp);
1314 if ((*nelem = NVP_NELEM(nvp)) != 0)
1315 *(void **)data = (void *)NVP_VALUE(nvp);
1332 nvpair_t *nvp;
1343 nvp = &curr->nvi_nvp;
1345 if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type)
1346 return (nvpair_value_common(nvp, type, nelem, data));
1616 nvpair_t *nvp;
1721 for (nvp = nvlist_next_nvpair(nvl, NULL); nvp != NULL;
1722 nvp = nvlist_next_nvpair(nvl, nvp)) {
1725 if (strncmp(np, nvpair_name(nvp), n) ||
1726 (strlen(nvpair_name(nvp)) != n))
1730 if (idxp && !nvpair_type_is_array(nvp))
1734 * Full match found, return nvp and idx if this
1739 *ret = nvp;
1750 if (nvpair_type(nvp) == DATA_TYPE_NVLIST) {
1751 nvl = EMBEDDED_NVL(nvp);
1753 } else if (nvpair_type(nvp) == DATA_TYPE_NVLIST_ARRAY) {
1754 (void) nvpair_value_nvlist_array(nvp,
1765 if (nvp == NULL)
1800 nvpair_t *nvp;
1808 nvp = &curr->nvi_nvp;
1810 if (strcmp(name, NVP_NAME(nvp)) == 0)
1818 nvpair_value_boolean_value(nvpair_t *nvp, boolean_t *val)
1820 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_VALUE, NULL, val));
1824 nvpair_value_byte(nvpair_t *nvp, uchar_t *val)
1826 return (nvpair_value_common(nvp, DATA_TYPE_BYTE, NULL, val));
1830 nvpair_value_int8(nvpair_t *nvp, int8_t *val)
1832 return (nvpair_value_common(nvp, DATA_TYPE_INT8, NULL, val));
1836 nvpair_value_uint8(nvpair_t *nvp, uint8_t *val)
1838 return (nvpair_value_common(nvp, DATA_TYPE_UINT8, NULL, val));
1842 nvpair_value_int16(nvpair_t *nvp, int16_t *val)
1844 return (nvpair_value_common(nvp, DATA_TYPE_INT16, NULL, val));
1848 nvpair_value_uint16(nvpair_t *nvp, uint16_t *val)
1850 return (nvpair_value_common(nvp, DATA_TYPE_UINT16, NULL, val));
1854 nvpair_value_int32(nvpair_t *nvp, int32_t *val)
1856 return (nvpair_value_common(nvp, DATA_TYPE_INT32, NULL, val));
1860 nvpair_value_uint32(nvpair_t *nvp, uint32_t *val)
1862 return (nvpair_value_common(nvp, DATA_TYPE_UINT32, NULL, val));
1866 nvpair_value_int64(nvpair_t *nvp, int64_t *val)
1868 return (nvpair_value_common(nvp, DATA_TYPE_INT64, NULL, val));
1872 nvpair_value_uint64(nvpair_t *nvp, uint64_t *val)
1874 return (nvpair_value_common(nvp, DATA_TYPE_UINT64, NULL, val));
1879 nvpair_value_double(nvpair_t *nvp, double *val)
1881 return (nvpair_value_common(nvp, DATA_TYPE_DOUBLE, NULL, val));
1886 nvpair_value_string(nvpair_t *nvp, char **val)
1888 return (nvpair_value_common(nvp, DATA_TYPE_STRING, NULL, val));
1892 nvpair_value_nvlist(nvpair_t *nvp, nvlist_t **val)
1894 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST, NULL, val));
1898 nvpair_value_boolean_array(nvpair_t *nvp, boolean_t **val, uint_t *nelem)
1900 return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_ARRAY, nelem, val));
1904 nvpair_value_byte_array(nvpair_t *nvp, uchar_t **val, uint_t *nelem)
1906 return (nvpair_value_common(nvp, DATA_TYPE_BYTE_ARRAY, nelem, val));
1910 nvpair_value_int8_array(nvpair_t *nvp, int8_t **val, uint_t *nelem)
1912 return (nvpair_value_common(nvp, DATA_TYPE_INT8_ARRAY, nelem, val));
1916 nvpair_value_uint8_array(nvpair_t *nvp, uint8_t **val, uint_t *nelem)
1918 return (nvpair_value_common(nvp, DATA_TYPE_UINT8_ARRAY, nelem, val));
1922 nvpair_value_int16_array(nvpair_t *nvp, int16_t **val, uint_t *nelem)
1924 return (nvpair_value_common(nvp, DATA_TYPE_INT16_ARRAY, nelem, val));
1928 nvpair_value_uint16_array(nvpair_t *nvp, uint16_t **val, uint_t *nelem)
1930 return (nvpair_value_common(nvp, DATA_TYPE_UINT16_ARRAY, nelem, val));
1934 nvpair_value_int32_array(nvpair_t *nvp, int32_t **val, uint_t *nelem)
1936 return (nvpair_value_common(nvp, DATA_TYPE_INT32_ARRAY, nelem, val));
1940 nvpair_value_uint32_array(nvpair_t *nvp, uint32_t **val, uint_t *nelem)
1942 return (nvpair_value_common(nvp, DATA_TYPE_UINT32_ARRAY, nelem, val));
1946 nvpair_value_int64_array(nvpair_t *nvp, int64_t **val, uint_t *nelem)
1948 return (nvpair_value_common(nvp, DATA_TYPE_INT64_ARRAY, nelem, val));
1952 nvpair_value_uint64_array(nvpair_t *nvp, uint64_t **val, uint_t *nelem)
1954 return (nvpair_value_common(nvp, DATA_TYPE_UINT64_ARRAY, nelem, val));
1958 nvpair_value_string_array(nvpair_t *nvp, char ***val, uint_t *nelem)
1960 return (nvpair_value_common(nvp, DATA_TYPE_STRING_ARRAY, nelem, val));
1964 nvpair_value_nvlist_array(nvpair_t *nvp, nvlist_t ***val, uint_t *nelem)
1966 return (nvpair_value_common(nvp, DATA_TYPE_NVLIST_ARRAY, nelem, val));
1970 nvpair_value_hrtime(nvpair_t *nvp, hrtime_t *val)
1972 return (nvpair_value_common(nvp, DATA_TYPE_HRTIME, NULL, val));
1979 nvlist_add_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1981 if (nvl == NULL || nvp == NULL)
1984 return (nvlist_add_common(nvl, NVP_NAME(nvp), NVP_TYPE(nvp),
1985 NVP_NELEM(nvp), NVP_VALUE(nvp)));
2076 nvpair_t *nvp;
2092 if ((nvp = nvp_buf_alloc(nvl, nvsize)) == NULL)
2095 if ((err = nvs->nvs_ops->nvs_nvp_op(nvs, nvp)) != 0) {
2096 nvp_buf_free(nvl, nvp);
2100 if (i_validate_nvpair(nvp) != 0) {
2101 nvpair_free(nvp);
2102 nvp_buf_free(nvl, nvp);
2106 nvp_buf_link(nvl, nvp);
2199 nvs_embedded_nvl_array(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2201 size_t nelem = NVP_NELEM(nvp);
2202 nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp);
2219 nvpair_free(nvp);
2584 nvpair_native_embedded(nvstream_t *nvs, nvpair_t *nvp)
2589 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2599 return (nvs_embedded(nvs, EMBEDDED_NVL(nvp)));
2603 nvpair_native_embedded_array(nvstream_t *nvs, nvpair_t *nvp)
2607 char *value = native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp);
2608 size_t len = NVP_NELEM(nvp) * sizeof (uint64_t);
2618 for (i = 0; i < NVP_NELEM(nvp); i++, packed++)
2628 return (nvs_embedded_nvl_array(nvs, nvp, NULL));
2632 nvpair_native_string_array(nvstream_t *nvs, nvpair_t *nvp)
2638 (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp));
2644 bzero(strp, NVP_NELEM(nvp) * sizeof (uint64_t));
2648 char **strp = (void *)NVP_VALUE(nvp);
2649 char *buf = ((char *)strp + NVP_NELEM(nvp) * sizeof (uint64_t));
2652 for (i = 0; i < NVP_NELEM(nvp); i++) {
2662 nvs_native_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
2676 if (native_cp(nvs, nvp, nvp->nvp_size) != 0)
2684 if (i_validate_nvpair_name(nvp) != 0)
2687 type = NVP_TYPE(nvp);
2694 if ((value_sz = i_get_value_size(type, NULL, NVP_NELEM(nvp))) < 0)
2697 if (NVP_SIZE_CALC(nvp->nvp_name_sz, value_sz) > nvp->nvp_size)
2702 ret = nvpair_native_embedded(nvs, nvp);
2705 ret = nvpair_native_embedded_array(nvs, nvp);
2708 nvpair_native_string_array(nvs, nvp);
2718 nvs_native_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2720 uint64_t nvp_sz = nvp->nvp_size;
2722 switch (NVP_TYPE(nvp)) {
2726 if (nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize) != 0)
2735 if (nvs_embedded_nvl_array(nvs, nvp, &nvsize) != 0)
2754 nvs_native_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
2758 return (nvs_native_nvp_op(nvs, nvp));
2923 nvs_xdr_nvp_op(nvstream_t *nvs, nvpair_t *nvp)
2927 char *buf_end = (char *)nvp + nvp->nvp_size;
2933 ASSERT(xdr != NULL && nvp != NULL);
2936 if ((buf = NVP_NAME(nvp)) >= buf_end)
2942 nvp->nvp_name_sz = strlen(buf) + 1;
2945 if (!xdr_int(xdr, (int *)&nvp->nvp_type) ||
2946 !xdr_int(xdr, &nvp->nvp_value_elem))
2949 type = NVP_TYPE(nvp);
2950 nelem = nvp->nvp_value_elem;
2965 if ((buf = NVP_VALUE(nvp)) >= buf_end)
2979 if (nvs_embedded_nvl_array(nvs, nvp, NULL) == 0)
3109 nvs_xdr_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3111 data_type_t type = NVP_TYPE(nvp);
3114 * where name string size = 4 + NV_ALIGN4(strlen(NVP_NAME(nvp)))
3116 uint64_t nvp_sz = 4 + 4 + 4 + NV_ALIGN4(strlen(NVP_NAME(nvp))) + 4 + 4;
3143 nvp_sz += 4 + NV_ALIGN4(strlen((char *)NVP_VALUE(nvp)));
3147 nvp_sz += NV_ALIGN4(NVP_NELEM(nvp));
3157 nvp_sz += 4 + 4 * (uint64_t)NVP_NELEM(nvp);
3162 nvp_sz += 4 + 8 * (uint64_t)NVP_NELEM(nvp);
3167 char **strs = (void *)NVP_VALUE(nvp);
3169 for (i = 0; i < NVP_NELEM(nvp); i++)
3183 err = nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize);
3185 err = nvs_embedded_nvl_array(nvs, nvp, &nvsize);
3236 nvs_xdr_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
3245 if (nvs_xdr_nvp_size(nvs, nvp, &nvsize) != 0)
3248 decode_len = nvp->nvp_size;
3253 return (nvs_xdr_nvp_op(nvs, nvp));