Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/tidy/../kstat2.h
Real path: /usr/include/kstat2.h
Zurück
/* * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. */ /** * @file * Kstat V2 public API * @publicsection */ #ifndef _KSTAT2_H #define _KSTAT2_H #include <stdio.h> #include <sys/types.h> #include <sys/kstat2_common.h> #ifdef __cplusplus extern "C" { #endif /** * @brief API status return values */ typedef enum kstat2_status { KSTAT2_S_OK = 0, /**< Request was successful */ KSTAT2_S_NO_PERM, /**< Insufficient permissions for request */ KSTAT2_S_NO_MEM, /**< Insufficient memory available */ KSTAT2_S_NO_SPACE, /**< No space available for operation */ KSTAT2_S_INVAL_ARG, /**< Invalid argument supplied */ KSTAT2_S_INVAL_STATE, /**< Invalid state for this request */ KSTAT2_S_INVAL_TYPE, /**< Invalid data type found */ KSTAT2_S_NOT_FOUND, /**< Resource not found */ KSTAT2_S_CONC_MOD, /**< Concurrent modification of map detected */ KSTAT2_S_DEL_MAP, /**< Referenced map has been deleted */ KSTAT2_S_SYS_FAIL /**< System call has failed, see errno */ } kstat2_status_t; /** * @brief Opaque kstat handle, see @ref designopaquerefs. */ typedef const struct __kstat2_handle *kstat2_handle_t; /** * @brief Opaque map handle, see @ref designopaquerefs. */ typedef const struct __kstat2_map *kstat2_map_t; /* ! [kstat2_map_meta_t] */ /** * @brief Metadata structure for maps */ typedef struct kstat2_map_meta { const uint16_t type; /**< Metadata type value */ const uint32_t flags; /**< Metadata flag values */ const char *const desc; /**< Descriptive string */ } *kstat2_map_meta_t; /* ! [kstat2_map_meta_t] */ /** * @brief Kind of a name/value pair. */ typedef enum kstat2_nv_kind { KSTAT2_NVK_SYS = 0x01, /**< System kstat value type */ KSTAT2_NVK_USR = 0x02, /**< User-supplied value type */ KSTAT2_NVK_MAP = 0x04, /**< Sub-map value type */ KSTAT2_NVK_ALL = 0x07 /**< All value types (only for iteration) */ } kstat2_nv_kind_t; /* ! [kstat2_nv_t] */ /** * @brief Immutable Name/Value pair. */ typedef struct kstat2_nv { const char *const name; /**< Name of the pair */ const uint8_t type; /**< Value type of the pair */ const uint8_t kind; /**< Kind of the pair */ const uint16_t flags; /**< Flags of the pair */ union { /**< Data value */ const struct __kstat2_map *const map; const uint64_t integer; struct { const uint64_t *const array; const uint32_t length; } integers; const char *const string; struct { const char *const *const array; const uint32_t length; } strings; } data; } *kstat2_nv_t; /* ! [kstat2_nv_t] */ /** * @name union member access shorthands * @{ */ #define kstat2_map data.map /**< sub-map member */ #define kstat2_integer data.integer /**< integer member */ #define kstat2_integers data.integers /**< integers member */ #define kstat2_string data.string /**< string member */ #define kstat2_strings data.strings /**< strings member */ /** @} */ /* ! [kstat2_nv_meta_t] */ /** * @brief Immutable Name/value pair metadata. */ typedef struct kstat2_nv_meta { const uint16_t type; /**< Metadata type value */ const uint32_t flags; /**< Metadata flag values */ const uint64_t scale; /**< Value units */ const char *const desc; /**< String */ } *kstat2_nv_meta_t; /* ! [kstat2_nv_meta_t] */ /** * @brief Opaque map iterator handle, see @ref designiter and * @ref designopaquerefs. */ typedef const struct __kstat2_mapiter *kstat2_mapiter_t; /** * @brief Opaque map reference, see @ref designmaprefs and * @ref designopaquerefs. */ typedef const struct __kstat2_mapref *kstat2_mapref_t; /** * @brief Tree callback events */ typedef enum kstat2_tree_cb_event { KSTAT2_TREE_ADD = 0, /**< Tree node added */ KSTAT2_TREE_REM = 1 /**< Tree node removed */ } kstat2_tree_cb_event_t; /** * @brief Data callback events */ typedef enum kstat2_data_cb_event { KSTAT2_DATA_ADD = 0, /**< Data added to node */ KSTAT2_DATA_REM = 1 /**< Data removed from node */ } kstat2_data_cb_event_t; /** * @brief User callback for when a sub-map is being added or removed. */ typedef void (*kstat2_tree_cb_t)(kstat2_map_t map, kstat2_map_t sub_map, kstat2_tree_cb_event_t event); /** * @brief User callback for when data is being added or removed. */ typedef void (*kstat2_data_cb_t)(kstat2_map_t map, kstat2_map_t sub_map, kstat2_data_cb_event_t event); /** * @brief User callback for when a map is being destroyed. */ typedef void (*kstat2_map_cb_t)(kstat2_map_t map, void *user_data); /** * @brief The type of match to apply */ typedef enum kstat2_match_type { KSTAT2_M_STRING, KSTAT2_M_GLOB, KSTAT2_M_RE } kstat2_match_type_t; /** * @brief Opaque kstat match list, see @ref designopaquerefs. */ typedef const struct __kstat2_matcher_list *kstat2_matcher_list_t; /** * @brief Optional kstat data. */ typedef struct kstat2_opt_info { const char *const id; /**< Optional kstats id */ const kstat2_opt_estate_t estate; /**< Enabled state */ const kstat2_opt_estate_t pstate; /**< Persisted state */ const boolean_t is_dflt_estate; /**< Default state? */ const char *const descr; /**< Description */ } kstat2_opt_info_t; /* * Public API */ extern const char *kstat2_status_string(kstat2_status_t status); extern kstat2_status_t kstat2_uri_encode(const char *unenc, char **enc); extern kstat2_status_t kstat2_uri_decode(const char *enc, char **unenc); extern kstat2_status_t kstat2_alloc_matcher_list( kstat2_matcher_list_t *matchers); extern kstat2_status_t kstat2_add_matcher(kstat2_match_type_t type, const char *match, kstat2_matcher_list_t matchers); extern kstat2_status_t kstat2_free_matcher_list( kstat2_matcher_list_t *matchers); extern kstat2_status_t kstat2_open(kstat2_handle_t *handle, kstat2_matcher_list_t matchers); extern kstat2_status_t kstat2_lookup_map(kstat2_handle_t handle, const char *uri, kstat2_map_t *map); extern kstat2_status_t kstat2_update(kstat2_handle_t handle); extern kstat2_status_t kstat2_close(kstat2_handle_t *handle); extern kstat2_status_t kstat2_map_flags(kstat2_map_t map, uint32_t *flags); extern kstat2_status_t kstat2_map_size(kstat2_map_t map, kstat2_nv_kind_t kind, uint32_t *size); extern kstat2_status_t kstat2_map_parent(kstat2_map_t map, kstat2_map_t *parent); extern kstat2_status_t kstat2_map_get(kstat2_map_t map, const char *name, kstat2_nv_t *nv); extern kstat2_status_t kstat2_map_put_integer(kstat2_map_t map, const char *name, uint64_t value); extern kstat2_status_t kstat2_map_put_integers(kstat2_map_t map, const char *name, uint64_t values[], uint32_t length); extern kstat2_status_t kstat2_map_put_string(kstat2_map_t map, const char *name, const char *value); extern kstat2_status_t kstat2_map_put_strings(kstat2_map_t map, const char *name, const char *const values[], uint32_t length); extern kstat2_status_t kstat2_map_remove(kstat2_map_t map, const char *name); extern kstat2_status_t kstat2_map_to_array(kstat2_map_t map, kstat2_nv_kind_t kind, kstat2_nv_t *nv_array[], uint32_t *size, uint32_t *entries); extern kstat2_status_t kstat2_map_uri(kstat2_map_t map, char **uri); extern kstat2_status_t kstat2_map_meta(kstat2_map_t map, kstat2_map_meta_t *meta); extern const char *kstat2_map_metatype_string(uint16_t type); extern kstat2_status_t kstat2_nv_meta(kstat2_map_t map, const char *name, kstat2_nv_meta_t *meta); extern const char *kstat2_nv_metatype_string(uint16_t type); extern kstat2_status_t kstat2_mapiter_start(kstat2_map_t map, kstat2_nv_kind_t kind, kstat2_mapiter_t *iter); extern kstat2_status_t kstat2_mapiter_hasnext(kstat2_mapiter_t iter, boolean_t *has_next); extern kstat2_status_t kstat2_mapiter_next(kstat2_mapiter_t iter, kstat2_nv_t *nv); extern kstat2_status_t kstat2_mapiter_remove(kstat2_mapiter_t iter); extern kstat2_status_t kstat2_mapiter_end(kstat2_mapiter_t *iter); extern kstat2_status_t kstat2_mapref_alloc(kstat2_map_t map, kstat2_mapref_t *ref); extern kstat2_status_t kstat2_mapref_deref(kstat2_mapref_t ref, kstat2_map_t *map); extern kstat2_status_t kstat2_mapref_free(kstat2_mapref_t *ref); extern kstat2_status_t kstat2_map_set_userdata(kstat2_map_t map, void *data); extern kstat2_status_t kstat2_map_get_userdata(kstat2_map_t map, void **data); extern kstat2_status_t kstat2_map_set_tree_cb(kstat2_map_t map, kstat2_tree_cb_t callback); extern kstat2_status_t kstat2_map_set_data_cb(kstat2_map_t map, kstat2_data_cb_t callback); extern kstat2_status_t kstat2_map_set_destroy_cb(kstat2_map_t map, kstat2_map_cb_t callback); extern kstat2_status_t kstat2_optional_set_state(kstat2_handle_t handle, const char *id, kstat2_opt_estate_t estate); extern kstat2_status_t kstat2_optional_list(kstat2_handle_t handle, kstat2_opt_info_t *opt_array[], uint32_t *entries); extern kstat2_status_t kstat2_optional_list_free(kstat2_opt_info_t *opt_array[], uint32_t entries); #ifdef __cplusplus } #endif #endif /* _KSTAT2_H */