kvargs: add get by key

Adds a new function to get value of a specific key from kvargs list.

Signed-off-by: Xueming Li <xuemingl@nvidia.com>
Reviewed-by: Gaetan Rivet <grive@u256.net>
This commit is contained in:
Xueming Li 2021-04-13 03:14:10 +00:00 committed by Thomas Monjalon
parent e132ee8690
commit 3ab385063c
3 changed files with 37 additions and 0 deletions

View File

@ -203,6 +203,21 @@ rte_kvargs_free(struct rte_kvargs *kvlist)
free(kvlist);
}
/* Lookup a value in an rte_kvargs list by its key. */
const char *
rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key)
{
unsigned int i;
if (kvlist == NULL || key == NULL)
return NULL;
for (i = 0; i < kvlist->count; ++i) {
if (strcmp(kvlist->pairs[i].key, key) == 0)
return kvlist->pairs[i].value;
}
return NULL;
}
/*
* Parse the arguments "key=value,key=value,..." string and return
* an allocated structure that contains a key/value list. Also

View File

@ -114,6 +114,26 @@ struct rte_kvargs *rte_kvargs_parse_delim(const char *args,
*/
void rte_kvargs_free(struct rte_kvargs *kvlist);
/**
* Get the value associated with a given key.
*
* If multiple key matches, the value of the first one is returned.
*
* The memory returned is allocated as part of the rte_kvargs structure,
* it must never be modified.
*
* @param kvlist
* A list of rte_kvargs pair of 'key=value'.
* @param key
* The matching key.
* @return
* NULL if no key matches the input,
* a value associated with a matching key otherwise.
*/
__rte_experimental
const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
/**
* Call a handler function for each key/value matching the key
*

View File

@ -15,4 +15,6 @@ EXPERIMENTAL {
rte_kvargs_parse_delim;
rte_kvargs_strcmp;
# added in 21.05
rte_kvargs_get;
};