From patchwork Mon Jan 26 03:20:33 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Huawei Xie X-Patchwork-Id: 2507 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 127A45AA7; Mon, 26 Jan 2015 04:21:35 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id F0363CF9 for ; Mon, 26 Jan 2015 04:21:16 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP; 25 Jan 2015 19:15:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.97,862,1389772800"; d="scan'208";a="445033013" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by FMSMGA003.fm.intel.com with ESMTP; 25 Jan 2015 19:07:39 -0800 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id t0Q3LDsF014293; Mon, 26 Jan 2015 11:21:13 +0800 Received: from shecgisg003.sh.intel.com (localhost [127.0.0.1]) by shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id t0Q3LACB029032; Mon, 26 Jan 2015 11:21:13 +0800 Received: (from hxie5@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t0Q3LAls029028; Mon, 26 Jan 2015 11:21:10 +0800 From: Huawei Xie To: dev@dpdk.org Date: Mon, 26 Jan 2015 11:20:33 +0800 Message-Id: <1422242440-28948-8-git-send-email-huawei.xie@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1422242440-28948-1-git-send-email-huawei.xie@intel.com> References: <1422242440-28948-1-git-send-email-huawei.xie@intel.com> Subject: [dpdk-dev] [RFC PATCH v2 07/14] host_memory_map X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Signed-off-by: Huawei Xie --- lib/librte_vhost/vhost_cuse/virtio-net-cdev.c | 43 +++++++++++++-------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/lib/librte_vhost/vhost_cuse/virtio-net-cdev.c b/lib/librte_vhost/vhost_cuse/virtio-net-cdev.c index fbfc403..58ac3dd 100644 --- a/lib/librte_vhost/vhost_cuse/virtio-net-cdev.c +++ b/lib/librte_vhost/vhost_cuse/virtio-net-cdev.c @@ -75,8 +75,8 @@ struct procmap { * map it to our address space. */ static int -host_memory_map(struct virtio_net *dev, struct virtio_memory *mem, - pid_t pid, uint64_t addr) +host_memory_map(pid_t pid, uint64_t addr, + uint64_t *mapped_address, uint64_t *mapped_size) { struct dirent *dptr = NULL; struct procmap procmap; @@ -104,8 +104,8 @@ host_memory_map(struct virtio_net *dev, struct virtio_memory *mem, fmap = fopen(mapfile, "r"); if (fmap == NULL) { RTE_LOG(ERR, VHOST_CONFIG, - "(%"PRIu64") Failed to open maps file for pid %d\n", - dev->device_fh, pid); + "Failed to open maps file for pid %d\n", + pid); return -1; } @@ -179,8 +179,8 @@ host_memory_map(struct virtio_net *dev, struct virtio_memory *mem, if (!found) { RTE_LOG(ERR, VHOST_CONFIG, - "(%"PRIu64") Failed to find memory file in pid %d maps file\n", - dev->device_fh, pid); + "Failed to find memory file in pid %d maps file\n", + pid); return -1; } @@ -188,8 +188,8 @@ host_memory_map(struct virtio_net *dev, struct virtio_memory *mem, dp = opendir(procdir); if (dp == NULL) { RTE_LOG(ERR, VHOST_CONFIG, - "(%"PRIu64") Cannot open pid %d process directory\n", - dev->device_fh, pid); + "Cannot open pid %d process directory\n", + pid); return -1; } @@ -202,8 +202,7 @@ host_memory_map(struct virtio_net *dev, struct virtio_memory *mem, path = realpath(memfile, resolved_path); if ((path == NULL) && (strlen(resolved_path) == 0)) { RTE_LOG(ERR, VHOST_CONFIG, - "(%"PRIu64") Failed to resolve fd directory\n", - dev->device_fh); + "Failed to resolve fd directory\n"); closedir(dp); return -1; } @@ -218,8 +217,8 @@ host_memory_map(struct virtio_net *dev, struct virtio_memory *mem, if (found == 0) { RTE_LOG(ERR, VHOST_CONFIG, - "(%"PRIu64") Failed to find memory file for pid %d\n", - dev->device_fh, pid); + "Failed to find memory file for pid %d\n", + pid); return -1; } /* Open the shared memory file and map the memory into this process. */ @@ -227,32 +226,30 @@ host_memory_map(struct virtio_net *dev, struct virtio_memory *mem, if (fd == -1) { RTE_LOG(ERR, VHOST_CONFIG, - "(%"PRIu64") Failed to open %s for pid %d\n", - dev->device_fh, memfile, pid); + "Failed to open %s for pid %d\n", + memfile, pid); return -1; } map = mmap(0, (size_t)procmap.len, PROT_READ|PROT_WRITE, - MAP_POPULATE|MAP_SHARED, fd, 0); + MAP_POPULATE|MAP_SHARED, fd, 0); close(fd); if (map == MAP_FAILED) { RTE_LOG(ERR, VHOST_CONFIG, - "(%"PRIu64") Error mapping the file %s for pid %d\n", - dev->device_fh, memfile, pid); + "Error mapping the file %s for pid %d\n", + memfile, pid); return -1; } /* Store the memory address and size in the device data structure */ - mem->mapped_address = (uint64_t)(uintptr_t)map; - mem->mapped_size = procmap.len; + *mapped_address = (uint64_t)(uintptr_t)map; + *mapped_size = procmap.len; LOG_DEBUG(VHOST_CONFIG, - "(%"PRIu64") Mem File: %s->%s - Size: %llu - VA: %p\n", - dev->device_fh, + "Mem File: %s->%s - Size: %llu - VA: %p\n", memfile, resolved_path, - (unsigned long long)mem->mapped_size, map); + (unsigned long long)*mapped_size, map); return 0; } -