From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harini Ramakrishnan Subject: Re: [PATCH v5 1/8] eal: eal stub to add windows support Date: Tue, 26 Mar 2019 16:29:42 +0000 Message-ID: References: <20190306041634.12976-1-anand.rawat@intel.com> <20190326060238.9884-1-anand.rawat@intel.com> <20190326060238.9884-2-anand.rawat@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "pallavi.kadam@intel.com" , "ranjit.menon@intel.com" , "jeffrey.b.shaw@intel.com" , "bruce.richardson@intel.com" , "thomas@monjalon.net" To: Anand Rawat , "dev@dpdk.org" Return-path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-eopbgr740128.outbound.protection.outlook.com [40.107.74.128]) by dpdk.org (Postfix) with ESMTP id 51A161B1F5 for ; Tue, 26 Mar 2019 17:29:44 +0100 (CET) In-Reply-To: <20190326060238.9884-2-anand.rawat@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" -----Original Message----- From: dev On Behalf Of Anand Rawat Sent: Monday, March 25, 2019 11:03 PM To: dev@dpdk.org Cc: anand.rawat@intel.com; pallavi.kadam@intel.com; ranjit.menon@intel.com;= jeffrey.b.shaw@intel.com; bruce.richardson@intel.com; thomas@monjalon.net Subject: [dpdk-dev] [PATCH v5 1/8] eal: eal stub to add windows support Added initial stub source files for windows support and only the required m= eson changes for windows. Signed-off-by: Pallavi Kadam Signed-off-by: Anand Rawat Reviewed-by: Jeff Shaw Reviewed-by: Ranjit Menon Acked-by: Harini Ramakrishnan --- config/meson.build | 23 ++++++++++++------ config/x86/meson.build | 14 ++++++----- lib/librte_eal/meson.build | 6 ++++- lib/librte_eal/windows/eal/eal.c | 14 +++++++++++ lib/librte_eal/windows/eal/eal_debug.c | 15 ++++++++++++ lib/librte_eal/= windows/eal/eal_lcore.c | 32 +++++++++++++++++++++++++ lib/librte_eal/win= dows/eal/eal_thread.c | 18 ++++++++++++++ lib/librte_eal/windows/eal/meson= .build | 10 ++++++++ meson.build | 3 ++- 9 files changed, 120 insertions(+), 15 deletions(-) create mode 100644 li= b/librte_eal/windows/eal/eal.c create mode 100644 lib/librte_eal/windows/e= al/eal_debug.c create mode 100644 lib/librte_eal/windows/eal/eal_lcore.c create mode 100644 lib/librte_eal/windows/eal/eal_thread.c create mode 100644 lib/librte_eal/windows/eal/meson.build diff --git a/config/meson.build b/config/meson.build index 0419607d3..71a01= 20b6 100644 --- a/config/meson.build +++ b/config/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright(c) 2017 Intel Corpora= tion +# Copyright(c) 2017-2019 Intel Corporation =20 # set the machine type and cflags for it if meson.is_cross_build() @@ -52= ,18 +52,27 @@ dpdk_extra_ldflags +=3D '-Wl,--no-as-needed' add_project_link_arguments('-pthread', language: 'c') dpdk_extra_ldflags = +=3D '-pthread' =20 -# some libs depend on maths lib -add_project_link_arguments('-lm', language: 'c') -dpdk_extra_ldflags +=3D = '-lm' +# on some OS, maths functions are in a separate library if=20 +cc.find_library('lm', required : false).found() + # some libs depend on maths lib + add_project_link_arguments('-lm', language: 'c') + dpdk_extra_ldflags +=3D '-lm' +endif =20 # for linux link against dl, for bsd execinfo if host_machine.system() = =3D=3D 'linux' link_lib =3D 'dl' -else +elif host_machine.system() =3D=3D 'freebsd' link_lib =3D 'execinfo' +else + link_lib =3D '' +endif + +# if link_lib is empty, do not add it to project properties if link_lib=20 +!=3D '' + add_project_link_arguments('-l' + link_lib, language: 'c') + dpdk_extra_ldflags +=3D '-l' + link_lib endif -add_project_link_arguments('-l' + link_lib, language: 'c') -dpdk_extra_ldf= lags +=3D '-l' + link_lib =20 # check for libraries used in multiple places in DPDK has_libnuma =3D 0 d= iff --git a/config/x86/meson.build b/config/x86/meson.build index 7504cb9e5= ..558edfda9 100644 --- a/config/x86/meson.build +++ b/config/x86/meson.build @@ -1,15 +1,17 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright(c) 2017 Intel Corpora= tion +# Copyright(c) 2017-2019 Intel Corporation =20 # for checking defines we need to use the correct compiler flags march_op= t =3D ['-march=3D@0@'.format(machine)] =20 # get binutils version for the workaround of Bug 97 -ldver =3D run_command= ('ld', '-v').stdout().strip() -if ldver.contains('2.30') - if cc.has_argument('-mno-avx512f') - march_opt +=3D '-mno-avx512f' - message('Binutils 2.30 detected, disabling AVX512 support as workaround = for bug #97') +if host_machine.system() !=3D 'windows' + ldver =3D run_command('ld', '-v').stdout().strip() + if ldver.contains('2.30') + if cc.has_argument('-mno-avx512f') + march_opt +=3D '-mno-avx512f' + message('Binutils 2.30 detected, disabling AVX512 support as workaround= for bug #97') + endif endif endif =20 diff --git a/lib/librte_eal/meson.build b/lib/librte_eal/meson.build index = c592c6747..c2249855a 100644 --- a/lib/librte_eal/meson.build +++ b/lib/librte_eal/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright(c) 2017 Intel Corpora= tion +# Copyright(c) 2017-2019 Intel Corporation =20 # Custom EAL processing. EAL is complicated enough that it can't just # h= ave a straight list of headers and source files. @@ -17,6 +17,10 @@ elif host_machine.system() =3D=3D 'freebsd' dpdk_conf.set('RTE_EXEC_ENV_FREEBSD', 1) subdir('freebsd/eal') =20 +elif host_machine.system() =3D=3D 'windows' + dpdk_conf.set('RTE_EXEC_ENV_WINDOWS', 1) + subdir('windows/eal') + else error('unsupported system type "@0@"'.format(host_machine.system())) endif diff --git a/lib/librte_eal/windows/eal/eal.c b/lib/librte_eal/windows/eal/= eal.c new file mode 100644 index 000000000..13e41ea30 --- /dev/null +++ b/lib/librte_eal/windows/eal/eal.c @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2019 Intel Corporation + */ + +#include "rte_common.h" + + /* Launch threads, called at application init(). */ int=20 +rte_eal_init(int argc __rte_unused, char **argv __rte_unused) { + /* TODO */ + /* This is a stub, not the expected result */ + return 0; +} diff --git a/lib/librte_eal/windows/eal/eal_debug.c b/lib/librte_eal/window= s/eal/eal_debug.c new file mode 100644 index 000000000..6e07fe10c --- /dev/null +++ b/lib/librte_eal/windows/eal/eal_debug.c @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2019 Intel Corporation + */ + +#include "rte_common.h" + + /* call abort(), it will generate a coredump if enabled */ void=20 +__rte_panic(const char *funcname __rte_unused, + const char *format __rte_unused, ...) { + /* TODO */ + /* This is a stub, not the expected result */ + abort(); +} diff --git a/lib/librte_eal/windows/eal/eal_lcore.c b/lib/librte_eal/window= s/eal/eal_lcore.c new file mode 100644 index 000000000..4ddf51aa8 --- /dev/null +++ b/lib/librte_eal/windows/eal/eal_lcore.c @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2019 Intel Corporation + */ + +#include "rte_common.h" + + /* Get the cpu core id value */ +unsigned int +eal_cpu_core_id(unsigned int lcore_id) +{ + /* TODO */ + /* This is a stub, not the expected result */ + return lcore_id; +} + +/* Check if a cpu is present by the presence of the cpu information for=20 +it */ int eal_cpu_detected(unsigned int lcore_id __rte_unused) { + /* TODO */ + /* This is a stub, not the expected result */ + return 1; +} + +/* Get CPU socket id (NUMA node) for a logical core */ unsigned int=20 +eal_cpu_socket_id(unsigned int cpu_id __rte_unused) { + /* TODO */ + /* This is a stub, not the expected result */ + return 0; +} diff --git a/lib/librte_eal/windows/eal/eal_thread.c b/lib/librte_eal/windo= ws/eal/eal_thread.c new file mode 100644 index 000000000..e74f8893b --- /dev/null +++ b/lib/librte_eal/windows/eal/eal_thread.c @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2019 Intel Corporation + */ + +#include + +#include "rte_common.h" + +typedef uintptr_t eal_thread_t; + +/* function to create threads */ +int +eal_thread_create(eal_thread_t *thread __rte_unused) { + /* TODO */ + /* This is a stub, not the expected result */ + return 0; +} diff --git a/lib/librte_eal/windows/eal/meson.build b/lib/librte_eal/window= s/eal/meson.build new file mode 100644 index 000000000..8b1735623 --- /dev/null +++ b/lib/librte_eal/windows/eal/meson.build @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019 Intel=20 +Corporation + +env_objs =3D [] +env_headers =3D [] +env_sources =3D files('eal.c', + 'eal_debug.c', + 'eal_lcore.c', + 'eal_thread.c', +) diff --git a/meson.build b/meson.build index 69833de82..9959dc54f 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright(c) 2017 Intel Corpora= tion +# Copyright(c) 2017-2019 Intel Corporation =20 project('DPDK', 'C', version: '19.05.0-rc0', @@ -13,6 +13,7 @@ cc =3D meson.get_compiler('c') dpdk_conf =3D configurati= on_data() dpdk_libraries =3D [] dpdk_static_libraries =3D [] +driver_classes =3D [] dpdk_drivers =3D [] dpdk_extra_ldflags =3D [] dpdk_app_link_libraries =3D [] -- 2.17.1.windows.2