corosync  2.3.2
icmap.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2012 Red Hat, Inc.
3  *
4  * Author: Jan Friesse (jfriesse@redhat.com)
5  *
6  * All rights reserved.
7  *
8  * This software licensed under BSD license, the text of which follows:
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions are met:
12  *
13  * - Redistributions of source code must retain the above copyright notice,
14  * this list of conditions and the following disclaimer.
15  * - Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  * - Neither the name of the Red Hat, Inc. nor the names of its
19  * contributors may be used to endorse or promote products derived from this
20  * software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32  * THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 #ifndef ICMAP_H_DEFINED
35 #define ICMAP_H_DEFINED
36 
37 #include <stdlib.h>
38 #include <corosync/corotypes.h>
39 #include <qb/qbmap.h>
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /*
46  * Maximum length of key in icmap
47  */
48 #define ICMAP_KEYNAME_MAXLEN 255
49 
50 /*
51  * Minimum lenght of key in icmap
52  */
53 #define ICMAP_KEYNAME_MINLEN 3
54 
55 /*
56  * Possible types of value. Binary is raw data without trailing zero with given length
57  */
58 typedef enum {
72 
73 /*
74  * Tracking values.
75  */
76 #define ICMAP_TRACK_ADD 4
77 #define ICMAP_TRACK_DELETE 1
78 #define ICMAP_TRACK_MODIFY 2
79 /*
80  * Whole prefix is tracked, instead of key only (so "totem." tracking means that
81  * "totem.nodeid", "totem.version", ... applies). This value is also never returned
82  * inside of callback and is used only in adding track
83  */
84 #define ICMAP_TRACK_PREFIX 8
85 
86 /*
87  * Structure passed as new_value and old_value in change callback. It contains type of
88  * key, length of key and pointer to value of key
89  */
92  size_t len;
93  const void *data;
94 };
95 
96 /*
97  * Prototype for notify callback function. Even is one of ICMAP_TRACK_* event, key_name is
98  * changed key, new and old_value contains values or are zeroed (in other words, type is non
99  * existing 0 type) if there were no old (creating of key) or new (deleting of key) value.
100  * user_data are passed when adding tracking.
101  */
102 typedef void (*icmap_notify_fn_t) (
103  int32_t event,
104  const char *key_name,
105  struct icmap_notify_value new_value,
106  struct icmap_notify_value old_value,
107  void *user_data);
108 
109 /*
110  * icmap type.
111  * icmap.c contains global variable (icmap_global_map) of this type. This
112  * is used in every non-reentant call. Also only in this table are implemented
113  * operations like set_ro and tracking of values. Other tables (created by
114  * icmap_init_r) are simple map tables with get/set/iter operations.
115  */
116 typedef struct icmap_map *icmap_map_t;
117 
118 /*
119  * Itterator type
120  */
121 typedef qb_map_iter_t *icmap_iter_t;
122 
123 /*
124  * Track type
125  */
126 typedef struct icmap_track *icmap_track_t;
127 
128 /*
129  * Initialize global icmap
130  */
131 extern cs_error_t icmap_init(void);
132 
133 /*
134  * Initialize additional (local, reentrant) icmap_map. Content of variable
135  * result is undefined if return code is not CS_OK.
136  */
137 extern cs_error_t icmap_init_r(icmap_map_t *result);
138 
139 /*
140  * Finalize global icmap
141  */
142 extern void icmap_fini(void);
143 
144 /*
145  * Finalize local, reentrant icmap
146  */
147 extern void icmap_fini_r(const icmap_map_t map);
148 
149 /*
150  * Return global icmap
151  */
152 extern icmap_map_t icmap_get_global_map(void);
153 
154 /*
155  * Compare value of key with name key_name1 in map1 with key with name key_name2
156  * in map2. Two values must have same type, length and value to be considered equal.
157  * Function returns 0 when any of map1, key_name1, map2, key_name2 are NULL, or
158  * key_name is not found in map, or keys are not equal. != 0 is returned when
159  * values are equal.
160  */
161 extern int icmap_key_value_eq(
162  const icmap_map_t map1,
163  const char *key_name1,
164  const icmap_map_t map2,
165  const char *key_name2);
166 
167 /*
168  * Store value with value_len length and type as key_name name in global icmap.
169  */
170 extern cs_error_t icmap_set(
171  const char *key_name,
172  const void *value,
173  size_t value_len,
175 
176 /*
177  * Reentrant version of icmap_set
178  */
179 extern cs_error_t icmap_set_r(
180  const icmap_map_t map,
181  const char *key_name,
182  const void *value,
183  size_t value_len,
185 
186 /*
187  * Shortcuts for setting values
188  */
189 extern cs_error_t icmap_set_int8(const char *key_name, int8_t value);
190 extern cs_error_t icmap_set_uint8(const char *key_name, uint8_t value);
191 extern cs_error_t icmap_set_int16(const char *key_name, int16_t value);
192 extern cs_error_t icmap_set_uint16(const char *key_name, uint16_t value);
193 extern cs_error_t icmap_set_int32(const char *key_name, int32_t value);
194 extern cs_error_t icmap_set_uint32(const char *key_name, uint32_t value);
195 extern cs_error_t icmap_set_int64(const char *key_name, int64_t value);
196 extern cs_error_t icmap_set_uint64(const char *key_name, uint64_t value);
197 extern cs_error_t icmap_set_float(const char *key_name, float value);
198 extern cs_error_t icmap_set_double(const char *key_name, double value);
199 extern cs_error_t icmap_set_string(const char *key_name, const char *value);
200 
201 extern cs_error_t icmap_set_int8_r(const icmap_map_t map, const char *key_name, int8_t value);
202 extern cs_error_t icmap_set_uint8_r(const icmap_map_t map, const char *key_name, uint8_t value);
203 extern cs_error_t icmap_set_int16_r(const icmap_map_t map, const char *key_name, int16_t value);
204 extern cs_error_t icmap_set_uint16_r(const icmap_map_t map, const char *key_name, uint16_t value);
205 extern cs_error_t icmap_set_int32_r(const icmap_map_t map, const char *key_name, int32_t value);
206 extern cs_error_t icmap_set_uint32_r(const icmap_map_t map, const char *key_name, uint32_t value);
207 extern cs_error_t icmap_set_int64_r(const icmap_map_t map, const char *key_name, int64_t value);
208 extern cs_error_t icmap_set_uint64_r(const icmap_map_t map, const char *key_name, uint64_t value);
209 extern cs_error_t icmap_set_float_r(const icmap_map_t map, const char *key_name, float value);
210 extern cs_error_t icmap_set_double_r(const icmap_map_t map, const char *key_name, double value);
211 extern cs_error_t icmap_set_string_r(const icmap_map_t map, const char *key_name, const char *value);
212 
213 /*
214  * Delete key from map
215  */
216 extern cs_error_t icmap_delete(const char *key_name);
217 
218 extern cs_error_t icmap_delete_r(const icmap_map_t map, const char *key_name);
219 
220 /*
221  * Retrieve value of key key_name and store it in user preallocated value pointer.
222  * value can be NULL, and then only value_len and/or type is returned (both of them
223  * can also be NULL). If value is not NULL, actual length of value in map is checked
224  * against value_len. If *value_len is shorter then length of value in map, error
225  * CS_ERR_INVALID_PARAM is returned. After successful copy of value, value_len is
226  * set to actual length of value in map.
227  */
228 extern cs_error_t icmap_get(
229  const char *key_name,
230  void *value,
231  size_t *value_len,
233 
234 /*
235  * Same as icmap_get but it's reentrant and operates on given icmap_map
236  */
237 extern cs_error_t icmap_get_r(
238  const icmap_map_t map,
239  const char *key_name,
240  void *value,
241  size_t *value_len,
243 
244 /*
245  * Shortcuts for icmap_get
246  */
247 extern cs_error_t icmap_get_int8(const char *key_name, int8_t *i8);
248 extern cs_error_t icmap_get_uint8(const char *key_name, uint8_t *u8);
249 extern cs_error_t icmap_get_int16(const char *key_name, int16_t *i16);
250 extern cs_error_t icmap_get_uint16(const char *key_name, uint16_t *u16);
251 extern cs_error_t icmap_get_int32(const char *key_name, int32_t *i32);
252 extern cs_error_t icmap_get_uint32(const char *key_name, uint32_t *u32);
253 extern cs_error_t icmap_get_int64(const char *key_name, int64_t *i64);
254 extern cs_error_t icmap_get_uint64(const char *key_name, uint64_t *u64);
255 extern cs_error_t icmap_get_float(const char *key_name, float *flt);
256 extern cs_error_t icmap_get_double(const char *key_name, double *dbl);
257 
258 /*
259  * Shortcuts for icmap_get_r
260  */
261 extern cs_error_t icmap_get_int8_r(const icmap_map_t map, const char *key_name, int8_t *i8);
262 extern cs_error_t icmap_get_uint8_r(const icmap_map_t map, const char *key_name, uint8_t *u8);
263 extern cs_error_t icmap_get_int16_r(const icmap_map_t map, const char *key_name, int16_t *i16);
264 extern cs_error_t icmap_get_uint16_r(const icmap_map_t map, const char *key_name, uint16_t *u16);
265 extern cs_error_t icmap_get_int32_r(const icmap_map_t map, const char *key_name, int32_t *i32);
266 extern cs_error_t icmap_get_uint32_r(const icmap_map_t map, const char *key_name, uint32_t *u32);
267 extern cs_error_t icmap_get_int64_r(const icmap_map_t map, const char *key_name, int64_t *i64);
268 extern cs_error_t icmap_get_uint64_r(const icmap_map_t map, const char *key_name, uint64_t *u64);
269 extern cs_error_t icmap_get_float_r(const icmap_map_t map, const char *key_name, float *flt);
270 extern cs_error_t icmap_get_double_r(const icmap_map_t map, const char *key_name, double *dbl);
271 
272 /*
273  * Shortcut for icmap_get for string type. Returned string is newly allocated and
274  * caller is responsible for freeing memory
275  */
276 extern cs_error_t icmap_get_string(const char *key_name, char **str);
277 
278 /*
279  * Defined only for [u]int* values. It adds step to current value.
280  */
281 extern cs_error_t icmap_adjust_int(const char *key_name, int32_t step);
282 
283 extern cs_error_t icmap_adjust_int_r(const icmap_map_t map, const char *key_name, int32_t step);
284 
285 /*
286  * Defined only for [u]int* values. It adds step to current value. Difference
287  * between this function and icmap_adjust_int is given in fact, that in
288  * tracking callback, old value is undefined, but whole process is done
289  * without malloc/memcpy.
290  */
291 extern cs_error_t icmap_fast_adjust_int(const char *key_name, int32_t step);
292 
293 extern cs_error_t icmap_fast_adjust_int_r(const icmap_map_t map, const char *key_name, int32_t step);
294 
295 /*
296  * Increase stored value by one
297  */
298 extern cs_error_t icmap_inc(const char *key_name);
299 
300 extern cs_error_t icmap_inc_r(const icmap_map_t map, const char *key_name);
301 
302 /*
303  * Decrease stored value by one
304  */
305 extern cs_error_t icmap_dec(const char *key_name);
306 
307 extern cs_error_t icmap_dec_r(const icmap_map_t map, const char *key_name);
308 
309 /*
310  * Increase stored value by one. Difference between this function and icmap_inc
311  * is same as between icmap_adjust_int and icmap_fast_adjust_int.
312  */
313 extern cs_error_t icmap_fast_inc(const char *key_name);
314 
315 extern cs_error_t icmap_fast_inc_r(const icmap_map_t map, const char *key_name);
316 
317 /*
318  * Decrease stored value by one. Difference between this function and icmap_dec
319  * is same as between icmap_adjust_int and icmap_fast_adjust_int.
320  */
321 extern cs_error_t icmap_fast_dec(const char *key_name);
322 
323 extern cs_error_t icmap_fast_dec_r(const icmap_map_t map, const char *key_name);
324 
325 /*
326  * Initialize iterator with given prefix
327  */
328 extern icmap_iter_t icmap_iter_init(const char *prefix);
329 
330 extern icmap_iter_t icmap_iter_init_r(const icmap_map_t map, const char *prefix);
331 
332 /*
333  * Return next item in iterator iter. value_len and type are optional (= can be NULL), but if set,
334  * length of returned value and/or type is returned. Function returns following key_name or NULL if
335  * iteration is over.
336  */
337 extern const char *icmap_iter_next(icmap_iter_t iter, size_t *value_len, icmap_value_types_t *type);
338 
339 /*
340  * Finalize iterator
341  */
342 extern void icmap_iter_finalize(icmap_iter_t iter);
343 
344 /*
345  * Add tracking function for given key_name. Tracked changes (add|modify|delete) depend on track_type,
346  * which is bitwise or of ICMAP_TRACK_* values. notify_fn is called on change, where user_data pointer
347  * is passed (unchanged). Value which can be used to delete tracking is passed as icmap_track.
348  */
350  const char *key_name,
351  int32_t track_type,
353  void *user_data,
354  icmap_track_t *icmap_track);
355 
356 /*
357  * Return user data associated with given track
358  */
359 extern void *icmap_track_get_user_data(icmap_track_t icmap_track);
360 
361 /*
362  * Remove previously added track
363  */
364 extern cs_error_t icmap_track_delete(icmap_track_t icmap_track);
365 
366 /*
367  * Set read-only access for given key (key_name) or prefix, if prefix is set. ro_access
368  * can be !0, which means, that old information about ro of this key is deleted.
369  * Read-only access is used only in CMAP service! (in other word it prevents users
370  * from deleting/changing key, but doesn't guarantee anything for internal icmap users.
371  */
372 extern cs_error_t icmap_set_ro_access(const char *key_name, int prefix, int ro_access);
373 
374 /*
375  * Check in given key is read only. Returns !0 if so, otherwise (key is rw) 0.
376  */
377 extern int icmap_is_key_ro(const char *key_name);
378 
379 /*
380  * Converts given key_name to valid key name (replacing all prohibited characters by _)
381  */
382 extern void icmap_convert_name_to_valid_name(char *key_name);
383 
384 /*
385  * Copy content of src_map icmap to dst_map icmap.
386  */
387 extern cs_error_t icmap_copy_map(icmap_map_t dst_map, const icmap_map_t src_map);
388 
389 #ifdef __cplusplus
390 }
391 #endif
392 
393 #endif /* ICMAP_H_DEFINED */
cs_error_t icmap_set_int16(const char *key_name, int16_t value)
Definition: icmap.c:593
icmap_notify_fn_t notify_fn
Definition: icmap.c:64
void * icmap_track_get_user_data(icmap_track_t icmap_track)
Definition: icmap.c:1228
cs_error_t icmap_get_uint8_r(const icmap_map_t map, const char *key_name, uint8_t *u8)
Definition: icmap.c:782
const char * icmap_iter_next(icmap_iter_t iter, size_t *value_len, icmap_value_types_t *type)
Definition: icmap.c:1103
size_t len
Definition: icmap.h:92
cs_error_t icmap_adjust_int(const char *key_name, int32_t step)
Definition: icmap.c:987
uint32_t value
cs_error_t icmap_copy_map(icmap_map_t dst_map, const icmap_map_t src_map)
Definition: icmap.c:1306
cs_error_t icmap_set_int16_r(const icmap_map_t map, const char *key_name, int16_t value)
Definition: icmap.c:523
cs_error_t icmap_set_int64(const char *key_name, int64_t value)
Definition: icmap.c:617
void icmap_iter_finalize(icmap_iter_t iter)
Definition: icmap.c:1124
cs_error_t icmap_set(const char *key_name, const void *value, size_t value_len, icmap_value_types_t type)
Definition: icmap.c:501
cs_error_t icmap_set_uint64_r(const icmap_map_t map, const char *key_name, uint64_t value)
Definition: icmap.c:553
int icmap_key_value_eq(const icmap_map_t map1, const char *key_name1, const icmap_map_t map2, const char *key_name2)
Definition: icmap.c:399
cs_error_t icmap_set_int32_r(const icmap_map_t map, const char *key_name, int32_t value)
Definition: icmap.c:535
cs_error_t icmap_get_int16(const char *key_name, int16_t *i16)
Definition: icmap.c:848
cs_error_t icmap_get_double_r(const icmap_map_t map, const char *key_name, double *dbl)
Definition: icmap.c:830
cs_error_t icmap_set_string(const char *key_name, const char *value)
Definition: icmap.c:641
cs_error_t icmap_set_double_r(const icmap_map_t map, const char *key_name, double value)
Definition: icmap.c:565
void icmap_fini_r(const icmap_map_t map)
Definition: icmap.c:252
icmap_map_t icmap_get_global_map(void)
Definition: icmap.c:278
cs_error_t icmap_inc(const char *key_name)
Definition: icmap.c:1057
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)
Definition: icmap.h:102
cs_error_t icmap_get_int32_r(const icmap_map_t map, const char *key_name, int32_t *i32)
Definition: icmap.c:800
void icmap_fini(void)
Definition: icmap.c:261
cs_error_t icmap_get_int32(const char *key_name, int32_t *i32)
Definition: icmap.c:860
cs_error_t icmap_set_string_r(const icmap_map_t map, const char *key_name, const char *value)
Definition: icmap.c:571
cs_error_t icmap_get_int64(const char *key_name, int64_t *i64)
Definition: icmap.c:872
cs_error_t icmap_get_uint64_r(const icmap_map_t map, const char *key_name, uint64_t *u64)
Definition: icmap.c:818
cs_error_t icmap_get_uint8(const char *key_name, uint8_t *u8)
Definition: icmap.c:842
cs_error_t icmap_get_float_r(const icmap_map_t map, const char *key_name, float *flt)
Definition: icmap.c:824
cs_error_t icmap_set_int8(const char *key_name, int8_t value)
Definition: icmap.c:581
cs_error_t icmap_set_uint8_r(const icmap_map_t map, const char *key_name, uint8_t value)
Definition: icmap.c:517
cs_error_t icmap_get_int16_r(const icmap_map_t map, const char *key_name, int16_t *i16)
Definition: icmap.c:788
cs_error_t icmap_set_uint32(const char *key_name, uint32_t value)
Definition: icmap.c:611
void * user_data
Definition: sam.c:126
cs_error_t icmap_set_int8_r(const icmap_map_t map, const char *key_name, int8_t value)
Definition: icmap.c:511
const void * data
Definition: icmap.h:93
cs_error_t icmap_set_uint32_r(const icmap_map_t map, const char *key_name, uint32_t value)
Definition: icmap.c:541
icmap_value_types_t type
Definition: icmap.h:91
cs_error_t icmap_set_float(const char *key_name, float value)
Definition: icmap.c:629
cs_error_t icmap_inc_r(const icmap_map_t map, const char *key_name)
Definition: icmap.c:1052
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)
Definition: icmap.c:421
cs_error_t icmap_delete(const char *key_name)
Definition: icmap.c:667
cs_error_t icmap_get(const char *key_name, void *value, size_t *value_len, icmap_value_types_t *type)
Definition: icmap.c:739
cs_error_t
Definition: corotypes.h:78
cs_error_t icmap_track_delete(icmap_track_t icmap_track)
Definition: icmap.c:1212
cs_error_t icmap_set_uint16(const char *key_name, uint16_t value)
Definition: icmap.c:599
cs_error_t icmap_get_uint32_r(const icmap_map_t map, const char *key_name, uint32_t *u32)
Definition: icmap.c:806
cs_error_t icmap_dec(const char *key_name)
Definition: icmap.c:1067
cs_error_t icmap_get_uint32(const char *key_name, uint32_t *u32)
Definition: icmap.c:866
cs_error_t icmap_get_uint16_r(const icmap_map_t map, const char *key_name, uint16_t *u16)
Definition: icmap.c:794
cs_error_t icmap_set_uint64(const char *key_name, uint64_t value)
Definition: icmap.c:623
int icmap_is_key_ro(const char *key_name)
Definition: icmap.c:1280
int32_t track_type
Definition: icmap.c:63
cs_error_t icmap_fast_adjust_int_r(const icmap_map_t map, const char *key_name, int32_t step)
Definition: icmap.c:995
cs_error_t icmap_set_float_r(const icmap_map_t map, const char *key_name, float value)
Definition: icmap.c:559
cs_error_t icmap_fast_inc(const char *key_name)
Definition: icmap.c:1077
cs_error_t icmap_set_uint16_r(const icmap_map_t map, const char *key_name, uint16_t value)
Definition: icmap.c:529
cs_error_t icmap_set_int32(const char *key_name, int32_t value)
Definition: icmap.c:605
cs_error_t icmap_fast_inc_r(const icmap_map_t map, const char *key_name)
Definition: icmap.c:1072
cs_error_t icmap_get_int8_r(const icmap_map_t map, const char *key_name, int8_t *i8)
Definition: icmap.c:776
struct icmap_track * icmap_track_t
Definition: icmap.h:126
cs_error_t icmap_get_uint64(const char *key_name, uint64_t *u64)
Definition: icmap.c:878
cs_error_t icmap_fast_dec_r(const icmap_map_t map, const char *key_name)
Definition: icmap.c:1082
cs_error_t icmap_delete_r(const icmap_map_t map, const char *key_name)
Definition: icmap.c:647
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)
Definition: icmap.c:706
cs_error_t icmap_dec_r(const icmap_map_t map, const char *key_name)
Definition: icmap.c:1062
cs_error_t icmap_set_double(const char *key_name, double value)
Definition: icmap.c:635
cs_error_t icmap_init_r(icmap_map_t *result)
Definition: icmap.c:203
cs_error_t icmap_get_string(const char *key_name, char **str)
Definition: icmap.c:896
struct icmap_map * icmap_map_t
Definition: icmap.h:116
cs_error_t icmap_set_uint8(const char *key_name, uint8_t value)
Definition: icmap.c:587
char type
Definition: totemrrp.c:485
cs_error_t icmap_set_ro_access(const char *key_name, int prefix, int ro_access)
Definition: icmap.c:1233
cs_error_t icmap_get_double(const char *key_name, double *dbl)
Definition: icmap.c:890
void icmap_convert_name_to_valid_name(char *key_name)
Definition: icmap.c:292
cs_error_t icmap_set_int64_r(const icmap_map_t map, const char *key_name, int64_t value)
Definition: icmap.c:547
cs_error_t icmap_get_int64_r(const icmap_map_t map, const char *key_name, int64_t *i64)
Definition: icmap.c:812
cs_error_t icmap_fast_adjust_int(const char *key_name, int32_t step)
Definition: icmap.c:1044
icmap_iter_t icmap_iter_init_r(const icmap_map_t map, const char *prefix)
Definition: icmap.c:1092
cs_error_t icmap_get_float(const char *key_name, float *flt)
Definition: icmap.c:884
icmap_iter_t icmap_iter_init(const char *prefix)
Definition: icmap.c:1097
icmap_value_types_t
Definition: icmap.h:58
cs_error_t icmap_fast_dec(const char *key_name)
Definition: icmap.c:1087
cs_error_t icmap_get_uint16(const char *key_name, uint16_t *u16)
Definition: icmap.c:854
cs_error_t icmap_init(void)
Definition: icmap.c:221
cs_error_t icmap_adjust_int_r(const icmap_map_t map, const char *key_name, int32_t step)
Definition: icmap.c:930
qb_map_iter_t * icmap_iter_t
Definition: icmap.h:121
cs_error_t icmap_get_int8(const char *key_name, int8_t *i8)
Definition: icmap.c:836
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)
Definition: icmap.c:1167