mbox series

[0/6] HelloWorld example for Windows

Message ID 20190301071847.13376-1-anand.rawat@intel.com (mailing list archive)
Headers
Series HelloWorld example for Windows |

Message

Anand Rawat March 1, 2019, 7:18 a.m. UTC
  Helloworld example for Windows.
Includes Windows-specific EAL changes and meson
changes to build the code on Windows.

Anand Rawat (6):
  eal: eal stub to add windows support
  eal: Add header files to support windows
  eal: Add headers for compatibility with windows environment
  eal: add minimum viable code for eal on windows
  examples: Add meson changes for windows
  doc: add documention for windows

 config/meson.build                            |  28 +-
 config/rte_config.h                           |  15 +-
 config/x86/meson.build                        |  14 +-
 doc/guides/index.rst                          |   1 +
 doc/guides/windows_gsg/build_dpdk.rst         |  76 +++++
 doc/guides/windows_gsg/index.rst              |  14 +
 doc/guides/windows_gsg/intro.rst              |  20 ++
 examples/meson.build                          |   9 +-
 .../common/include/arch/x86/meson.build       |  48 +--
 .../include/arch/x86/winapp/rte_atomic.h      |  19 ++
 .../include/arch/x86/winapp/rte_pause.h       |  22 ++
 lib/librte_eal/common/meson.build             | 161 +++++----
 lib/librte_eal/meson.build                    |  10 +-
 lib/librte_eal/winapp/eal/eal.c               |  79 +++++
 lib/librte_eal/winapp/eal/eal_debug.c         |  18 +
 lib/librte_eal/winapp/eal/eal_lcore.c         |  90 +++++
 lib/librte_eal/winapp/eal/eal_thread.c        | 152 +++++++++
 .../winapp/eal/include/exec-env/fnmatch.h     |  26 ++
 .../winapp/eal/include/exec-env/pthread.h     |  19 ++
 .../winapp/eal/include/exec-env/regex.h       |  56 +++
 .../winapp/eal/include/exec-env/rte_windows.h |  44 +++
 .../winapp/eal/include/exec-env/sched.h       |  41 +++
 .../winapp/eal/include/exec-env/sys/queue.h   | 320 ++++++++++++++++++
 .../winapp/eal/include/exec-env/unistd.h      |   7 +
 lib/librte_eal/winapp/eal/meson.build         |  13 +
 lib/meson.build                               |   6 +-
 meson.build                                   |  34 +-
 27 files changed, 1212 insertions(+), 130 deletions(-)
 create mode 100644 doc/guides/windows_gsg/build_dpdk.rst
 create mode 100644 doc/guides/windows_gsg/index.rst
 create mode 100644 doc/guides/windows_gsg/intro.rst
 create mode 100644 lib/librte_eal/common/include/arch/x86/winapp/rte_atomic.h
 create mode 100644 lib/librte_eal/common/include/arch/x86/winapp/rte_pause.h
 create mode 100644 lib/librte_eal/winapp/eal/eal.c
 create mode 100644 lib/librte_eal/winapp/eal/eal_debug.c
 create mode 100644 lib/librte_eal/winapp/eal/eal_lcore.c
 create mode 100644 lib/librte_eal/winapp/eal/eal_thread.c
 create mode 100644 lib/librte_eal/winapp/eal/include/exec-env/fnmatch.h
 create mode 100644 lib/librte_eal/winapp/eal/include/exec-env/pthread.h
 create mode 100644 lib/librte_eal/winapp/eal/include/exec-env/regex.h
 create mode 100644 lib/librte_eal/winapp/eal/include/exec-env/rte_windows.h
 create mode 100644 lib/librte_eal/winapp/eal/include/exec-env/sched.h
 create mode 100644 lib/librte_eal/winapp/eal/include/exec-env/sys/queue.h
 create mode 100644 lib/librte_eal/winapp/eal/include/exec-env/unistd.h
 create mode 100644 lib/librte_eal/winapp/eal/meson.build
  

Comments

Bruce Richardson March 1, 2019, 1:47 p.m. UTC | #1
On Thu, Feb 28, 2019 at 11:18:41PM -0800, Anand Rawat wrote:
> Helloworld example for Windows.
> Includes Windows-specific EAL changes and meson
> changes to build the code on Windows.
> 
> Anand Rawat (6):
>   eal: eal stub to add windows support
>   eal: Add header files to support windows
>   eal: Add headers for compatibility with windows environment
>   eal: add minimum viable code for eal on windows
>   examples: Add meson changes for windows
>   doc: add documention for windows
> 
Thanks for this, it's good to see some progress here with small managable
patches.

I've just tried this on my laptop using clang + meson + ninja. I see some
warnings at the link phase due to unknown flags, but otherwise things
compile and link ok and I get helloworld app running and printing hello
from all cores. Specifying a coremask doesn't seem to work though - perhaps
something to look at for a V2.

Thanks,
/Bruce
  
David Marchand March 4, 2019, 10:13 a.m. UTC | #2
On Fri, Mar 1, 2019 at 2:48 PM Bruce Richardson <bruce.richardson@intel.com>
wrote:

