2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-25 15:07:05 +00:00

lib: Add prefetch support (for GCC)

Define OVS_PREFETCH() and OVS_PREFETCH_WRITE() using builtin prefetch
for GCC, and ovs_prefetch_range() for prefetching a range of addresses.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
Jarno Rajahalme
2014-04-29 15:50:38 -07:00
parent d4570fd8ba
commit 124f09c927
2 changed files with 28 additions and 0 deletions

View File

@@ -206,4 +206,18 @@
static void f(void)
#endif
/* OVS_PREFETCH() can be used to instruct the CPU to fetch the cache
* line containing the given address to a CPU cache.
* OVS_PREFETCH_WRITE() should be used when the memory is going to be
* written to. Depending on the target CPU, this can generate the same
* instruction as OVS_PREFETCH(), or bring the data into the cache in an
* exclusive state. */
#if __GNUC__
#define OVS_PREFETCH(addr) __builtin_prefetch((addr))
#define OVS_PREFETCH_WRITE(addr) __builtin_prefetch((addr), 1)
#else
#define OVS_PREFETCH(addr)
#define OVS_PREFETCH_WRITE(addr)
#endif
#endif /* compiler.h */