icmap.c File Reference
`#include <config.h>`
`#include <string.h>`
`#include <stdio.h>`
`#include <corosync/corotypes.h>`
`#include <qb/qbdefs.h>`
`#include <qb/qblist.h>`
`#include <corosync/icmap.h>`
Include dependency graph for icmap.c:

Go to the source code of this file.

## Data Structures

struct | icmap_item
struct | icmap_map
struct | icmap_track
struct | icmap_ro_access_item

## Macros

#define | ICMAP_MAX_VALUE_LEN (16*1024)

## Functions

| QB_LIST_DECLARE (icmap_ro_access_item_list_head)
| QB_LIST_DECLARE (icmap_track_list_head)
int32_t | icmap_tt_to_qbtt (int32_t track_type)
int32_t | icmap_qbtt_to_tt (int32_t track_type)
cs_error_t | icmap_init_r (icmap_map_t *result)
| Initialize additional (local, reentrant) icmap_map.
cs_error_t | icmap_init (void)
| Initialize global icmap.
void | icmap_fini_r (const icmap_map_t map)
| Finalize local, reentrant icmap.
void | icmap_fini (void)
| Finalize global icmap.
icmap_map_t | icmap_get_global_map (void)
| Return global icmap.
void | icmap_convert_name_to_valid_name (char *key_name)
| Converts given key_name to valid key name (replacing all prohibited characters by _)
size_t | icmap_get_valuetype_len (icmap_value_types_t type)
int | icmap_key_value_eq (const icmap_map_t map1, const char *key_name1, const icmap_map_t map2, const char *key_name2)
| Compare value of key with name key_name1 in map1 with key with name key_name2 in map2.
cs_error_t | icmap_set_r (const icmap_map_t map, const char *key_name, const void *value, size_t value_len, icmap_value_types_t type)
| Reentrant version of icmap_set.
cs_error_t | icmap_set (const char *key_name, const void *value, size_t value_len, icmap_value_types_t type)
| Store value with value_len length and type as key_name name in global icmap.
cs_error_t | icmap_set_int8_r (const icmap_map_t map, const char *key_name, int8_t value)
cs_error_t | icmap_set_uint8_r (const icmap_map_t map, const char *key_name, uint8_t value)
cs_error_t | icmap_set_int16_r (const icmap_map_t map, const char *key_name, int16_t value)
cs_error_t | icmap_set_uint16_r (const icmap_map_t map, const char *key_name, uint16_t value)
cs_error_t | icmap_set_int32_r (const icmap_map_t map, const char *key_name, int32_t value)
cs_error_t | icmap_set_uint32_r (const icmap_map_t map, const char *key_name, uint32_t value)
cs_error_t | icmap_set_int64_r (const icmap_map_t map, const char *key_name, int64_t value)
cs_error_t | icmap_set_uint64_r (const icmap_map_t map, const char *key_name, uint64_t value)
cs_error_t | icmap_set_float_r (const icmap_map_t map, const char *key_name, float value)
cs_error_t | icmap_set_double_r (const icmap_map_t map, const char *key_name, double value)
cs_error_t | icmap_set_string_r (const icmap_map_t map, const char *key_name, const char *value)
cs_error_t | icmap_set_int8 (const char *key_name, int8_t value)
cs_error_t | icmap_set_uint8 (const char *key_name, uint8_t value)
cs_error_t | icmap_set_int16 (const char *key_name, int16_t value)
cs_error_t | icmap_set_uint16 (const char *key_name, uint16_t value)
cs_error_t | icmap_set_int32 (const char *key_name, int32_t value)
cs_error_t | icmap_set_uint32 (const char *key_name, uint32_t value)
cs_error_t | icmap_set_int64 (const char *key_name, int64_t value)
cs_error_t | icmap_set_uint64 (const char *key_name, uint64_t value)
cs_error_t | icmap_set_float (const char *key_name, float value)
cs_error_t | icmap_set_double (const char *key_name, double value)
cs_error_t | icmap_set_string (const char *key_name, const char *value)
cs_error_t | icmap_delete_r (const icmap_map_t map, const char *key_name)
| icmap_delete_r
cs_error_t | icmap_delete (const char *key_name)
| Delete key from map.
cs_error_t | icmap_get_r (const icmap_map_t map, const char *key_name, void *value, size_t *value_len, icmap_value_types_t *type)
| Same as icmap_get but it's reentrant and operates on given icmap_map.
cs_error_t | icmap_get (const char *key_name, void *value, size_t *value_len, icmap_value_types_t *type)
| Retrieve value of key key_name and store it in user preallocated value pointer.
cs_error_t | icmap_get_string_r (icmap_map_t map, const char *key_name, char **str)
cs_error_t | icmap_get_int8_r (const icmap_map_t map, const char *key_name, int8_t *i8)
cs_error_t | icmap_get_uint8_r (const icmap_map_t map, const char *key_name, uint8_t *u8)
cs_error_t | icmap_get_int16_r (const icmap_map_t map, const char *key_name, int16_t *i16)
cs_error_t | icmap_get_uint16_r (const icmap_map_t map, const char *key_name, uint16_t *u16)
cs_error_t | icmap_get_int32_r (const icmap_map_t map, const char *key_name, int32_t *i32)
cs_error_t | icmap_get_uint32_r (const icmap_map_t map, const char *key_name, uint32_t *u32)
cs_error_t | icmap_get_int64_r (const icmap_map_t map, const char *key_name, int64_t *i64)
cs_error_t | icmap_get_uint64_r (const icmap_map_t map, const char *key_name, uint64_t *u64)
cs_error_t | icmap_get_float_r (const icmap_map_t map, const char *key_name, float *flt)
cs_error_t | icmap_get_double_r (const icmap_map_t map, const char *key_name, double *dbl)
cs_error_t | icmap_get_string (const char *key_name, char **str)
| Shortcut for icmap_get for string type.
cs_error_t | icmap_get_int8 (const char *key_name, int8_t *i8)
cs_error_t | icmap_get_uint8 (const char *key_name, uint8_t *u8)
cs_error_t | icmap_get_int16 (const char *key_name, int16_t *i16)
cs_error_t | icmap_get_uint16 (const char *key_name, uint16_t *u16)
cs_error_t | icmap_get_int32 (const char *key_name, int32_t *i32)
cs_error_t | icmap_get_uint32 (const char *key_name, uint32_t *u32)
cs_error_t | icmap_get_int64 (const char *key_name, int64_t *i64)
cs_error_t | icmap_get_uint64 (const char *key_name, uint64_t *u64)
cs_error_t | icmap_get_float (const char *key_name, float *flt)
cs_error_t | icmap_get_double (const char *key_name, double *dbl)
cs_error_t | icmap_adjust_int_r (const icmap_map_t map, const char *key_name, int32_t step)
| icmap_adjust_int_r
cs_error_t | icmap_adjust_int (const char *key_name, int32_t step)
| icmap_adjust_int
cs_error_t | icmap_fast_adjust_int_r (const icmap_map_t map, const char *key_name, int32_t step)
| icmap_fast_adjust_int_r
cs_error_t | icmap_fast_adjust_int (const char *key_name, int32_t step)
| icmap_fast_adjust_int
cs_error_t | icmap_inc_r (const icmap_map_t map, const char *key_name)
| icmap_inc_r
cs_error_t | icmap_inc (const char *key_name)
| Increase stored value by one.
cs_error_t | icmap_dec_r (const icmap_map_t map, const char *key_name)
| icmap_dec_r
cs_error_t | icmap_dec (const char *key_name)
| Decrease stored value by one.
cs_error_t | icmap_fast_inc_r (const icmap_map_t map, const char *key_name)
| icmap_fast_inc_r
cs_error_t | icmap_fast_inc (const char *key_name)
| Increase stored value by one.
cs_error_t | icmap_fast_dec_r (const icmap_map_t map, const char *key_name)
| icmap_fast_dec_r
cs_error_t | icmap_fast_dec (const char *key_name)
| Decrease stored value by one.
icmap_iter_t | icmap_iter_init_r (const icmap_map_t map, const char *prefix)
| icmap_iter_init_r
icmap_iter_t | icmap_iter_init (const char *prefix)
| Initialize iterator with given prefix.
const char * | icmap_iter_next (icmap_iter_t iter, size_t *value_len, icmap_value_types_t *type)
| Return next item in iterator iter.
void | icmap_iter_finalize (icmap_iter_t iter)
| Finalize iterator.
cs_error_t | icmap_track_add (const char *key_name, int32_t track_type, icmap_notify_fn_t notify_fn, void *user_data, icmap_track_t *icmap_track)
| Add tracking function for given key_name.
cs_error_t | icmap_track_delete (icmap_track_t icmap_track)
| Remove previously added track.
void * | icmap_track_get_user_data (icmap_track_t icmap_track)
| Return user data associated with given track.
cs_error_t | icmap_set_ro_access (const char *key_name, int prefix, int ro_access)
| Set read-only access for given key (key_name) or prefix, If prefix is set.
int | icmap_is_key_ro (const char *key_name)
| Check in given key is read only.
cs_error_t | icmap_copy_map (icmap_map_t dst_map, const icmap_map_t src_map)
| Copy content of src_map icmap to dst_map icmap.

## Macro Definition Documentation

## ICMAP_MAX_VALUE_LEN

#define ICMAP_MAX_VALUE_LEN (16*1024)

Definition at line 46 of file icmap.c.

## Function Documentation

## icmap_adjust_int()

cs_error_t icmap_adjust_int | ( | const char * | key_name,
|  | int32_t | step
| ) |  |

icmap_adjust_int

Defined only for [u]int* values. It adds step to current value.

Parameters

  key_name |
  step |

Returns

Definition at line 983 of file icmap.c.

References icmap_adjust_int_r(), and icmap_item::key_name.

## icmap_adjust_int_r()

cs_error_t icmap_adjust_int_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int32_t | step
| ) |  |

icmap_adjust_int_r

Parameters

  map |
  key_name |
  step |

Returns

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().

## icmap_convert_name_to_valid_name()

void icmap_convert_name_to_valid_name | ( | char * | key_name | ) |

Converts given key_name to valid key name (replacing all prohibited characters by _)

Parameters

  key_name |

Definition at line 282 of file icmap.c.

References icmap_track::key_name.

## icmap_copy_map()

cs_error_t icmap_copy_map | ( | icmap_map_t | dst_map,
|  | const icmap_map_t | src_map
| ) |  |

Copy content of src_map icmap to dst_map icmap.

Parameters

  dst_map |
  src_map |

Returns

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.

## icmap_dec()

cs_error_t icmap_dec | ( | const char * | key_name | ) |

Decrease stored value by one.

Parameters

  key_name |

Returns

Definition at line 1063 of file icmap.c.

References icmap_dec_r(), and icmap_item::key_name.

## icmap_dec_r()

cs_error_t icmap_dec_r | ( | const icmap_map_t | map,
|  | const char * | key_name
| ) |  |

icmap_dec_r

Parameters

  map |
  key_name |

Returns

Definition at line 1058 of file icmap.c.

References icmap_adjust_int_r(), and icmap_item::key_name.

Referenced by icmap_dec().

## icmap_delete()

cs_error_t icmap_delete | ( | const char * | key_name | ) |

Delete key from map.

Parameters

  key_name |

Returns

Definition at line 657 of file icmap.c.

References icmap_delete_r(), and icmap_item::key_name.

## icmap_delete_r()

cs_error_t icmap_delete_r | ( | const icmap_map_t | map,
|  | const char * | key_name
| ) |  |

icmap_delete_r

Parameters

  map |
  key_name |

Returns

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().

## icmap_fast_adjust_int()

cs_error_t icmap_fast_adjust_int | ( | const char * | key_name,
|  | int32_t | step
| ) |  |

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.

Parameters

  key_name |
  step |

Returns

Definition at line 1040 of file icmap.c.

References icmap_fast_adjust_int_r(), and icmap_item::key_name.

## icmap_fast_adjust_int_r()

cs_error_t icmap_fast_adjust_int_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int32_t | step
| ) |  |

icmap_fast_adjust_int_r

Parameters

  map |
  key_name |
  step |

Returns

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().

## icmap_fast_dec()

cs_error_t icmap_fast_dec | ( | const char * | key_name | ) |

Decrease stored value by one.

Difference between this function and icmap_dec is same as between icmap_adjust_int and icmap_fast_adjust_int.

Parameters

  key_name |

Returns

Definition at line 1083 of file icmap.c.

References icmap_fast_dec_r(), and icmap_item::key_name.

## icmap_fast_dec_r()

cs_error_t icmap_fast_dec_r | ( | const icmap_map_t | map,
|  | const char * | key_name
| ) |  |

