* [PATCH] provide Windows/MSVC lcore macros
@ 2023-07-10 21:29 Tyler Retzlaff
2023-07-10 21:29 ` [PATCH] eal: provide per lcore macros for MSVC Tyler Retzlaff
2023-07-11 15:52 ` [PATCH v2] provide Windows/MSVC lcore macros Tyler Retzlaff
0 siblings, 2 replies; 11+ messages in thread
From: Tyler Retzlaff @ 2023-07-10 21:29 UTC (permalink / raw)
To: dev; +Cc: david.marchand, thomas, Tyler Retzlaff
Provide MSVC compatible macros RTE_DEFINE_PER_LCORE and
RTE_DECLARE_PER_LCORE that expand appropriately for Windows/MSVC
NOTICE:
It is intentional that devtools/checkpatches.pl generates an error
about parenthesis to allow comparison with clang/gcc versions of
these macros which also do not have the parenthesis.
```
ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parenthesis
#31: FILE: lib/eal/include/rte_per_lcore.h:42:
+#define RTE_DEFINE_PER_LCORE(type, name) \
+ __declspec(thread) typeof(type) per_lcore_##name
ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parenthesis
#34: FILE: lib/eal/include/rte_per_lcore.h:45:
+#define RTE_DECLARE_PER_LCORE(type, name) \
+ extern __declspec(thread) typeof(type) per_lcore_##name
```
Tyler Retzlaff (1):
eal: provide per lcore macros for MSVC
lib/eal/include/rte_per_lcore.h | 8 ++++++++
1 file changed, 8 insertions(+)
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH] eal: provide per lcore macros for MSVC
2023-07-10 21:29 [PATCH] provide Windows/MSVC lcore macros Tyler Retzlaff
@ 2023-07-10 21:29 ` Tyler Retzlaff
2023-07-11 6:25 ` Thomas Monjalon
2023-07-11 15:52 ` [PATCH v2] provide Windows/MSVC lcore macros Tyler Retzlaff
1 sibling, 1 reply; 11+ messages in thread
From: Tyler Retzlaff @ 2023-07-10 21:29 UTC (permalink / raw)
To: dev; +Cc: david.marchand, thomas, Tyler Retzlaff
Provide per lcore macros that use __declspec(thread) and uses C23
typeof.
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
lib/eal/include/rte_per_lcore.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lib/eal/include/rte_per_lcore.h b/lib/eal/include/rte_per_lcore.h
index eaedf0c..4ef8905 100644
--- a/lib/eal/include/rte_per_lcore.h
+++ b/lib/eal/include/rte_per_lcore.h
@@ -24,6 +24,7 @@
#include <pthread.h>
+#ifndef RTE_TOOLCHAIN_MSVC
/**
* Macro to define a per lcore variable "var" of type "type", don't
* use keywords like "static" or "volatile" in type, just prefix the
@@ -37,6 +38,13 @@
*/
#define RTE_DECLARE_PER_LCORE(type, name) \
extern __thread __typeof__(type) per_lcore_##name
+#else
+#define RTE_DEFINE_PER_LCORE(type, name) \
+ __declspec(thread) typeof(type) per_lcore_##name
+
+#define RTE_DECLARE_PER_LCORE(type, name) \
+ extern __declspec(thread) typeof(type) per_lcore_##name
+#endif
/**
* Read/write the per-lcore variable value
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] eal: provide per lcore macros for MSVC
2023-07-10 21:29 ` [PATCH] eal: provide per lcore macros for MSVC Tyler Retzlaff
@ 2023-07-11 6:25 ` Thomas Monjalon
0 siblings, 0 replies; 11+ messages in thread
From: Thomas Monjalon @ 2023-07-11 6:25 UTC (permalink / raw)
To: dev, Tyler Retzlaff; +Cc: david.marchand
10/07/2023 23:29, Tyler Retzlaff:
> Provide per lcore macros that use __declspec(thread) and uses C23
> typeof.
>
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> ---
> +#ifndef RTE_TOOLCHAIN_MSVC
> /**
> * Macro to define a per lcore variable "var" of type "type", don't
> * use keywords like "static" or "volatile" in type, just prefix the
> @@ -37,6 +38,13 @@
> */
> #define RTE_DECLARE_PER_LCORE(type, name) \
> extern __thread __typeof__(type) per_lcore_##name
> +#else
> +#define RTE_DEFINE_PER_LCORE(type, name) \
> + __declspec(thread) typeof(type) per_lcore_##name
> +
> +#define RTE_DECLARE_PER_LCORE(type, name) \
> + extern __declspec(thread) typeof(type) per_lcore_##name
> +#endif
It would be better (here and in other MSVC patches)
to have the opposite logic: start with MSVC implementation.
#ifdef MSVC
MSVC implementation
#else
POSIX implementation
#endif
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2] provide Windows/MSVC lcore macros
2023-07-10 21:29 [PATCH] provide Windows/MSVC lcore macros Tyler Retzlaff
2023-07-10 21:29 ` [PATCH] eal: provide per lcore macros for MSVC Tyler Retzlaff
@ 2023-07-11 15:52 ` Tyler Retzlaff
2023-07-11 15:52 ` [PATCH v2] eal: provide per lcore macros for MSVC Tyler Retzlaff
1 sibling, 1 reply; 11+ messages in thread
From: Tyler Retzlaff @ 2023-07-11 15:52 UTC (permalink / raw)
To: dev; +Cc: david.marchand, thomas, Tyler Retzlaff
Provide MSVC compatible macros RTE_DEFINE_PER_LCORE and
RTE_DECLARE_PER_LCORE that expand appropriately for Windows/MSVC
NOTICE:
It is intentional that devtools/checkpatches.pl generates an error
about parenthesis to allow comparison with clang/gcc versions of
these macros which also do not have the parenthesis.
```
ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parenthesis
#31: FILE: lib/eal/include/rte_per_lcore.h:42:
+#define RTE_DEFINE_PER_LCORE(type, name) \
+ __declspec(thread) typeof(type) per_lcore_##name
ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parenthesis
#34: FILE: lib/eal/include/rte_per_lcore.h:45:
+#define RTE_DECLARE_PER_LCORE(type, name) \
+ extern __declspec(thread) typeof(type) per_lcore_##name
```
v2:
* invert macro test for msvc #ifndef -> #ifdef
Tyler Retzlaff (1):
eal: provide per lcore macros for MSVC
lib/eal/include/rte_per_lcore.h | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2] eal: provide per lcore macros for MSVC
2023-07-11 15:52 ` [PATCH v2] provide Windows/MSVC lcore macros Tyler Retzlaff
@ 2023-07-11 15:52 ` Tyler Retzlaff
2023-07-11 16:09 ` Stephen Hemminger
2023-08-31 11:57 ` Thomas Monjalon
0 siblings, 2 replies; 11+ messages in thread
From: Tyler Retzlaff @ 2023-07-11 15:52 UTC (permalink / raw)
To: dev; +Cc: david.marchand, thomas, Tyler Retzlaff
Provide per lcore macros that use __declspec(thread) and uses C23
typeof.
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
lib/eal/include/rte_per_lcore.h | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/lib/eal/include/rte_per_lcore.h b/lib/eal/include/rte_per_lcore.h
index eaedf0c..2b846f9 100644
--- a/lib/eal/include/rte_per_lcore.h
+++ b/lib/eal/include/rte_per_lcore.h
@@ -24,19 +24,27 @@
#include <pthread.h>
+#ifdef RTE_TOOLCHAIN_MSVC
/**
* Macro to define a per lcore variable "var" of type "type", don't
* use keywords like "static" or "volatile" in type, just prefix the
* whole macro.
*/
#define RTE_DEFINE_PER_LCORE(type, name) \
- __thread __typeof__(type) per_lcore_##name
+ __declspec(thread) typeof(type) per_lcore_##name
/**
* Macro to declare an extern per lcore variable "var" of type "type"
*/
#define RTE_DECLARE_PER_LCORE(type, name) \
+ extern __declspec(thread) typeof(type) per_lcore_##name
+#else
+#define RTE_DEFINE_PER_LCORE(type, name) \
+ __thread __typeof__(type) per_lcore_##name
+
+#define RTE_DECLARE_PER_LCORE(type, name) \
extern __thread __typeof__(type) per_lcore_##name
+#endif
/**
* Read/write the per-lcore variable value
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] eal: provide per lcore macros for MSVC
2023-07-11 15:52 ` [PATCH v2] eal: provide per lcore macros for MSVC Tyler Retzlaff
@ 2023-07-11 16:09 ` Stephen Hemminger
2023-08-25 8:49 ` David Marchand
2023-08-31 11:57 ` Thomas Monjalon
1 sibling, 1 reply; 11+ messages in thread
From: Stephen Hemminger @ 2023-07-11 16:09 UTC (permalink / raw)
To: Tyler Retzlaff; +Cc: dev, david.marchand, thomas
On Tue, 11 Jul 2023 08:52:27 -0700
Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:
> Provide per lcore macros that use __declspec(thread) and uses C23
> typeof.
>
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> ---
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] eal: provide per lcore macros for MSVC
2023-07-11 16:09 ` Stephen Hemminger
@ 2023-08-25 8:49 ` David Marchand
0 siblings, 0 replies; 11+ messages in thread
From: David Marchand @ 2023-08-25 8:49 UTC (permalink / raw)
To: Tyler Retzlaff; +Cc: dev, thomas, Stephen Hemminger
On Tue, Jul 11, 2023 at 6:10 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> On Tue, 11 Jul 2023 08:52:27 -0700
> Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:
>
> > Provide per lcore macros that use __declspec(thread) and uses C23
> > typeof.
> >
> > Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Applied, thanks.
--
David Marchand
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] eal: provide per lcore macros for MSVC
2023-07-11 15:52 ` [PATCH v2] eal: provide per lcore macros for MSVC Tyler Retzlaff
2023-07-11 16:09 ` Stephen Hemminger
@ 2023-08-31 11:57 ` Thomas Monjalon
2023-08-31 23:08 ` Tyler Retzlaff
1 sibling, 1 reply; 11+ messages in thread
From: Thomas Monjalon @ 2023-08-31 11:57 UTC (permalink / raw)
To: Tyler Retzlaff; +Cc: dev, david.marchand, Stephen Hemminger
11/07/2023 17:52, Tyler Retzlaff:
> +#ifdef RTE_TOOLCHAIN_MSVC
> /**
> * Macro to define a per lcore variable "var" of type "type", don't
> * use keywords like "static" or "volatile" in type, just prefix the
> * whole macro.
> */
> #define RTE_DEFINE_PER_LCORE(type, name) \
> - __thread __typeof__(type) per_lcore_##name
> + __declspec(thread) typeof(type) per_lcore_##name
>
> /**
> * Macro to declare an extern per lcore variable "var" of type "type"
> */
> #define RTE_DECLARE_PER_LCORE(type, name) \
> + extern __declspec(thread) typeof(type) per_lcore_##name
> +#else
> +#define RTE_DEFINE_PER_LCORE(type, name) \
> + __thread __typeof__(type) per_lcore_##name
> +
> +#define RTE_DECLARE_PER_LCORE(type, name) \
> extern __thread __typeof__(type) per_lcore_##name
> +#endif
I'm afraid you damaged the doxygen document here.
Please check what happens when generating doxygen.
I suppose it does not take the RTE_TOOLCHAIN_MSVC path,
so it does not find any comment.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] eal: provide per lcore macros for MSVC
2023-08-31 11:57 ` Thomas Monjalon
@ 2023-08-31 23:08 ` Tyler Retzlaff
2023-09-21 9:36 ` Thomas Monjalon
0 siblings, 1 reply; 11+ messages in thread
From: Tyler Retzlaff @ 2023-08-31 23:08 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev, david.marchand, Stephen Hemminger
On Thu, Aug 31, 2023 at 01:57:36PM +0200, Thomas Monjalon wrote:
> 11/07/2023 17:52, Tyler Retzlaff:
> > +#ifdef RTE_TOOLCHAIN_MSVC
> > /**
> > * Macro to define a per lcore variable "var" of type "type", don't
> > * use keywords like "static" or "volatile" in type, just prefix the
> > * whole macro.
> > */
> > #define RTE_DEFINE_PER_LCORE(type, name) \
> > - __thread __typeof__(type) per_lcore_##name
> > + __declspec(thread) typeof(type) per_lcore_##name
> >
> > /**
> > * Macro to declare an extern per lcore variable "var" of type "type"
> > */
> > #define RTE_DECLARE_PER_LCORE(type, name) \
> > + extern __declspec(thread) typeof(type) per_lcore_##name
> > +#else
> > +#define RTE_DEFINE_PER_LCORE(type, name) \
> > + __thread __typeof__(type) per_lcore_##name
> > +
> > +#define RTE_DECLARE_PER_LCORE(type, name) \
> > extern __thread __typeof__(type) per_lcore_##name
> > +#endif
>
> I'm afraid you damaged the doxygen document here.
> Please check what happens when generating doxygen.
> I suppose it does not take the RTE_TOOLCHAIN_MSVC path,
> so it does not find any comment.
Thanks Thomas i will look into fixing it.
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] eal: provide per lcore macros for MSVC
2023-08-31 23:08 ` Tyler Retzlaff
@ 2023-09-21 9:36 ` Thomas Monjalon
2023-09-21 15:45 ` Tyler Retzlaff
0 siblings, 1 reply; 11+ messages in thread
From: Thomas Monjalon @ 2023-09-21 9:36 UTC (permalink / raw)
To: Tyler Retzlaff; +Cc: dev, david.marchand, Stephen Hemminger
01/09/2023 01:08, Tyler Retzlaff:
> On Thu, Aug 31, 2023 at 01:57:36PM +0200, Thomas Monjalon wrote:
> > 11/07/2023 17:52, Tyler Retzlaff:
> > > +#ifdef RTE_TOOLCHAIN_MSVC
> > > /**
> > > * Macro to define a per lcore variable "var" of type "type", don't
> > > * use keywords like "static" or "volatile" in type, just prefix the
> > > * whole macro.
> > > */
> > > #define RTE_DEFINE_PER_LCORE(type, name) \
> > > - __thread __typeof__(type) per_lcore_##name
> > > + __declspec(thread) typeof(type) per_lcore_##name
> > >
> > > /**
> > > * Macro to declare an extern per lcore variable "var" of type "type"
> > > */
> > > #define RTE_DECLARE_PER_LCORE(type, name) \
> > > + extern __declspec(thread) typeof(type) per_lcore_##name
> > > +#else
> > > +#define RTE_DEFINE_PER_LCORE(type, name) \
> > > + __thread __typeof__(type) per_lcore_##name
> > > +
> > > +#define RTE_DECLARE_PER_LCORE(type, name) \
> > > extern __thread __typeof__(type) per_lcore_##name
> > > +#endif
> >
> > I'm afraid you damaged the doxygen document here.
> > Please check what happens when generating doxygen.
> > I suppose it does not take the RTE_TOOLCHAIN_MSVC path,
> > so it does not find any comment.
>
> Thanks Thomas i will look into fixing it.
Please can you send the fix?
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] eal: provide per lcore macros for MSVC
2023-09-21 9:36 ` Thomas Monjalon
@ 2023-09-21 15:45 ` Tyler Retzlaff
0 siblings, 0 replies; 11+ messages in thread
From: Tyler Retzlaff @ 2023-09-21 15:45 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev, david.marchand, Stephen Hemminger
On Thu, Sep 21, 2023 at 11:36:32AM +0200, Thomas Monjalon wrote:
> 01/09/2023 01:08, Tyler Retzlaff:
> > On Thu, Aug 31, 2023 at 01:57:36PM +0200, Thomas Monjalon wrote:
> > > 11/07/2023 17:52, Tyler Retzlaff:
> > > > +#ifdef RTE_TOOLCHAIN_MSVC
> > > > /**
> > > > * Macro to define a per lcore variable "var" of type "type", don't
> > > > * use keywords like "static" or "volatile" in type, just prefix the
> > > > * whole macro.
> > > > */
> > > > #define RTE_DEFINE_PER_LCORE(type, name) \
> > > > - __thread __typeof__(type) per_lcore_##name
> > > > + __declspec(thread) typeof(type) per_lcore_##name
> > > >
> > > > /**
> > > > * Macro to declare an extern per lcore variable "var" of type "type"
> > > > */
> > > > #define RTE_DECLARE_PER_LCORE(type, name) \
> > > > + extern __declspec(thread) typeof(type) per_lcore_##name
> > > > +#else
> > > > +#define RTE_DEFINE_PER_LCORE(type, name) \
> > > > + __thread __typeof__(type) per_lcore_##name
> > > > +
> > > > +#define RTE_DECLARE_PER_LCORE(type, name) \
> > > > extern __thread __typeof__(type) per_lcore_##name
> > > > +#endif
> > >
> > > I'm afraid you damaged the doxygen document here.
> > > Please check what happens when generating doxygen.
> > > I suppose it does not take the RTE_TOOLCHAIN_MSVC path,
> > > so it does not find any comment.
> >
> > Thanks Thomas i will look into fixing it.
>
> Please can you send the fix?
>
Sure, do you want me to just move the documentation to the non MSVC path
or do you have another prefered solution in mind?
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-09-21 15:45 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-10 21:29 [PATCH] provide Windows/MSVC lcore macros Tyler Retzlaff
2023-07-10 21:29 ` [PATCH] eal: provide per lcore macros for MSVC Tyler Retzlaff
2023-07-11 6:25 ` Thomas Monjalon
2023-07-11 15:52 ` [PATCH v2] provide Windows/MSVC lcore macros Tyler Retzlaff
2023-07-11 15:52 ` [PATCH v2] eal: provide per lcore macros for MSVC Tyler Retzlaff
2023-07-11 16:09 ` Stephen Hemminger
2023-08-25 8:49 ` David Marchand
2023-08-31 11:57 ` Thomas Monjalon
2023-08-31 23:08 ` Tyler Retzlaff
2023-09-21 9:36 ` Thomas Monjalon
2023-09-21 15:45 ` Tyler Retzlaff
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).