corosync 3.1.9
|
Go to the source code of this file.
Data Structures | |
struct | icmap_notify_value |
Structure passed as new_value and old_value in change callback. More... | |
Macros | |
#define | ICMAP_KEYNAME_MAXLEN 255 |
Maximum length of key in icmap. | |
#define | ICMAP_KEYNAME_MINLEN 3 |
Minimum lenght of key in icmap. | |
#define | ICMAP_TRACK_ADD 4 |
#define | ICMAP_TRACK_DELETE 1 |
#define | ICMAP_TRACK_MODIFY 2 |
#define | ICMAP_TRACK_PREFIX 8 |
Whole prefix is tracked, instead of key only (so "totem." tracking means that "totem.nodeid", "totem.version", ... applies). | |
Typedefs | |
typedef void(* | icmap_notify_fn_t) (int32_t event, const char *key_name, struct icmap_notify_value new_value, struct icmap_notify_value old_value, void *user_data) |
Prototype for notify callback function. | |
typedef struct icmap_map * | icmap_map_t |
icmap type. | |
typedef qb_map_iter_t * | icmap_iter_t |
Itterator type. | |
typedef struct icmap_track * | icmap_track_t |
Track type. | |
Enumerations | |
enum | icmap_value_types_t { ICMAP_VALUETYPE_INT8 = 1 , ICMAP_VALUETYPE_UINT8 = 2 , ICMAP_VALUETYPE_INT16 = 3 , ICMAP_VALUETYPE_UINT16 = 4 , ICMAP_VALUETYPE_INT32 = 5 , ICMAP_VALUETYPE_UINT32 = 6 , ICMAP_VALUETYPE_INT64 = 7 , ICMAP_VALUETYPE_UINT64 = 8 , ICMAP_VALUETYPE_FLOAT = 9 , ICMAP_VALUETYPE_DOUBLE = 10 , ICMAP_VALUETYPE_STRING = 11 , ICMAP_VALUETYPE_BINARY = 12 } |
Possible types of value. More... | |
#define ICMAP_KEYNAME_MAXLEN 255 |
#define ICMAP_KEYNAME_MINLEN 3 |
#define ICMAP_TRACK_PREFIX 8 |
icmap type.
icmap.c contains global variable (icmap_global_map) of this type. This is used in every non-reentant call. Also only in this table are implemented operations like set_ro and tracking of values. Other tables (created by icmap_init_r) are simple map tables with get/set/iter operations.
typedef void(* icmap_notify_fn_t) (int32_t event, const char *key_name, struct icmap_notify_value new_value, struct icmap_notify_value old_value, void *user_data) |
Prototype for notify callback function.
Even is one of ICMAP_TRACK_* event, key_name is changed key, new and old_value contains values or are zeroed (in other words, type is non existing 0 type) if there were no old (creating of key) or new (deleting of key) value. user_data are passed when adding tracking.
Possible types of value.
Binary is raw data without trailing zero with given length
|
extern |
icmap_adjust_int
Defined only for [u]int* values. It adds step to current value.
key_name | |
step |
Definition at line 983 of file icmap.c.
References icmap_adjust_int_r(), and icmap_item::key_name.
|
extern |
icmap_adjust_int_r
map | |
key_name | |
step |
Definition at line 926 of file icmap.c.
References CS_ERR_INVALID_PARAM, CS_ERR_NOT_EXIST, CS_OK, icmap_set(), ICMAP_VALUETYPE_BINARY, ICMAP_VALUETYPE_DOUBLE, ICMAP_VALUETYPE_FLOAT, ICMAP_VALUETYPE_INT16, ICMAP_VALUETYPE_INT32, ICMAP_VALUETYPE_INT64, ICMAP_VALUETYPE_INT8, ICMAP_VALUETYPE_STRING, ICMAP_VALUETYPE_UINT16, ICMAP_VALUETYPE_UINT32, ICMAP_VALUETYPE_UINT64, ICMAP_VALUETYPE_UINT8, icmap_item::key_name, icmap_map::qb_map, icmap_item::type, and icmap_item::value.
Referenced by icmap_adjust_int(), icmap_dec_r(), and icmap_inc_r().
Converts given key_name to valid key name (replacing all prohibited characters by _)
key_name |
Definition at line 282 of file icmap.c.
References icmap_track::key_name.
|
extern |
Copy content of src_map icmap to dst_map icmap.
dst_map | |
src_map |
Definition at line 1302 of file icmap.c.
References CS_ERR_NO_MEMORY, CS_OK, icmap_iter_finalize(), icmap_iter_init_r(), icmap_iter_next(), icmap_set_r(), icmap_ro_access_item::key_name, and value.
|
extern |
Decrease stored value by one.
key_name |
Definition at line 1063 of file icmap.c.
References icmap_dec_r(), and icmap_item::key_name.
|
extern |
icmap_dec_r
map | |
key_name |
Definition at line 1058 of file icmap.c.
References icmap_adjust_int_r(), and icmap_item::key_name.
Referenced by icmap_dec().
|
extern |
Delete key from map.
key_name |
Definition at line 657 of file icmap.c.
References icmap_delete_r(), and icmap_item::key_name.
|
extern |
icmap_delete_r
map | |
key_name |
Definition at line 637 of file icmap.c.
References CS_ERR_INVALID_PARAM, CS_ERR_NOT_EXIST, CS_OK, icmap_item::key_name, and icmap_map::qb_map.
Referenced by icmap_delete().
|
extern |
icmap_fast_adjust_int
Defined only for [u]int* values. It adds step to current value. Difference between this function and icmap_adjust_int is given in fact, that in tracking callback, old value is undefined, but whole process is done without malloc/memcpy.
key_name | |
step |
Definition at line 1040 of file icmap.c.
References icmap_fast_adjust_int_r(), and icmap_item::key_name.
|
extern |
icmap_fast_adjust_int_r
map | |
key_name | |
step |
Definition at line 991 of file icmap.c.
References CS_ERR_INVALID_PARAM, CS_ERR_NOT_EXIST, CS_OK, ICMAP_VALUETYPE_BINARY, ICMAP_VALUETYPE_DOUBLE, ICMAP_VALUETYPE_FLOAT, ICMAP_VALUETYPE_INT16, ICMAP_VALUETYPE_INT32, ICMAP_VALUETYPE_INT64, ICMAP_VALUETYPE_INT8, ICMAP_VALUETYPE_STRING, ICMAP_VALUETYPE_UINT16, ICMAP_VALUETYPE_UINT32, ICMAP_VALUETYPE_UINT64, ICMAP_VALUETYPE_UINT8, icmap_item::key_name, icmap_map::qb_map, icmap_item::type, and icmap_item::value.
Referenced by icmap_fast_adjust_int(), icmap_fast_dec_r(), and icmap_fast_inc_r().
|
extern |
Decrease stored value by one.
Difference between this function and icmap_dec is same as between icmap_adjust_int and icmap_fast_adjust_int.
key_name |
Definition at line 1083 of file icmap.c.
References icmap_fast_dec_r(), and icmap_item::key_name.
|
extern |
icmap_fast_dec_r
map | |
key_name |
Definition at line 1078 of file icmap.c.
References icmap_fast_adjust_int_r(), and icmap_item::key_name.
Referenced by icmap_fast_dec().
|
extern |
Increase stored value by one.
Difference between this function and icmap_inc is same as between icmap_adjust_int and icmap_fast_adjust_int.
key_name |
Definition at line 1073 of file icmap.c.
References icmap_fast_inc_r(), and icmap_item::key_name.
Referenced by main_mcast().
|
extern |
icmap_fast_inc_r
map | |
key_name |
Definition at line 1068 of file icmap.c.
References icmap_fast_adjust_int_r(), and icmap_item::key_name.
Referenced by icmap_fast_inc().
|
extern |
Finalize local, reentrant icmap.
map |
Definition at line 242 of file icmap.c.
References icmap_map::qb_map.
Referenced by icmap_fini().
|
extern |
Retrieve value of key key_name and store it in user preallocated value pointer.
Value can be NULL, and then only value_len and/or type is returned (both of them can also be NULL). If value is not NULL, actual length of value in map is checked against value_len. If *value_len is shorter then length of value in map, error CS_ERR_INVALID_PARAM is returned. After successful copy of value, value_len is set to actual length of value in map.
key_name | |
value | |
value_len | |
type |
Definition at line 729 of file icmap.c.
References icmap_get_r(), icmap_item::key_name, type, value, and icmap_item::value_len.
|
extern |
Definition at line 920 of file icmap.c.
References icmap_get_double_r(), and icmap_item::key_name.
|
extern |
Definition at line 854 of file icmap.c.
References ICMAP_VALUETYPE_DOUBLE, and icmap_item::key_name.
Referenced by icmap_get_double().
|
extern |
Definition at line 914 of file icmap.c.
References icmap_get_float_r(), and icmap_item::key_name.
|
extern |
Definition at line 848 of file icmap.c.
References ICMAP_VALUETYPE_FLOAT, and icmap_item::key_name.
Referenced by icmap_get_float().
|
extern |
Return global icmap.
Definition at line 268 of file icmap.c.
Referenced by main(), main_iface_change_fn(), totem_config_read(), and totem_config_validate().
|
extern |
Definition at line 878 of file icmap.c.
References icmap_get_int16_r(), and icmap_item::key_name.
|
extern |
Definition at line 812 of file icmap.c.
References ICMAP_VALUETYPE_INT16, and icmap_item::key_name.
Referenced by icmap_get_int16().
|
extern |
Definition at line 890 of file icmap.c.
References icmap_get_int32_r(), and icmap_item::key_name.
|
extern |
Definition at line 824 of file icmap.c.
References ICMAP_VALUETYPE_INT32, and icmap_item::key_name.
Referenced by icmap_get_int32().
|
extern |
Definition at line 902 of file icmap.c.
References icmap_get_int64_r(), and icmap_item::key_name.
|
extern |
Definition at line 836 of file icmap.c.
References ICMAP_VALUETYPE_INT64, and icmap_item::key_name.
Referenced by icmap_get_int64().
|
extern |
Definition at line 866 of file icmap.c.
References icmap_get_int8_r(), and icmap_item::key_name.
|
extern |
Definition at line 800 of file icmap.c.
References ICMAP_VALUETYPE_INT8, and icmap_item::key_name.
Referenced by icmap_get_int8().
|
extern |
Same as icmap_get but it's reentrant and operates on given icmap_map.
map | |
key_name | |
value | |
value_len | |
type |
Definition at line 696 of file icmap.c.
References CS_ERR_INVALID_PARAM, CS_OK, icmap_item::key_name, type, value, and icmap_item::value_len.
Referenced by icmap_get(), icmap_get_string_r(), and totem_config_keyread().
|
extern |
Shortcut for icmap_get for string type.
Returned string is newly allocated and caller is responsible for freeing memory
key_name | |
str |
Definition at line 860 of file icmap.c.
References icmap_get_string_r(), and icmap_item::key_name.
Referenced by get_state_dir(), main(), totem_config_read(), and totemknet_initialize().
|
extern |
Definition at line 739 of file icmap.c.
References CS_ERR_INVALID_PARAM, CS_ERR_NO_MEMORY, CS_OK, icmap_get_r(), ICMAP_VALUETYPE_STRING, icmap_item::key_name, and type.
Referenced by icmap_get_string(), totem_config_keyread(), and totem_volatile_config_validate().
|
extern |
Definition at line 884 of file icmap.c.
References icmap_get_uint16_r(), and icmap_item::key_name.
Referenced by totem_config_read().
|
extern |
Definition at line 818 of file icmap.c.
References ICMAP_VALUETYPE_UINT16, and icmap_item::key_name.
Referenced by icmap_get_uint16().
|
extern |
Definition at line 896 of file icmap.c.
References icmap_get_uint32_r(), and icmap_item::key_name.
Referenced by totem_config_read(), and totem_config_validate().
|
extern |
Definition at line 830 of file icmap.c.
References ICMAP_VALUETYPE_UINT32, and icmap_item::key_name.
Referenced by icmap_get_uint32(), totem_volatile_config_read(), and totem_volatile_config_validate().
|
extern |
Definition at line 908 of file icmap.c.
References icmap_get_uint64_r(), and icmap_item::key_name.
|
extern |
Definition at line 842 of file icmap.c.
References ICMAP_VALUETYPE_UINT64, and icmap_item::key_name.
Referenced by icmap_get_uint64().
|
extern |
Definition at line 872 of file icmap.c.
References icmap_get_uint8_r(), and icmap_item::key_name.
|
extern |
Definition at line 806 of file icmap.c.
References ICMAP_VALUETYPE_UINT8, and icmap_item::key_name.
Referenced by icmap_get_uint8().
size_t icmap_get_valuetype_len | ( | icmap_value_types_t | type | ) |
Definition at line 310 of file icmap.c.
References ICMAP_VALUETYPE_BINARY, ICMAP_VALUETYPE_DOUBLE, ICMAP_VALUETYPE_FLOAT, ICMAP_VALUETYPE_INT16, ICMAP_VALUETYPE_INT32, ICMAP_VALUETYPE_INT64, ICMAP_VALUETYPE_INT8, ICMAP_VALUETYPE_STRING, ICMAP_VALUETYPE_UINT16, ICMAP_VALUETYPE_UINT32, ICMAP_VALUETYPE_UINT64, ICMAP_VALUETYPE_UINT8, and type.
Referenced by icmap_set_r().
|
extern |
Increase stored value by one.
key_name |
Definition at line 1053 of file icmap.c.
References icmap_inc_r(), and icmap_item::key_name.
|
extern |
icmap_inc_r
map | |
key_name |
Definition at line 1048 of file icmap.c.
References icmap_adjust_int_r(), and icmap_item::key_name.
Referenced by icmap_inc().
|
extern |
Initialize global icmap.
Definition at line 212 of file icmap.c.
References icmap_init_r().
Referenced by main().
|
extern |
Initialize additional (local, reentrant) icmap_map.
Content of variable result is undefined if return code is not CS_OK.
result |
Definition at line 188 of file icmap.c.
References CS_ERR_INIT, CS_ERR_NO_MEMORY, and qb_to_cs_error().
Referenced by icmap_init().
Check in given key is read only.
Returns !0 if so, otherwise (key is rw) 0.
key_name |
Definition at line 1276 of file icmap.c.
References CS_FALSE, CS_TRUE, icmap_ro_access_item::key_name, icmap_ro_access_item::list, and icmap_ro_access_item::prefix.
|
extern |
Finalize iterator.
iter |
Definition at line 1120 of file icmap.c.
Referenced by icmap_copy_map().
|
extern |
Initialize iterator with given prefix.
prefix |
Definition at line 1093 of file icmap.c.
References icmap_iter_init_r().
|
extern |
icmap_iter_init_r
map | |
prefix |
Definition at line 1088 of file icmap.c.
References icmap_map::qb_map.
Referenced by icmap_copy_map(), and icmap_iter_init().
|
extern |
Return next item in iterator iter.
value_len and type are optional (= can be NULL), but if set, length of returned value and/or type is returned. Function returns following key_name or NULL if iteration is over.
iter | |
value_len | |
type |
Definition at line 1099 of file icmap.c.
References icmap_item::type, type, and icmap_item::value_len.
Referenced by icmap_copy_map().
|
extern |
Compare value of key with name key_name1 in map1 with key with name key_name2 in map2.
Two values must have same type, length and value to be considered equal. Function returns 0 when any of map1, key_name1, map2, key_name2 are NULL, or key_name is not found in map, or keys are not equal. != 0 is returned when values are equal.
map1 | |
key_name1 | |
map2 | |
key_name2 |
Definition at line 389 of file icmap.c.
References icmap_map::qb_map, icmap_item::type, icmap_item::value, and icmap_item::value_len.
Definition at line 150 of file icmap.c.
References ICMAP_TRACK_ADD, ICMAP_TRACK_DELETE, ICMAP_TRACK_MODIFY, and ICMAP_TRACK_PREFIX.
|
extern |
Store value with value_len length and type as key_name name in global icmap.
key_name | |
value | |
value_len | |
type |
Definition at line 491 of file icmap.c.
References icmap_set_r(), icmap_item::key_name, type, value, and icmap_item::value_len.
Referenced by icmap_adjust_int_r().
|
extern |
Definition at line 625 of file icmap.c.
References icmap_set_double_r(), icmap_item::key_name, and value.
|
extern |
Definition at line 555 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_DOUBLE, icmap_item::key_name, and value.
Referenced by icmap_set_double().
|
extern |
Definition at line 619 of file icmap.c.
References icmap_set_float_r(), icmap_item::key_name, and value.
|
extern |
Definition at line 549 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_FLOAT, icmap_item::key_name, and value.
Referenced by icmap_set_float().
|
extern |
Definition at line 583 of file icmap.c.
References icmap_set_int16_r(), icmap_item::key_name, and value.
|
extern |
Definition at line 513 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_INT16, icmap_item::key_name, and value.
Referenced by icmap_set_int16().
|
extern |
Definition at line 595 of file icmap.c.
References icmap_set_int32_r(), icmap_item::key_name, and value.
|
extern |
Definition at line 525 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_INT32, icmap_item::key_name, and value.
Referenced by icmap_set_int32().
|
extern |
Definition at line 607 of file icmap.c.
References icmap_set_int64_r(), icmap_item::key_name, and value.
|
extern |
Definition at line 537 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_INT64, icmap_item::key_name, and value.
Referenced by icmap_set_int64().
|
extern |
Definition at line 571 of file icmap.c.
References icmap_set_int8_r(), icmap_item::key_name, and value.
|
extern |
Definition at line 501 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_INT8, icmap_item::key_name, and value.
Referenced by icmap_set_int8().
|
extern |
Reentrant version of icmap_set.
map | |
key_name | |
value | |
value_len | |
type |
Definition at line 411 of file icmap.c.
References CS_ERR_INVALID_PARAM, CS_ERR_NAME_TOO_LONG, CS_ERR_NO_MEMORY, CS_OK, icmap_get_valuetype_len(), ICMAP_VALUETYPE_BINARY, ICMAP_VALUETYPE_STRING, icmap_item::key_name, icmap_map::qb_map, icmap_item::type, type, icmap_item::value, value, and icmap_item::value_len.
Referenced by icmap_copy_map(), icmap_set(), icmap_set_double_r(), icmap_set_float_r(), icmap_set_int16_r(), icmap_set_int32_r(), icmap_set_int64_r(), icmap_set_int8_r(), icmap_set_string_r(), icmap_set_uint16_r(), icmap_set_uint32_r(), icmap_set_uint64_r(), and icmap_set_uint8_r().
|
extern |
Set read-only access for given key (key_name) or prefix, If prefix is set.
ro_access can be !0, which means, that old information about ro of this key is deleted. Read-only access is used only in CMAP service! (in other word it prevents users from deleting/changing key, but doesn't guarantee anything for internal icmap users.)
key_name | |
prefix | |
ro_access |
Definition at line 1229 of file icmap.c.
References CS_ERR_EXIST, CS_ERR_NO_MEMORY, CS_ERR_NOT_EXIST, CS_OK, icmap_ro_access_item::key_name, icmap_ro_access_item::list, and icmap_ro_access_item::prefix.
Referenced by totem_config_read().
|
extern |
Definition at line 631 of file icmap.c.
References icmap_set_string_r(), icmap_item::key_name, and value.
Referenced by corosync_service_link_and_init(), totem_config_read(), totemknet_member_add(), and totemknet_reconfigure().
|
extern |
Definition at line 561 of file icmap.c.
References CS_ERR_INVALID_PARAM, icmap_set_r(), ICMAP_VALUETYPE_STRING, icmap_item::key_name, and value.
Referenced by icmap_set_string().
|
extern |
Definition at line 589 of file icmap.c.
References icmap_set_uint16_r(), icmap_item::key_name, and value.
Referenced by corosync_service_link_and_init(), and totem_config_read().
|
extern |
Definition at line 519 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_UINT16, icmap_item::key_name, and value.
Referenced by icmap_set_uint16().
|
extern |
Definition at line 601 of file icmap.c.
References icmap_set_uint32_r(), icmap_item::key_name, and value.
Referenced by corosync_service_link_and_init().
|
extern |
Definition at line 531 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_UINT32, icmap_item::key_name, and value.
Referenced by icmap_set_uint32(), and totem_volatile_config_read().
|
extern |
Definition at line 613 of file icmap.c.
References icmap_set_uint64_r(), icmap_item::key_name, and value.
Referenced by corosync_service_link_and_init().
|
extern |
Definition at line 543 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_UINT64, icmap_item::key_name, and value.
Referenced by icmap_set_uint64().
|
extern |
Definition at line 577 of file icmap.c.
References icmap_set_uint8_r(), icmap_item::key_name, and value.
|
extern |
Definition at line 507 of file icmap.c.
References icmap_set_r(), ICMAP_VALUETYPE_UINT8, icmap_item::key_name, and value.
Referenced by icmap_set_uint8().
|
extern |
Add tracking function for given key_name.
Tracked changes (add|modify|delete) depend on track_type, which is bitwise or of ICMAP_TRACK_* values. notify_fn is called on change, where user_data pointer is passed (unchanged). Value which can be used to delete tracking is passed as icmap_track.
key_name | |
track_type | |
notify_fn | |
user_data | |
icmap_track |
Definition at line 1163 of file icmap.c.
References CS_ERR_INVALID_PARAM, CS_ERR_NO_MEMORY, CS_OK, ICMAP_TRACK_ADD, ICMAP_TRACK_DELETE, ICMAP_TRACK_MODIFY, ICMAP_TRACK_PREFIX, icmap_tt_to_qbtt(), icmap_map::qb_map, qb_to_cs_error(), and user_data.
|
extern |
Remove previously added track.
icmap_track |
Definition at line 1208 of file icmap.c.
References CS_OK, icmap_tt_to_qbtt(), icmap_track::key_name, icmap_track::list, icmap_map::qb_map, qb_to_cs_error(), and icmap_track::track_type.
|
extern |
Return user data associated with given track.
icmap_track |
Definition at line 1224 of file icmap.c.
References icmap_track::user_data.
Definition at line 127 of file icmap.c.
References ICMAP_TRACK_ADD, ICMAP_TRACK_DELETE, ICMAP_TRACK_MODIFY, and ICMAP_TRACK_PREFIX.
Referenced by icmap_track_add(), icmap_track_delete(), stats_map_track_add(), and stats_map_track_delete().