X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Futil.h;h=743b9fea169462d687f12f0dd52d5bbbfc75a2cc;hb=6d308b28c023e864925b1a6775b3b91d215e89bf;hp=13ff58ece7466f2a0dcfb99666a875cc2a790776;hpb=275eebb92d46e8647861f0b25d9b0fb300379d2d;p=sliver-openvswitch.git diff --git a/lib/util.h b/lib/util.h index 13ff58ece..743b9fea1 100644 --- a/lib/util.h +++ b/lib/util.h @@ -17,6 +17,7 @@ #ifndef UTIL_H #define UTIL_H 1 +#include #include #include #include @@ -150,6 +151,19 @@ is_pow2(uintmax_t x) #define CACHE_LINE_SIZE 64 BUILD_ASSERT_DECL(IS_POW2(CACHE_LINE_SIZE)); +#define CACHE_LINE_SIZE 64 /* Correct for most CPUs. */ + +static inline void +ovs_prefetch_range(const void *start, size_t size) +{ + const char *addr = (const char *)start; + size_t ofs; + + for (ofs = 0; ofs < size; ofs += CACHE_LINE_SIZE) { + OVS_PREFETCH(addr + ofs); + } +} + #ifndef MIN #define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) #endif @@ -289,24 +303,7 @@ void ovs_hex_dump(FILE *, const void *, size_t, uintptr_t offset, bool ascii); bool str_to_int(const char *, int base, int *); bool str_to_long(const char *, int base, long *); bool str_to_llong(const char *, int base, long long *); - -static inline bool -str_to_uint(const char *s, int base, unsigned int *u) -{ - return str_to_int(s, base, (int *) u); -} - -static inline bool -str_to_ulong(const char *s, int base, unsigned long *ul) -{ - return str_to_long(s, base, (long *) ul); -} - -static inline bool -str_to_ullong(const char *s, int base, unsigned long long *ull) -{ - return str_to_llong(s, base, (long long *) ull); -} +bool str_to_uint(const char *, int base, unsigned int *); bool ovs_scan(const char *s, const char *format, ...) SCANF_FORMAT(2, 3); @@ -501,13 +498,14 @@ void bitwise_put(uint64_t value, uint64_t bitwise_get(const void *src, unsigned int src_len, unsigned int src_ofs, unsigned int n_bits); +void xsleep(unsigned int seconds); + #ifdef _WIN32 char *ovs_format_message(int error); char *ovs_lasterror_to_string(void); int ftruncate(int fd, off_t length); #endif -unsigned int xsleep(unsigned int seconds); #ifdef __cplusplus }