> I'd normally expect 64-bit reads and write to be atomic when we're > building for x86-64: >> +/* 64 bit reads and write are not atomic on x86. Currently, we are only doing 32 bit builds. So, I put the following in ovs-atomic.h to only include this file for 32 bit builds : ... #elif _MSC_VER && defined(_M_IX86) #include "ovs-atomic-msvc.h" #else ....
I will add the following line on top of the file to make it clear: /* This header implements atomic operation primitives for MSVC * on x86 (32 bit). */ (I haven't tried building 64 bit builds to test otherwise. Visual studio by default builds 32 build applications on 64 bit processors too. It is a little work to make it build 64 bit applications.) > I think that many of the macros should more carefully parenthesize > their argument expansions. Here are three examples but I see others: I haven't used macros extensively before to understand the pitfalls well. You mean, I should be doing this: *(DST) = *(SRC); instead of: *DST = *SRC right? I agree with all the other comments and will incorporate them. Thanks! _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev