[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86: fix cache flushing condition in map_pages_to_xen()
>>>> Keir Fraser <keir.xen@xxxxxxxxx> 07/17/13 6:31 PM >>> >On 17/07/2013 17:01, "Jan Beulich" <JBeulich@xxxxxxxx> wrote: >>>>> On 17.07.13 at 17:40, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote: >>>> On 17/07/13 16:09, Jan Beulich wrote: >>>> +#define flush_flags(oldf) do { \ >>>> + unsigned int o_ = (oldf); \ >>>> + if ( (o_) & _PAGE_GLOBAL ) \ >>> + flush_flags |= FLUSH_TLB_GLOBAL; \ >>>> + if ( (flags & _PAGE_PRESENT) && \ >>>> + (((o_) ^ flags) & PAGE_CACHE_ATTRS) ) \ >>>> + flush_flags |= FLUSH_CACHE; \ >>>> +} while (0) >>>> + >>> >>> I have to admit to being surprised that the compiler is even happy with >>> a macro aliasing a variable, but please can it be renamed to something >>> else (perhaps "set_flush_flags" ?) for the sanity of other humans trying >>> to read the code. >> >> Ugly. I actually picked the same name intentionally. > >I'm not too strongly opinionated on this one, but it did make me look twice. >I think it would be cleaner something like: >#define flush_flags(oldf) ({ unsigned int f_ = 0; ...; _f; }) >... >flush_flags |= flush_flags(...); >The 'name collision' I'm fine with, whereas going directly at a caller's >variable within a macro is rather grubby behaviour. ;) But that would still leave the macro access "flags" directly. And while I realize that this is (slightly) odd behavior for a macro, that's precisely the reason why I #undef it right after the function. Perhaps this could be made even more clear by moving #define and #undef inside the function... Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |