> On 28 Feb 2017, at 18:26, Frediano Ziglio <fzig...@redhat.com 
> <mailto:fzig...@redhat.com>> wrote:
> 
>> 
>> On Tue, 2017-02-28 at 09:29 -0500, Frediano Ziglio wrote:
>>>> 
>>>> Related:
>>>> https://bugzilla.redhat.com/show_bug.cgi?id=1373725 
>>>> <https://bugzilla.redhat.com/show_bug.cgi?id=1373725>
>>>> ---
>>>>  spice/vd_agent.h | 3 +++
>>>>  1 file changed, 3 insertions(+)
>>>> 
>>>> diff --git a/spice/vd_agent.h b/spice/vd_agent.h
>>>> index ac22498..3b1f183 100644
>>>> --- a/spice/vd_agent.h
>>>> +++ b/spice/vd_agent.h
>>>> @@ -269,6 +269,9 @@ typedef struct SPICE_ATTR_PACKED
>>>> VDAgentAnnounceCapabilities {
>>>>  #define VD_AGENT_SET_CAPABILITY(caps, index) \
>>>>      { (caps)[(index) / 32] |= (1 << ((index) % 32)); }
>>>>  
>>>> +#define VD_AGENT_CLEAR_CAPABILITY(caps, index) \
>>>> +    { (caps)[(index) / 32] &= ~(1 << ((index) % 32)); }
>>>> +
>>>>  #include <spice/end-packed.h>
>>>>  
>>>>  #endif /* _H_VD_AGENT */
>>> 
>>> I would say
>>> 
>>> Acked-by: Frediano Ziglio <fzig...@redhat.com <mailto:fzig...@redhat.com>>
>>> 
>>> Honestly I don't think should be a 2/2, just a separate patch.
>>> 
>>> The related bug comment for a so generic patch looks a bit weird.
>> true, sorry, it is a leftover
>>> 
>>> Would be sensible to have a static inline function instead of
>>> a macro?
>> 
>> I did it as a complement to VD_AGENT_SET_CAPABILITY. Do you prefer a
>> function because of the type check ? I don't mind adding it, but I'd
>> keep something like:
>> 
>> static inline vd_agent_clear_capability(uint32_t *caps, uint32_t
>> index);
>> #define VD_AGENT_CLEAR_CAPABILITY vd_agent_set_capability
>> 
>> 
> 
> For me make sense. Let's see what other people think (if they prefer
> same style).
> 
> About capabilities and how to save. Currently the code uses little
> endian but as we are moving to support also big endian platforms
> we are adding code to swap the uint32_t. If we assume little
> endian these expression produce the same results:
> 
>   uint32_t *caps;
>   ...
>   caps[i / 32] |= 1 << (i % 32);
> 
>   uint32_t *caps;
>   ...
>   ((uint8_t*)caps)[i / 8] |= 1 << (i % 8);
> 
> But this last one does not require to swap to/from network in
> case of big endian.
> Could we use a different structure to store capabilities
> to avoiding swapping the array?
> Would make code to support big endian easier.

I vote for the uint8_t version. There is no gain that I know of 
performance-wise with the uint32_t version.

Christophe


> 
> Frediano
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@lists.freedesktop.org <mailto:Spice-devel@lists.freedesktop.org>
> https://lists.freedesktop.org/mailman/listinfo/spice-devel 
> <https://lists.freedesktop.org/mailman/listinfo/spice-devel>
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to