From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id A3D2E58F3 for ; Tue, 21 Apr 2015 16:25:39 +0200 (CEST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP; 21 Apr 2015 07:25:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,616,1422950400"; d="scan'208";a="712935677" Received: from bricha3-mobl3.ger.corp.intel.com ([10.237.220.106]) by fmsmga002.fm.intel.com with SMTP; 21 Apr 2015 07:25:37 -0700 Received: by (sSMTP sendmail emulation); Tue, 21 Apr 2015 15:25:35 +0025 Date: Tue, 21 Apr 2015 15:25:35 +0100 From: Bruce Richardson To: Ravi Kerur Message-ID: <20150421142535.GA11524@bricha3-MOBL3> References: <1429386161-12490-1-git-send-email-rkerur@gmail.com> <1429386191-12537-1-git-send-email-rkerur@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1429386191-12537-1-git-send-email-rkerur@gmail.com> Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v6 1/6] Move common functions in eal_thread.c 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: Tue, 21 Apr 2015 14:25:40 -0000 On Sat, Apr 18, 2015 at 12:43:06PM -0700, Ravi Kerur wrote: > Changes in v6 > Remove RTE_EXEC_ENV_BSDAPP from eal_common_thread.c file. > Add pthread_setname_np/pthread_set_name_np for Linux/FreeBSD > respectively. Plan to use _getname_ in RTE_LOG when available. > Use existing rte_get_systid() in RTE_LOG to print thread_id. Hi Ravi I think the change to add names to the threads might be better in an existing patch as it is separate from the change of making the code common. [The code changes for the names also seems to have issues with it, as described in comments below] > > Changes in v5 > Rebase to latest code. > > Changes in v4 > None > > Changes in v3 > Changed subject to be more explicit on file name inclusion. > > Changes in v2 > None > > Changes in v1 > eal_thread.c has minor differences between Linux and BSD, move > entire file into common directory. > Use RTE_EXEC_ENV_BSDAPP to differentiate on minor differences. > Rename eal_thread.c to eal_common_thread.c > Makefile changes to reflect file move and name change. > Fix checkpatch warnings. > > Signed-off-by: Ravi Kerur > --- > examples/vhost/main.c | 18 ++- > examples/vhost_xen/main.c | 18 ++- > lib/librte_eal/bsdapp/eal/Makefile | 2 +- > lib/librte_eal/bsdapp/eal/eal.c | 7 + > lib/librte_eal/bsdapp/eal/eal_thread.c | 152 --------------------- > lib/librte_eal/common/eal_common_thread.c | 147 +++++++++++++++++++- > lib/librte_eal/common/eal_thread.h | 5 + > lib/librte_eal/linuxapp/eal/Makefile | 2 + > lib/librte_eal/linuxapp/eal/eal.c | 10 ++ > lib/librte_eal/linuxapp/eal/eal_interrupts.c | 11 ++ > lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c | 22 ++- > lib/librte_eal/linuxapp/eal/eal_thread.c | 152 +-------------------- > lib/librte_eal/linuxapp/eal/eal_timer.c | 15 +- > 13 files changed, 250 insertions(+), 311 deletions(-) > <<>> > --- a/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c > +++ b/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c > @@ -34,6 +34,7 @@ > #include > #include > #include > +#include > > /* sys/un.h with __USE_MISC uses strlen, which is unsafe */ > #ifdef __USE_MISC > @@ -54,6 +55,7 @@ > > #include "eal_filesystem.h" > #include "eal_pci_init.h" > +#include "eal_thread.h" > > /** > * @file > @@ -374,20 +376,36 @@ int > pci_vfio_mp_sync_setup(void) > { > int ret; > + char thread_name[RTE_THREAD_NAME_LEN]; > > if (vfio_mp_sync_socket_setup() < 0) { > RTE_LOG(ERR, EAL, "Failed to set up local socket!\n"); > return -1; > } > > + snprintf(thread_name, RTE_THREAD_NAME_LEN, > + "pci-vfio-mp-sync"); This string is too long. According to the man page (Fedora Linux): "The thread name is a meaningful C language string, whose length is restricted to 16 characā€ ters, including the terminating null byte ('\0')." I make the string 16+ null, i.e. 17 in total. > + > ret = pthread_create(&socket_thread, NULL, > pci_vfio_mp_sync_thread, NULL); > if (ret) { > - RTE_LOG(ERR, EAL, "Failed to create thread for communication with " > - "secondary processes!\n"); > + RTE_LOG(ERR, EAL, > + "Failed to create thread for communication with " > + "secondary processes!\n"); Should not split the error message string across multiple lines as it breaks git grep searches for the error message. > + close(mp_socket_fd); > + return -1; > + } > + > + ret = pthread_setname_np(socket_thread, thread_name); > + > + if (ret) { > + RTE_LOG(ERR, EAL, > + "Failed to set thread name for " > + "secondary processes!\n"); > close(mp_socket_fd); > return -1; Do we really want to return with an error here. Right now I can't run any apps since I get an error on init of PCI - due to the name string being too long for Linux. (Things seem fine on BSD). Failing to name a thread doesn't seem to be a fatal error IMHO. Regards, /Bruce