sstore_value_alloc, sstore_value_free - alloc/free an sstore_value_t
cc [ flag... ] file... -lsstore [ library... ] #include <libsstore.h> typedef struct sstore_histogram *sstore_histogram_t; typedef enum { SSTORE_VALUE_UNKNOWN = 0, SSTORE_VALUE_BOOLEAN, SSTORE_VALUE_DICTIONARY, SSTORE_VALUE_DICTIONARY_ARRAY, SSTORE_VALUE_NUMBER, SSTORE_VALUE_NUMBER_ARRAY, SSTORE_VALUE_PARTITION, SSTORE_VALUE_STRING, SSTORE_VALUE_STRING_ARRAY, SSTORE_VALUE_NODATA, SSTORE_VALUE_NODATA_YET SSTORE_VALUE_HISTOGRAM } sstore_value_type_t; typedef struct sstore_value { sstore_value_type_t sv_type; uint32_t sv_arr_len; union { boolean_t boolean; uint64_t num; uint64_t *num_arr; double real; double *real_arr; char *str; char **str_arr; nvlist_t *dict; nvlist_t **dict_arr; sstore_partition_t part; sstore_histogram_t hist; } sv_value; } *sstore_value_t; sstore_value_t sstore_value_alloc(); void sstore_value_free(sstore_value_t val);
sstore_value_t to be freed
sstore_value_t is used for reading the value or metadata of a statistic while iterating through all the data through the sstore_data_iter_next() or sstore_info_iter_next() function. It allows user applications to update application statistics using sstore_data_update() or sstore_data_bulk_update() function.
sstore_value_t is a typed union, which contains type and corresponding data member for each supported type except SSTORE_VALUE_NODATA and SSTORE_VALUE_NODATA_YET. These are special types and have a meaning associated with it.
SSTORE_VALUE_NODATA means there is no value recorded for the statistic at the given timestamp. SSTORE_VALUE_NODATA_YET is used as a placeholder for a value that will be recorded when the value for the timestamp is received from its provider. In future, sstore_value_t may add support for more data types in which case the corresponding data members for the new types will be added at the end of the union 'sv_value' in order to maintain compatibility. The struct may grow in size in order to support the new types.
The user-applications trying to update statistics must use the sstore_value_alloc() and sstore_value_free() functions to allocate and free the sstore_value_t() function respectively to avoid any compatibility issues when the struct definition changes.
The value types SSTORE_VALUE_PARTITION and SSTORE_VALUE_HISTOGRAM are used only for providing application statistics to sstored using the sstore_data_update() and sstore_data_bulk_update() functions as opposed to other types that may also be used for reading value or metadata for a statistic or event.
libsstore(3LIB), sstore_data_read(3SSTORE), sstore_data_update(3SSTORE), sstore_partition_alloc(3SSTORE), sstore_histogram_init(3SSTORE), attributes(7)