From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id B7E20592F for ; Mon, 19 May 2014 13:16:15 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 19 May 2014 04:11:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.98,866,1392192000"; d="scan'208";a="513959683" Received: from shilc102.sh.intel.com ([10.239.39.44]) by orsmga001.jf.intel.com with ESMTP; 19 May 2014 04:15:57 -0700 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shilc102.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id s4JBFrKL003089; Mon, 19 May 2014 19:15:55 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id s4JBFoOr016483; Mon, 19 May 2014 19:15:52 +0800 Received: (from couyang@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id s4JBFoWX016479; Mon, 19 May 2014 19:15:50 +0800 From: Ouyang Changchun To: dev@dpdk.org Date: Mon, 19 May 2014 19:15:40 +0800 Message-Id: <1400498141-16360-3-git-send-email-changchun.ouyang@intel.com> X-Mailer: git-send-email 1.7.0.7 In-Reply-To: <1400498141-16360-1-git-send-email-changchun.ouyang@intel.com> References: <1400498141-16360-1-git-send-email-changchun.ouyang@intel.com> Subject: [dpdk-dev] [PATCH 2/3] [PMD] [VHOST] Support zero copy RX/TX in user space vhost 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: , X-List-Received-Date: Mon, 19 May 2014 11:16:16 -0000 Implement mbuf metadata macros to facilitate refering to space in mbuf headroom; Signed-off-by: Ouyang Changchun --- lib/librte_mbuf/rte_mbuf.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index edffc2c..baf3ca4 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -201,8 +201,25 @@ struct rte_mbuf { struct rte_ctrlmbuf ctrl; struct rte_pktmbuf pkt; }; + + union { + uint8_t metadata[0]; + uint16_t metadata16[0]; + uint32_t metadata32[0]; + uint64_t metadata64[0]; + }; } __rte_cache_aligned; +#define RTE_MBUF_METADATA_UINT8(mbuf, offset) (mbuf->metadata[offset]) +#define RTE_MBUF_METADATA_UINT16(mbuf, offset) (mbuf->metadata16[offset/sizeof(uint16_t)]) +#define RTE_MBUF_METADATA_UINT32(mbuf, offset) (mbuf->metadata32[offset/sizeof(uint32_t)]) +#define RTE_MBUF_METADATA_UINT64(mbuf, offset) (mbuf->metadata64[offset/sizeof(uint64_t)]) + +#define RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset) (&mbuf->metadata[offset]) +#define RTE_MBUF_METADATA_UINT16_PTR(mbuf, offset) (&mbuf->metadata16[offset/sizeof(uint16_t)]) +#define RTE_MBUF_METADATA_UINT32_PTR(mbuf, offset) (&mbuf->metadata32[offset/sizeof(uint32_t)]) +#define RTE_MBUF_METADATA_UINT64_PTR(mbuf, offset) (&mbuf->metadata64[offset/sizeof(uint64_t)]) + /** * Given the buf_addr returns the pointer to corresponding mbuf. */ -- 1.9.0