xref: /dpdk/drivers/bus/ifpga/ifpga_common.h (revision 925c074e377bf2a89c4b9fdd6d0d8f3e4ddb6dc9)
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