icmap_fast_dec_r

Parameters

  map |
  key_name |

Returns

Definition at line 1078 of file icmap.c.

References icmap_fast_adjust_int_r(), and icmap_item::key_name.

Referenced by icmap_fast_dec().

## icmap_fast_inc()

cs_error_t icmap_fast_inc | ( | const char * | key_name | ) |

Increase stored value by one.

Difference between this function and icmap_inc is same as between icmap_adjust_int and icmap_fast_adjust_int.

Parameters

  key_name |

Returns

Definition at line 1073 of file icmap.c.

References icmap_fast_inc_r(), and icmap_item::key_name.

Referenced by main_mcast().

## icmap_fast_inc_r()

cs_error_t icmap_fast_inc_r | ( | const icmap_map_t | map,
|  | const char * | key_name
| ) |  |

icmap_fast_inc_r

Parameters

  map |
  key_name |

Returns

Definition at line 1068 of file icmap.c.

References icmap_fast_adjust_int_r(), and icmap_item::key_name.

Referenced by icmap_fast_inc().

## icmap_fini()

void icmap_fini | ( | void |  | ) |

Finalize global icmap.

Definition at line 251 of file icmap.c.

References icmap_fini_r().

## icmap_fini_r()

void icmap_fini_r | ( | const icmap_map_t | map | ) |

Finalize local, reentrant icmap.

Parameters

  map |

Definition at line 242 of file icmap.c.

References icmap_map::qb_map.

Referenced by icmap_fini().

## icmap_get()

cs_error_t icmap_get | ( | const char * | key_name,
|  | void * | value,
|  | size_t * | value_len,
|  | icmap_value_types_t * | type
| ) |  |

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.

Parameters

  key_name |
  value |
  value_len |
  type |

Returns

Definition at line 729 of file icmap.c.

References icmap_get_r(), icmap_item::key_name, type, value, and icmap_item::value_len.

## icmap_get_double()

cs_error_t icmap_get_double | ( | const char * | key_name,
|  | double * | dbl
| ) |  |

Definition at line 920 of file icmap.c.

References icmap_get_double_r(), and icmap_item::key_name.

## icmap_get_double_r()

cs_error_t icmap_get_double_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | double * | dbl
| ) |  |

Definition at line 854 of file icmap.c.

References ICMAP_VALUETYPE_DOUBLE, and icmap_item::key_name.

Referenced by icmap_get_double().

## icmap_get_float()

cs_error_t icmap_get_float | ( | const char * | key_name,
|  | float * | flt
| ) |  |

Definition at line 914 of file icmap.c.

References icmap_get_float_r(), and icmap_item::key_name.

## icmap_get_float_r()

cs_error_t icmap_get_float_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | float * | flt
| ) |  |

Definition at line 848 of file icmap.c.

References ICMAP_VALUETYPE_FLOAT, and icmap_item::key_name.

Referenced by icmap_get_float().

## icmap_get_global_map()

icmap_map_t icmap_get_global_map | ( | void |  | ) |

Return global icmap.

Returns

Definition at line 268 of file icmap.c.

Referenced by main(), main_iface_change_fn(), totem_config_read(), and totem_config_validate().

## icmap_get_int16()

cs_error_t icmap_get_int16 | ( | const char * | key_name,
|  | int16_t * | i16
| ) |  |

Definition at line 878 of file icmap.c.

References icmap_get_int16_r(), and icmap_item::key_name.

## icmap_get_int16_r()

cs_error_t icmap_get_int16_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int16_t * | i16
| ) |  |

Definition at line 812 of file icmap.c.

References ICMAP_VALUETYPE_INT16, and icmap_item::key_name.

Referenced by icmap_get_int16().

## icmap_get_int32()

cs_error_t icmap_get_int32 | ( | const char * | key_name,
|  | int32_t * | i32
| ) |  |

Definition at line 890 of file icmap.c.

References icmap_get_int32_r(), and icmap_item::key_name.

## icmap_get_int32_r()

cs_error_t icmap_get_int32_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int32_t * | i32
| ) |  |

Definition at line 824 of file icmap.c.

References ICMAP_VALUETYPE_INT32, and icmap_item::key_name.

Referenced by icmap_get_int32().

## icmap_get_int64()

cs_error_t icmap_get_int64 | ( | const char * | key_name,
|  | int64_t * | i64
| ) |  |

