78639d5456
Performing large memory copies usually takes up a major part of CPU cycles and becomes the hot spot in vhost-user enqueue operation. To offload the large copies from CPU to the DMA devices, asynchronous APIs are introduced, with which the CPU just submits copy jobs to the DMA but without waiting for its copy completion. Thus, there is no CPU intervention during data transfer. We can save precious CPU cycles and improve the overall throughput for vhost-user based applications. This patch introduces registration/un-registration APIs for vhost async data enqueue operation. Together with the registration APIs implementations, data structures and the prototype of the async callback functions required for async enqueue data path are also defined. Signed-off-by: Patrick Fu <patrick.fu@intel.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
55 lines
1.4 KiB
Makefile
55 lines
1.4 KiB
Makefile
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2010-2014 Intel Corporation
|
|
|
|
include $(RTE_SDK)/mk/rte.vars.mk
|
|
|
|
# library name
|
|
LIB = librte_vhost.a
|
|
|
|
EXPORT_MAP := rte_vhost_version.map
|
|
|
|
CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
|
|
CFLAGS += -I vhost_user
|
|
CFLAGS += -fno-strict-aliasing
|
|
LDLIBS += -lpthread
|
|
|
|
ifeq ($(RTE_TOOLCHAIN), gcc)
|
|
ifeq ($(shell test $(GCC_VERSION) -ge 83 && echo 1), 1)
|
|
CFLAGS += -DVHOST_GCC_UNROLL_PRAGMA
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(RTE_TOOLCHAIN), clang)
|
|
ifeq ($(shell test $(CLANG_MAJOR_VERSION)$(CLANG_MINOR_VERSION) -ge 37 && echo 1), 1)
|
|
CFLAGS += -DVHOST_CLANG_UNROLL_PRAGMA
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(RTE_TOOLCHAIN), icc)
|
|
ifeq ($(shell test $(ICC_MAJOR_VERSION) -ge 16 && echo 1), 1)
|
|
CFLAGS += -DVHOST_ICC_UNROLL_PRAGMA
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y)
|
|
LDLIBS += -lnuma
|
|
endif
|
|
LDLIBS += -lrte_eal -lrte_mempool -lrte_mbuf -lrte_ethdev -lrte_net
|
|
|
|
# all source are stored in SRCS-y
|
|
SRCS-$(CONFIG_RTE_LIBRTE_VHOST) := fd_man.c iotlb.c socket.c vhost.c \
|
|
vhost_user.c virtio_net.c vdpa.c
|
|
|
|
# install includes
|
|
SYMLINK-$(CONFIG_RTE_LIBRTE_VHOST)-include += rte_vhost.h rte_vdpa.h \
|
|
rte_vdpa_dev.h rte_vhost_async.h
|
|
|
|
# only compile vhost crypto when cryptodev is enabled
|
|
ifeq ($(CONFIG_RTE_LIBRTE_CRYPTODEV),y)
|
|
LDLIBS += -lrte_cryptodev -lrte_hash
|
|
SRCS-$(CONFIG_RTE_LIBRTE_VHOST) += vhost_crypto.c
|
|
SYMLINK-$(CONFIG_RTE_LIBRTE_VHOST)-include += rte_vhost_crypto.h
|
|
endif
|
|
|
|
include $(RTE_SDK)/mk/rte.lib.mk
|