105fa3d4aSRosen Xu /* SPDX-License-Identifier: BSD-3-Clause
205fa3d4aSRosen Xu * Copyright(c) 2010-2018 Intel Corporation
305fa3d4aSRosen Xu */
405fa3d4aSRosen Xu
505fa3d4aSRosen Xu #ifndef _IFPGA_COMMON_H_
605fa3d4aSRosen Xu #define _IFPGA_COMMON_H_
705fa3d4aSRosen Xu
89c89c333SDavid Marchand #include <errno.h>
99c89c333SDavid Marchand #include <stdlib.h>
109c89c333SDavid Marchand #include <string.h>
119c89c333SDavid Marchand
12*925c074eSDavid Marchand #include <bus_ifpga_driver.h>
139c89c333SDavid Marchand #include <rte_common.h>
149c89c333SDavid Marchand
159c89c333SDavid Marchand static inline int
ifpga_get_string_arg(const char * key __rte_unused,const char * value,void * extra_args)169c89c333SDavid Marchand ifpga_get_string_arg(const char *key __rte_unused, const char *value,
179c89c333SDavid Marchand void *extra_args)
189c89c333SDavid Marchand {
199c89c333SDavid Marchand if (!value || !extra_args)
209c89c333SDavid Marchand return -EINVAL;
219c89c333SDavid Marchand
229c89c333SDavid Marchand *(char **)extra_args = strdup(value);
239c89c333SDavid Marchand
249c89c333SDavid Marchand if (!*(char **)extra_args)
259c89c333SDavid Marchand return -ENOMEM;
269c89c333SDavid Marchand
279c89c333SDavid Marchand return 0;
289c89c333SDavid Marchand }
299c89c333SDavid Marchand
309c89c333SDavid Marchand static inline int
ifpga_get_integer32_arg(const char * key __rte_unused,const char * value,void * extra_args)319c89c333SDavid Marchand ifpga_get_integer32_arg(const char *key __rte_unused, const char *value,
329c89c333SDavid Marchand void *extra_args)
339c89c333SDavid Marchand {
349c89c333SDavid Marchand if (!value || !extra_args)
359c89c333SDavid Marchand return -EINVAL;
369c89c333SDavid Marchand
379c89c333SDavid Marchand *(int *)extra_args = strtoull(value, NULL, 0);
389c89c333SDavid Marchand
399c89c333SDavid Marchand return 0;
409c89c333SDavid Marchand }
419c89c333SDavid Marchand
429c89c333SDavid Marchand static inline int
ifpga_afu_id_cmp(const struct rte_afu_id * afu_id0,const struct rte_afu_id * afu_id1)439c89c333SDavid Marchand ifpga_afu_id_cmp(const struct rte_afu_id *afu_id0,
449c89c333SDavid Marchand const struct rte_afu_id *afu_id1)
459c89c333SDavid Marchand {
469c89c333SDavid Marchand if ((afu_id0->uuid.uuid_low == afu_id1->uuid.uuid_low) &&
479c89c333SDavid Marchand (afu_id0->uuid.uuid_high == afu_id1->uuid.uuid_high) &&
489c89c333SDavid Marchand (afu_id0->port == afu_id1->port)) {
499c89c333SDavid Marchand return 0;
509c89c333SDavid Marchand } else
519c89c333SDavid Marchand return 1;
529c89c333SDavid Marchand }
5305fa3d4aSRosen Xu
5405fa3d4aSRosen Xu #endif /* _IFPGA_COMMON_H_ */
55