Definition at line 902 of file icmap.c.

References icmap_get_int64_r(), and icmap_item::key_name.

## icmap_get_int64_r()

cs_error_t icmap_get_int64_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int64_t * | i64
| ) |  |

Definition at line 836 of file icmap.c.

References ICMAP_VALUETYPE_INT64, and icmap_item::key_name.

Referenced by icmap_get_int64().

## icmap_get_int8()

cs_error_t icmap_get_int8 | ( | const char * | key_name,
|  | int8_t * | i8
| ) |  |

Definition at line 866 of file icmap.c.

References icmap_get_int8_r(), and icmap_item::key_name.

## icmap_get_int8_r()

cs_error_t icmap_get_int8_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int8_t * | i8
| ) |  |

Definition at line 800 of file icmap.c.

References ICMAP_VALUETYPE_INT8, and icmap_item::key_name.

Referenced by icmap_get_int8().

## icmap_get_r()

cs_error_t icmap_get_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | void * | value,
|  | size_t * | value_len,
|  | icmap_value_types_t * | type
| ) |  |

Same as icmap_get but it's reentrant and operates on given icmap_map.

Parameters

  map |
  key_name |
  value |
  value_len |
  type |

Returns

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().

## icmap_get_string()

cs_error_t icmap_get_string | ( | const char * | key_name,
|  | char ** | str
| ) |  |

Shortcut for icmap_get for string type.

Returned string is newly allocated and caller is responsible for freeing memory

Parameters

  key_name |
  str |

Returns

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().

## icmap_get_string_r()

cs_error_t icmap_get_string_r | ( | icmap_map_t | map,
|  | const char * | key_name,
|  | char ** | str
| ) |  |

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().

## icmap_get_uint16()

cs_error_t icmap_get_uint16 | ( | const char * | key_name,
|  | uint16_t * | u16
| ) |  |

Definition at line 884 of file icmap.c.

References icmap_get_uint16_r(), and icmap_item::key_name.

Referenced by totem_config_read().

## icmap_get_uint16_r()

cs_error_t icmap_get_uint16_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint16_t * | u16
| ) |  |

Definition at line 818 of file icmap.c.

References ICMAP_VALUETYPE_UINT16, and icmap_item::key_name.

Referenced by icmap_get_uint16().

## icmap_get_uint32()

cs_error_t icmap_get_uint32 | ( | const char * | key_name,
|  | uint32_t * | u32
| ) |  |

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().

## icmap_get_uint32_r()

cs_error_t icmap_get_uint32_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint32_t * | u32
| ) |  |

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().

## icmap_get_uint64()

cs_error_t icmap_get_uint64 | ( | const char * | key_name,
|  | uint64_t * | u64
| ) |  |

Definition at line 908 of file icmap.c.

References icmap_get_uint64_r(), and icmap_item::key_name.

## icmap_get_uint64_r()

cs_error_t icmap_get_uint64_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint64_t * | u64
| ) |  |

Definition at line 842 of file icmap.c.

References ICMAP_VALUETYPE_UINT64, and icmap_item::key_name.

Referenced by icmap_get_uint64().

## icmap_get_uint8()

cs_error_t icmap_get_uint8 | ( | const char * | key_name,
|  | uint8_t * | u8
| ) |  |

Definition at line 872 of file icmap.c.

References icmap_get_uint8_r(), and icmap_item::key_name.

## icmap_get_uint8_r()

cs_error_t icmap_get_uint8_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint8_t * | u8
| ) |  |

Definition at line 806 of file icmap.c.

References ICMAP_VALUETYPE_UINT8, and icmap_item::key_name.

Referenced by icmap_get_uint8().

## icmap_get_valuetype_len()

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().

## icmap_inc()

cs_error_t icmap_inc | ( | const char * | key_name | ) |

Increase stored value by one.

Parameters

  key_name |

Returns

Definition at line 1053 of file icmap.c.

References icmap_inc_r(), and icmap_item::key_name.

## icmap_inc_r()

cs_error_t icmap_inc_r | ( | const icmap_map_t | map,
|  | const char * | key_name
| ) |  |

icmap_inc_r

Parameters

  map |
  key_name |

Returns

Definition at line 1048 of file icmap.c.

References icmap_adjust_int_r(), and icmap_item::key_name.

