Re: [PATCH] change marshalling macros to consider alignment of types

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



It doesn't work.

11.12.2015, 17:22, "Frediano Ziglio" <fziglio@xxxxxxxxxx>:
>>  More details in the log as to when this is needed would be useful.
>>
>>  On Fri, Dec 11, 2015 at 01:36:41PM +0000, Frediano Ziglio wrote:
>>  > ---
>>  > python_modules/demarshal.py | 30 ++++++++++++++++++++++--------
>>  > 1 file changed, 22 insertions(+), 8 deletions(-)
>>  >
>>  > diff --git a/python_modules/demarshal.py b/python_modules/demarshal.py
>>  > index 209eafc..743b0d8 100644
>>  > --- a/python_modules/demarshal.py
>>  > +++ b/python_modules/demarshal.py
>>  > @@ -40,20 +40,34 @@ def write_parser_helpers(writer):
>>  >
>>  > writer = writer.function_helper()
>>  >
>>  > + for sign in ["", "u"]:
>>  > + type = "%sint8" % sign
>>  > + writer.macro("read_%s" % type, "ptr", "(*((%s_t *)(ptr)))" % type)
>>  > + writer.macro("write_%s" % type, "ptr, val", "(*((%s_t *)(ptr))) =
>>  > val" % type)
>>  > writer.writeln("#ifdef WORDS_BIGENDIAN")
>>  > - for size in [8, 16, 32, 64]:
>>  > + for size in [16, 32, 64]:
>>
>>  I don't think this hunk is strictly related to the alignment change, it
>>  could go in a "Don't wrap 8 bit accesses in unneeded #ifdef
>>  WORDS_BIGENDIAN"
>
> Yes, just helps reducing code generated.
>
>>  > for sign in ["", "u"]:
>>  > utype = "uint%d" % (size)
>>  > type = "%sint%d" % (sign, size)
>>  > swap = "SPICE_BYTESWAP%d" % size
>>  > - if size == 8:
>>  > - writer.macro("read_%s" % type, "ptr", "(*((%s_t *)(ptr)))"
>>  > % type)
>>  > - writer.macro("write_%s" % type, "ptr, val", "*(%s_t
>>  > *)(ptr) = val" % (type))
>>  > - else:
>>  > - writer.macro("read_%s" % type, "ptr", "((%s_t)%s(*((%s_t
>>  > *)(ptr))))" % (type, swap, utype))
>>  > - writer.macro("write_%s" % type, "ptr, val", "*(%s_t
>>  > *)(ptr) = %s((%s_t)val)" % (utype, swap, utype))
>>  > + writer.macro("read_%s" % type, "ptr", "((%s_t)%s(*((%s_t
>>  > *)(ptr))))" % (type, swap, utype))
>>  > + writer.macro("write_%s" % type, "ptr, val", "*(%s_t *)(ptr) =
>>  > %s((%s_t)val)" % (utype, swap, utype))
>>  > + writer.writeln("#elif __GNUC__ > 3")
>>  > + struct = "pkg_struct"
>>
>>  Why is it called 'pkg_struct' ?
>
> Was a struct before... and few fantasy at the moment :)
>
>>  I'll let Anton tell us if this helps with his situation or not before
>>  looking closer at that patch
>>
>>  Christophe
>
> I should have put an "RFC", this patch was intended to be tested by Anton
> (it's in reply to Anton's thread).
>
> Note that this patch does not consider architectures with big endian and
> unaligned access problems.
>
> Frediano
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

-- 
Anton D. Kachalov

ITO, System Architect
Tel: 7 (495) 739-70-00 ext.7613
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]