On Tue, Jun 09, 2015 at 05:24:10PM -0700, Jarno Rajahalme wrote:
> This patch allows classifier rules to become visible and invisible in
> specific versions. A 'version' is defined as a positive monotonically
> increasing integer, which never wraps around.
>
> The new 'visibility' attribute replaces the prior 'to_be_removed' and
> 'visible' attributes.
>
> When versioning is not used, the 'version' parameter should be passed
> as 'CLS_MIN_VERSION' when creating rules, and 'CLS_MAX_VERSION' when
> looking up flows.
>
> This feature enables the support for atomic OpenFlow bundles without
> significant performance penalty on 64-bit systems. There is a
> performance decrease in 32-bit systems due to 64-bit atomics used.
>
> Signed-off-by: Jarno Rajahalme <[email protected]>
The two comments
/* clang does not want to read from a const atomic. */
stand out to me a little, because they imply that this is a special
property of Clang. I don't think that's true; rather, it's a
consequence of the C standard definition, which defines atomic "load"
operations as taking plain types, not const-qualified ones. I think
that goes back, historically, to the definition of a "side effect" in C:
Accessing a volatile object, modifying an object, modifying a file,
or calling a function that does any of those operations are all side
effects, which are changes in the state of the execution
environment.
That is, *any* access to a volatile object (not just a write) is a side
effect (and thus cannot be optimized out by the compiler). I get the
impression that a lot of behavior for atomic types in C11 is related to
volatile types.
Anyway, personally I'd either drop the comments or just s/clang/C11/.
Acked-by: Ben Pfaff <[email protected]>
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev