Lines Matching refs:rule
82 struct rule { struct
98 static inline unsigned int rule_hash(const struct rule *rule) in rule_hash() argument
100 return rule_values_hash(rule->type, rule->target); in rule_hash()
210 struct rule *rule; in kabi_read_rules() local
231 rule = xmalloc(sizeof(*rule)); in kabi_read_rules()
233 rule->type = type; in kabi_read_rules()
234 rule->target = xstrdup(get_rule_field(&rule_str, &left)); in kabi_read_rules()
235 rule->value = xstrdup(get_rule_field(&rule_str, &left)); in kabi_read_rules()
237 hash_add(rules, &rule->hash, rule_hash(rule)); in kabi_read_rules()
240 rule->target, rule->value); in kabi_read_rules()
259 static struct rule *find_rule(enum kabi_rule_type type, const char *target) in find_rule()
261 struct rule *rule; in find_rule() local
268 hash_for_each_possible(rules, rule, hash, in find_rule()
270 if (rule->type == type && !strcmp(target, rule->target)) in find_rule()
271 return rule; in find_rule()
277 static struct rule *find_enumerator_rule(enum kabi_rule_type type, in find_enumerator_rule()
280 struct rule *rule; in find_enumerator_rule() local
289 rule = find_rule(type, target); in find_enumerator_rule()
292 return rule; in find_enumerator_rule()
323 struct rule *rule; in kabi_get_enumerator_value() local
325 rule = find_enumerator_rule(KABI_RULE_TYPE_ENUMERATOR_VALUE, fqn, in kabi_get_enumerator_value()
327 if (rule) { in kabi_get_enumerator_value()
328 *value = get_ulong_value(rule->value); in kabi_get_enumerator_value()
337 struct rule *rule; in kabi_get_byte_size() local
339 rule = find_rule(KABI_RULE_TYPE_BYTE_SIZE, fqn); in kabi_get_byte_size()
340 if (rule) { in kabi_get_byte_size()
341 *value = get_ulong_value(rule->value); in kabi_get_byte_size()
350 struct rule *rule; in kabi_get_type_string() local
352 rule = find_rule(KABI_RULE_TYPE_TYPE_STRING, type); in kabi_get_type_string()
353 if (rule) { in kabi_get_type_string()
354 *str = rule->value; in kabi_get_type_string()
364 struct rule *rule; in kabi_free() local
366 hash_for_each_safe(rules, rule, tmp, hash) { in kabi_free()
367 free((void *)rule->target); in kabi_free()
368 free((void *)rule->value); in kabi_free()
369 free(rule); in kabi_free()