From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id E56084CA1 for ; Fri, 16 Mar 2018 09:43:37 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Mar 2018 01:43:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,313,1517904000"; d="scan'208";a="24561640" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga007.fm.intel.com with ESMTP; 16 Mar 2018 01:43:36 -0700 Received: from bgsmsx104.gar.corp.intel.com (10.223.4.190) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 16 Mar 2018 01:43:35 -0700 Received: from bgsmsx101.gar.corp.intel.com ([169.254.1.233]) by BGSMSX104.gar.corp.intel.com ([169.254.5.177]) with mapi id 14.03.0319.002; Fri, 16 Mar 2018 14:13:33 +0530 From: "Yang, Zhiyong" To: Thomas Monjalon CC: "Tan, Jianfeng" , Maxime Coquelin , "dev@dpdk.org" , "yliu@fridaylinux.org" , "Bie, Tiwei" , "Wang, Zhihong" , "Wang, Dong1" Thread-Topic: [PATCH 1/4] vhost: move fdset functions from fd_man.c to fd_man.h Thread-Index: AQHTpaObh7TjSFTKI0K8qBTZkBuQHaO4P8wAgADYGYCAACGWgIABZMIAgACJTgCABjVOYP//uu+AgAzrR7D//7TUAIAAXkuggALDdgCAAds84A== Date: Fri, 16 Mar 2018 08:43:32 +0000 Message-ID: References: <20180214145330.4679-1-zhiyong.yang@intel.com> <9059097.ABoCBN0gVk@xps> <4377329.31r3eYUQgx@xps> In-Reply-To: <4377329.31r3eYUQgx@xps> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.223.10.10] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 1/4] vhost: move fdset functions from fd_man.c to fd_man.h X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Mar 2018 08:43:38 -0000 > -----Original Message----- > From: Thomas Monjalon [mailto:thomas@monjalon.net] > Sent: Thursday, March 15, 2018 5:33 PM > To: Yang, Zhiyong > Cc: Tan, Jianfeng ; Maxime Coquelin > ; dev@dpdk.org; yliu@fridaylinux.org; Bie, > Tiwei ; Wang, Zhihong ; > Wang, Dong1 > Subject: Re: [PATCH 1/4] vhost: move fdset functions from fd_man.c to > fd_man.h >=20 > 13/03/2018 10:50, Yang, Zhiyong: > > From: Thomas Monjalon [mailto:thomas@monjalon.net] > > > 13/03/2018 09:46, Yang, Zhiyong: > > > > From: Thomas Monjalon [mailto:thomas@monjalon.net] > > > > > 05/03/2018 08:43, Yang, Zhiyong: > > > > > > From: Thomas Monjalon [mailto:thomas@monjalon.net] > > > > > > > I don't see why it should be exported outside of DPDK, > > > > > > > except for > > > PMDs. > > > > > > > I would tend to keep it internal but I understand that it > > > > > > > would mean duplicating some code, which is not ideal. > > > > > > > Please could you show what would be the content of the .h in = EAL? > > > > > > > > > > > > > > > > > > > If needed to expose them in eal.h, I think that they should be > > > > > > the whole fdset mechanism as followings. > > > > > > > > > > > > typedef void (*fd_cb)(int fd, void *dat, int *remove); > > > > > > > > > > > > struct fdentry { > > > > > > int fd; /* -1 indicates this entry is empty */ > > > > > > fd_cb rcb; /* callback when this fd is readable. */ > > > > > > fd_cb wcb; /* callback when this fd is writeable.*/ > > > > > > void *dat; /* fd context */ > > > > > > int busy; /* whether this entry is being used in cb. */ > > > > > > }; > > > > > > > > > > > > struct fdset { > > > > > > struct pollfd rwfds[MAX_FDS]; > > > > > > struct fdentry fd[MAX_FDS]; > > > > > > pthread_mutex_t fd_mutex; > > > > > > int num; /* current fd number of this fdset */ > > > > > > }; > > > > > > > > > > > > void fdset_init(struct fdset *pfdset); (not used in the patc= hset) > > > > > > > > > > > > int fdset_add(struct fdset *pfdset, int fd, > > > > > > fd_cb rcb, fd_cb wcb, void *dat); (used in this patchset) > > > > > > > > > > > > void *fdset_del(struct fdset *pfdset, int fd); (not used in > > > > > > the > > > > > > patchset) > > > > > > > > > > > > void *fdset_event_dispatch(void *arg); (used in this patchset= ) > > > > > > > > > > > > seems that we have 4 options. > > > > > > 1) expose them in librte_vhost > > > > > > 2) expose them in other existing or new libs. for example, eal= . > > > > > > 3) duplicate the code lines at PMD layer. > > > > > > 4) do it as the patch does that. > > > > > > > > > > It looks to be very close of the interrupt thread. > > > > > Can we have all merged in an unique event dispatcher thread? > > > > > > > > If I understand right, do you mean that we can merge them in lib ea= l ? > right? > > > > > > Yes merge with interrupt thread in EAL. > > > I didn't look at the details, but it seems the right place for such t= hing. > > > > > Ok, we have to expose them as new APIs. Expect that somebody as DPDK > > users can use and like them as well. :) >=20 > I think you missed my initial question: > Is it possible to merge the vhost events needs in the EAL interrupt threa= d? >=20 Sorry to miss this question. Compared to vhost event mechanism(poll), Eal interrupt uses epoll, >>From my basic understanding, linux and freeBSD both support poll, Epoll is supported by Linux only.=20 Hi Maxime,=20 I want to know your opinion about Thomas's question. This patchset aim to support for virtio-user server mode and just need to c= all event functions, So, Let me try librte_eal epoll mechanism if support for server mode. Thanks Zhiyong