summaryrefslogtreecommitdiff
path: root/lib/ovs-atomic-x86_64.h
Commit message (Collapse)AuthorAgeFilesLines
* lib/ovs-atomic: Add missing macro argument parentheses.Jarno Rajahalme2014-08-291-7/+7
| | | | | | | | | | Otherwise the dereference operator could target a portion of a ternary expression, for example. Also minor style fixes. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* lib/ovs-atomic: Native support for x86_64 with GCC.Jarno Rajahalme2014-08-051-0/+351
Some supported XenServer build environments lack compiler support for atomic operations. This patch provides native support for x86_64 on GCC, which covers possible future 64-bit builds on XenServer. Since this implementation is faster than the existing support prior to GCC 4.7, especially for cmap inserts, we use this with GCC < 4.7 on x86_64. Example numbers with "tests/test-cmap benchmark 2000000 8 0.1" on quad-core hyperthreaded laptop, built with GCC 4.6 -O2: Using ovs-atomic-pthreads on x86_64: Benchmarking with n=2000000, 8 threads, 0.10% mutations: cmap insert: 4725 ms cmap iterate: 329 ms cmap search: 5945 ms cmap destroy: 911 ms Using ovs-atomic-gcc4+ on x86_64: Benchmarking with n=2000000, 8 threads, 0.10% mutations: cmap insert: 845 ms cmap iterate: 58 ms cmap search: 308 ms cmap destroy: 295 ms With the native support provided by this patch: Benchmarking with n=2000000, 8 threads, 0.10% mutations: cmap insert: 530 ms cmap iterate: 59 ms cmap search: 305 ms cmap destroy: 232 ms Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>