xref: /dpdk/lib/bpf/bpf.c (revision 0e21c7c07d623719d61cc7e2e85613e8c71d9a57)
199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
299a2dd95SBruce Richardson  * Copyright(c) 2018 Intel Corporation
399a2dd95SBruce Richardson  */
499a2dd95SBruce Richardson 
599a2dd95SBruce Richardson #include <stdio.h>
699a2dd95SBruce Richardson #include <errno.h>
799a2dd95SBruce Richardson #include <stdint.h>
899a2dd95SBruce Richardson 
999a2dd95SBruce Richardson #include <rte_common.h>
1099a2dd95SBruce Richardson 
1199a2dd95SBruce Richardson #include "bpf_impl.h"
1299a2dd95SBruce Richardson 
1399a2dd95SBruce Richardson void
rte_bpf_destroy(struct rte_bpf * bpf)1499a2dd95SBruce Richardson rte_bpf_destroy(struct rte_bpf *bpf)
1599a2dd95SBruce Richardson {
1699a2dd95SBruce Richardson 	if (bpf != NULL) {
1799a2dd95SBruce Richardson 		if (bpf->jit.func != NULL)
1899a2dd95SBruce Richardson 			munmap(bpf->jit.func, bpf->jit.sz);
1999a2dd95SBruce Richardson 		munmap(bpf, bpf->sz);
2099a2dd95SBruce Richardson 	}
2199a2dd95SBruce Richardson }
2299a2dd95SBruce Richardson 
2399a2dd95SBruce Richardson int
rte_bpf_get_jit(const struct rte_bpf * bpf,struct rte_bpf_jit * jit)2499a2dd95SBruce Richardson rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit)
2599a2dd95SBruce Richardson {
2699a2dd95SBruce Richardson 	if (bpf == NULL || jit == NULL)
2799a2dd95SBruce Richardson 		return -EINVAL;
2899a2dd95SBruce Richardson 
2999a2dd95SBruce Richardson 	jit[0] = bpf->jit;
3099a2dd95SBruce Richardson 	return 0;
3199a2dd95SBruce Richardson }
3299a2dd95SBruce Richardson 
3399a2dd95SBruce Richardson int
__rte_bpf_jit(struct rte_bpf * bpf)34cf095b1eSJ.J. Martzki __rte_bpf_jit(struct rte_bpf *bpf)
3599a2dd95SBruce Richardson {
3699a2dd95SBruce Richardson 	int32_t rc;
3799a2dd95SBruce Richardson 
3899a2dd95SBruce Richardson #if defined(RTE_ARCH_X86_64)
39cf095b1eSJ.J. Martzki 	rc = __rte_bpf_jit_x86(bpf);
4099a2dd95SBruce Richardson #elif defined(RTE_ARCH_ARM64)
41cf095b1eSJ.J. Martzki 	rc = __rte_bpf_jit_arm64(bpf);
4299a2dd95SBruce Richardson #else
4399a2dd95SBruce Richardson 	rc = -ENOTSUP;
4499a2dd95SBruce Richardson #endif
4599a2dd95SBruce Richardson 
4699a2dd95SBruce Richardson 	if (rc != 0)
47*0e21c7c0SDavid Marchand 		RTE_BPF_LOG_LINE(WARNING, "%s(%p) failed, error code: %d;",
4899a2dd95SBruce Richardson 			__func__, bpf, rc);
4999a2dd95SBruce Richardson 	return rc;
5099a2dd95SBruce Richardson }
5199a2dd95SBruce Richardson 
52eeded204SDavid Marchand RTE_LOG_REGISTER_DEFAULT(rte_bpf_logtype, INFO);
53