> On Thu, Feb 28, 2019 at 11:18:41PM -0800, Anand Rawat wrote:
> > Helloworld example for Windows.
> > Includes Windows-specific EAL changes and meson
> > changes to build the code on Windows.
> >
> > Anand Rawat (6):
> >   eal: eal stub to add windows support
> >   eal: Add header files to support windows
> >   eal: Add headers for compatibility with windows environment
> >   eal: add minimum viable code for eal on windows
> >   examples: Add meson changes for windows
> >   doc: add documention for windows
> >
> Thanks for this, it's good to see some progress here with small managable
> patches.
>
> I've just tried this on my laptop using clang + meson + ninja. I see some
> warnings at the link phase due to unknown flags, but otherwise things
> compile and link ok and I get helloworld app running and printing hello
> from all cores. Specifying a coremask doesn't seem to work though - perhaps
> something to look at for a V2.
>

Some easy warnings to fix:

[dmarchan@dmarchan dpdk]$ ./devtools/checkpatches.sh

### eal: eal stub to add windows support

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#402: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:9:
+eal_cpu_core_id(unsigned lcore_id)

total: 0 errors, 1 warnings, 461 lines checked
Warning in /lib/librte_eal/winapp/eal/eal_debug.c:
Using rte_panic/rte_exit

### eal: add minimum viable code for eal on windows

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#239: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:10:
+    unsigned numTotalProcessors;

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#240: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:11:
+    unsigned numProcessorSockets;

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#241: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:12:
+    unsigned numProcessorCores;

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#242: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:13:
+    unsigned reserved;

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#280: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:50:
+    unsigned lcore = 0;

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#281: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:51:
+    for (unsigned socket = 0; socket <

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#283: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:53:
+        for (unsigned core = 0; core < (win_cpu_map.numProcessorCores /

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#304: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:73:
+eal_cpu_detected(unsigned lcore_id)

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#313: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:80:
+eal_cpu_socket_id(unsigned lcore_id)

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#320: FILE: lib/librte_eal/winapp/eal/eal_lcore.c:87:
+eal_cpu_core_id(unsigned lcore_id)

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#348: FILE: lib/librte_eal/winapp/eal/eal_thread.c:15:
+RTE_DEFINE_PER_LCORE(unsigned, _lcore_id) = LCORE_ID_ANY;

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#356: FILE: lib/librte_eal/winapp/eal/eal_thread.c:23:
+rte_eal_remote_launch(lcore_function_t *f, void *arg, unsigned slave_id)

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#388: FILE: lib/librte_eal/winapp/eal/eal_thread.c:55:
+eal_thread_init_master(unsigned lcore_id)

WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
#406: FILE: lib/librte_eal/winapp/eal/eal_thread.c:73:
+    unsigned lcore_id;

total: 0 errors, 14 warnings, 502 lines checked
Warning in /lib/librte_eal/winapp/eal/eal.c:
Using rte_panic/rte_exit

4/6 valid patches

[dmarchan@dmarchan dpdk]$ ./devtools/check-git-log.sh
Wrong headline uppercase:
    eal: Add header files to support windows
    eal: Add headers for compatibility with windows environment
    examples: Add meson changes for windows
Wrong tag:
    Signed-off-by: Kadam, Pallavi <pallavi.kadam@intel.com>
    Signed-off-by: Kadam, Pallavi <pallavi.kadam@intel.com>
    Signed-off-by: Kadam, Pallavi <pallavi.kadam@intel.com>
    Signed-off-by: Kadam, Pallavi <pallavi.kadam@intel.com>
    Signed-off-by: Kadam, Pallavi <pallavi.kadam@intel.com>
    Signed-off-by: Kadam, Pallavi <pallavi.kadam@intel.com>
  
David Marchand March 4, 2019, 10:14 a.m. UTC | #3
Sorry Bruce, wrong dest :-)
  
Anand Rawat March 5, 2019, 11:43 p.m. UTC | #4
On 3/4/2019 2:13 AM, David Marchand wrote:
> 
> 
> On Fri, Mar 1, 2019 at 2:48 PM Bruce Richardson 
> <bruce.richardson@intel.com <mailto:bruce.richardson@intel.com>> wrote:
> 
>     On Thu, Feb 28, 2019 at 11:18:41PM -0800, Anand Rawat wrote:
>      > Helloworld example for Windows.
>      > Includes Windows-specific EAL changes and meson
>      > changes to build the code on Windows.
>      >
>      > Anand Rawat (6):
>      >   eal: eal stub to add windows support
>      >   eal: Add header files to support windows
>      >   eal: Add headers for compatibility with windows environment
>      >   eal: add minimum viable code for eal on windows
>      >   examples: Add meson changes for windows
>      >   doc: add documention for windows
>      >
>     Thanks for this, it's good to see some progress here with small
>     managable
>     patches.
> 
>     I've just tried this on my laptop using clang + meson + ninja. I see
>     some
>     warnings at the link phase due to unknown flags, but otherwise things
>     compile and link ok and I get helloworld app running and printing hello
>     from all cores. Specifying a coremask doesn't seem to work though -
>     perhaps
>     something to look at for a V2.
> 
> 
> Some easy warnings to fix:

This will be fixed in v2.