[PATCH] xen/public: add new macro to ring.h

Juergen Gross posted 1 patch 2 years ago
Test gitlab-ci failed
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20220426090810.28616-1-jgross@suse.com
There is a newer version of this series
xen/include/public/io/ring.h | 5 +++++
1 file changed, 5 insertions(+)
[PATCH] xen/public: add new macro to ring.h
Posted by Juergen Gross 2 years ago
For the initialization of a ring page by the frontend two macros are
available in ring.h: SHARED_RING_INIT() and FRONT_RING_INIT().

All known users use always both of them in direct sequence.

Add another macro XEN_FRONT_RING_INIT() combining the two macros.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 xen/include/public/io/ring.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/xen/include/public/io/ring.h b/xen/include/public/io/ring.h
index 277af36e61..3925d6ad95 100644
--- a/xen/include/public/io/ring.h
+++ b/xen/include/public/io/ring.h
@@ -184,6 +184,11 @@ typedef struct __name##_back_ring __name##_back_ring_t
 
 #define FRONT_RING_INIT(_r, _s, __size) FRONT_RING_ATTACH(_r, _s, 0, __size)
 
+#define XEN_FRONT_RING_INIT(_r, _s, __size) do {                        \
+    SHARED_RING_INIT(_s);                                               \
+    FRONT_RING_INIT(_r, _s, __size);                                    \
+} while (0)
+
 #define BACK_RING_ATTACH(_r, _s, _i, __size) do {                       \
     (_r)->rsp_prod_pvt = (_i);                                          \
     (_r)->req_cons = (_i);                                              \
-- 
2.34.1
Re: [PATCH] xen/public: add new macro to ring.h
Posted by Jan Beulich 2 years ago
On 26.04.2022 11:08, Juergen Gross wrote:
> --- a/xen/include/public/io/ring.h
> +++ b/xen/include/public/io/ring.h
> @@ -184,6 +184,11 @@ typedef struct __name##_back_ring __name##_back_ring_t
>  
>  #define FRONT_RING_INIT(_r, _s, __size) FRONT_RING_ATTACH(_r, _s, 0, __size)
>  
> +#define XEN_FRONT_RING_INIT(_r, _s, __size) do {                        \
> +    SHARED_RING_INIT(_s);                                               \
> +    FRONT_RING_INIT(_r, _s, __size);                                    \
> +} while (0)

I think it would be good for the comment around line 100 to also
have a reference to this.

As to style: Could I talk you into not further proliferating the
inappropriate use of underscore-prefixed names as macro parameters?
Even more so one with a double underscore?

As to functionality: I take it that it is not viewed as an issue
that many of the macros here evaluate their arguments multiple
times?

Jan
Re: [PATCH] xen/public: add new macro to ring.h
Posted by Juergen Gross 2 years ago
On 26.04.22 11:43, Jan Beulich wrote:
> On 26.04.2022 11:08, Juergen Gross wrote:
>> --- a/xen/include/public/io/ring.h
>> +++ b/xen/include/public/io/ring.h
>> @@ -184,6 +184,11 @@ typedef struct __name##_back_ring __name##_back_ring_t
>>   
>>   #define FRONT_RING_INIT(_r, _s, __size) FRONT_RING_ATTACH(_r, _s, 0, __size)
>>   
>> +#define XEN_FRONT_RING_INIT(_r, _s, __size) do {                        \
>> +    SHARED_RING_INIT(_s);                                               \
>> +    FRONT_RING_INIT(_r, _s, __size);                                    \
>> +} while (0)
> 
> I think it would be good for the comment around line 100 to also
> have a reference to this.

Okay.

> As to style: Could I talk you into not further proliferating the
> inappropriate use of underscore-prefixed names as macro parameters?
> Even more so one with a double underscore?

Okay.

> As to functionality: I take it that it is not viewed as an issue
> that many of the macros here evaluate their arguments multiple
> times?

I don't think this is problematic.


Juergen