Referenced by icmap_inc().

## icmap_init()

cs_error_t icmap_init | ( | void |  | ) |

Initialize global icmap.

Returns

Definition at line 212 of file icmap.c.

References icmap_init_r().

Referenced by main().

## icmap_init_r()

cs_error_t icmap_init_r | ( | icmap_map_t * | result | ) |

Initialize additional (local, reentrant) icmap_map.

Content of variable result is undefined if return code is not CS_OK.

Parameters

  result |

Returns

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().

## icmap_is_key_ro()

int icmap_is_key_ro | ( | const char * | key_name | ) |

Check in given key is read only.

Returns !0 if so, otherwise (key is rw) 0.

Parameters

  key_name |

Returns

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.

## icmap_iter_finalize()

void icmap_iter_finalize | ( | icmap_iter_t | iter | ) |

Finalize iterator.

Parameters

  iter |

Definition at line 1120 of file icmap.c.

Referenced by icmap_copy_map().

## icmap_iter_init()

icmap_iter_t icmap_iter_init | ( | const char * | prefix | ) |

Initialize iterator with given prefix.

Parameters

  prefix |

Returns

Definition at line 1093 of file icmap.c.

References icmap_iter_init_r().

## icmap_iter_init_r()

icmap_iter_t icmap_iter_init_r | ( | const icmap_map_t | map,
|  | const char * | prefix
| ) |  |

icmap_iter_init_r

Parameters

  map |
  prefix |

Returns

Definition at line 1088 of file icmap.c.

References icmap_map::qb_map.

Referenced by icmap_copy_map(), and icmap_iter_init().

## icmap_iter_next()

const char * icmap_iter_next | ( | icmap_iter_t | iter,
|  | size_t * | value_len,
|  | icmap_value_types_t * | type
| ) |  |

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.

Parameters

  iter |
  value_len |
  type |

Returns

Definition at line 1099 of file icmap.c.

References icmap_item::type, type, and icmap_item::value_len.

Referenced by icmap_copy_map().

## icmap_key_value_eq()

int icmap_key_value_eq | ( | const icmap_map_t | map1,
|  | const char * | key_name1,
|  | const icmap_map_t | map2,
|  | const char * | key_name2
| ) |  |

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.

Parameters

  map1 |
  key_name1 |
  map2 |
  key_name2 |

Returns

Definition at line 389 of file icmap.c.

References icmap_map::qb_map, icmap_item::type, icmap_item::value, and icmap_item::value_len.

## icmap_qbtt_to_tt()

int32_t icmap_qbtt_to_tt | ( | int32_t | track_type | ) |

Definition at line 150 of file icmap.c.

References ICMAP_TRACK_ADD, ICMAP_TRACK_DELETE, ICMAP_TRACK_MODIFY, and ICMAP_TRACK_PREFIX.

## icmap_set()

cs_error_t icmap_set | ( | const char * | key_name,
|  | const void * | value,
|  | size_t | value_len,
|  | icmap_value_types_t | type
| ) |  |

Store value with value_len length and type as key_name name in global icmap.

Parameters

  key_name |
  value |
  value_len |
  type |

Returns

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().

## icmap_set_double()

cs_error_t icmap_set_double | ( | const char * | key_name,
|  | double | value
| ) |  |

Definition at line 625 of file icmap.c.

References icmap_set_double_r(), icmap_item::key_name, and value.

## icmap_set_double_r()

cs_error_t icmap_set_double_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | double | value
| ) |  |

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().

## icmap_set_float()

cs_error_t icmap_set_float | ( | const char * | key_name,
|  | float | value
| ) |  |

Definition at line 619 of file icmap.c.

References icmap_set_float_r(), icmap_item::key_name, and value.

## icmap_set_float_r()

cs_error_t icmap_set_float_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | float | value
| ) |  |

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().

## icmap_set_int16()

cs_error_t icmap_set_int16 | ( | const char * | key_name,
|  | int16_t | value
| ) |  |

Definition at line 583 of file icmap.c.

References icmap_set_int16_r(), icmap_item::key_name, and value.

## icmap_set_int16_r()

cs_error_t icmap_set_int16_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int16_t | value
| ) |  |

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().

## icmap_set_int32()

cs_error_t icmap_set_int32 | ( | const char * | key_name,
|  | int32_t | value
| ) |  |

Definition at line 595 of file icmap.c.

References icmap_set_int32_r(), icmap_item::key_name, and value.

## icmap_set_int32_r()

cs_error_t icmap_set_int32_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int32_t | value
| ) |  |

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().

## icmap_set_int64()

cs_error_t icmap_set_int64 | ( | const char * | key_name,
|  | int64_t | value
| ) |  |

Definition at line 607 of file icmap.c.

References icmap_set_int64_r(), icmap_item::key_name, and value.

## icmap_set_int64_r()

cs_error_t icmap_set_int64_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int64_t | value
| ) |  |

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().

## icmap_set_int8()

cs_error_t icmap_set_int8 | ( | const char * | key_name,
|  | int8_t | value
| ) |  |

Definition at line 571 of file icmap.c.

References icmap_set_int8_r(), icmap_item::key_name, and value.

## icmap_set_int8_r()

cs_error_t icmap_set_int8_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | int8_t | value
| ) |  |

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().

## icmap_set_r()

cs_error_t icmap_set_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | const void * | value,
|  | size_t | value_len,
|  | icmap_value_types_t | type
| ) |  |

Reentrant version of icmap_set.

Parameters

  map |
  key_name |
  value |
  value_len |
  type |

Returns

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().

## icmap_set_ro_access()

cs_error_t icmap_set_ro_access | ( | const char * | key_name,
|  | int | prefix,
|  | int | ro_access
| ) |  |

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.)

Parameters

  key_name |
  prefix |
  ro_access |

Returns

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().

## icmap_set_string()

cs_error_t icmap_set_string | ( | const char * | key_name,
|  | const char * | value
| ) |  |

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().

## icmap_set_string_r()

cs_error_t icmap_set_string_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | const char * | value
| ) |  |

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().

## icmap_set_uint16()

cs_error_t icmap_set_uint16 | ( | const char * | key_name,
|  | uint16_t | value
| ) |  |

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().

## icmap_set_uint16_r()

cs_error_t icmap_set_uint16_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint16_t | value
| ) |  |

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().

## icmap_set_uint32()

cs_error_t icmap_set_uint32 | ( | const char * | key_name,
|  | uint32_t | value
| ) |  |

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().

## icmap_set_uint32_r()

cs_error_t icmap_set_uint32_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint32_t | value
| ) |  |

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().

## icmap_set_uint64()

cs_error_t icmap_set_uint64 | ( | const char * | key_name,
|  | uint64_t | value
| ) |  |

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().

## icmap_set_uint64_r()

cs_error_t icmap_set_uint64_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint64_t | value
| ) |  |

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().

## icmap_set_uint8()

cs_error_t icmap_set_uint8 | ( | const char * | key_name,
|  | uint8_t | value
| ) |  |

Definition at line 577 of file icmap.c.

References icmap_set_uint8_r(), icmap_item::key_name, and value.

## icmap_set_uint8_r()

cs_error_t icmap_set_uint8_r | ( | const icmap_map_t | map,
|  | const char * | key_name,
|  | uint8_t | value
| ) |  |

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().

## icmap_track_add()

cs_error_t icmap_track_add | ( | const char * | key_name,
|  | int32_t | track_type,
|  | icmap_notify_fn_t | notify_fn,
|  | void * | user_data,
|  | icmap_track_t * | icmap_track
| ) |  |

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.

Parameters

  key_name |
  track_type |
  notify_fn |
  user_data |
  icmap_track |

Returns

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.

## icmap_track_delete()

cs_error_t icmap_track_delete | ( | icmap_track_t | icmap_track | ) |

Remove previously added track.

Parameters

  icmap_track |

Returns

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.

## icmap_track_get_user_data()

void * icmap_track_get_user_data | ( | icmap_track_t | icmap_track | ) |

Return user data associated with given track.

Parameters

  icmap_track |

Returns

Definition at line 1224 of file icmap.c.

References icmap_track::user_data.

## icmap_tt_to_qbtt()

int32_t icmap_tt_to_qbtt | ( | int32_t | track_type | ) |

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().

## QB_LIST_DECLARE() [1/2]

QB_LIST_DECLARE | ( | icmap_ro_access_item_list_head |  | ) |

## QB_LIST_DECLARE() [2/2]

QB_LIST_DECLARE | ( | icmap_track_list_head |  | ) |