X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Futil.h;h=bff6153a8daf354f8325394db035789be4d6f57b;hb=4c21aa063fa1c7f95800c95fafebedcd577ce674;hp=8c4d9d6a57f16e7dfa8cd04ffbce06b24b02cf5b;hpb=f6e984d7949a1d5e2b82683e2ecf6deb4b144e93;p=sliver-openvswitch.git diff --git a/lib/util.h b/lib/util.h index 8c4d9d6a5..bff6153a8 100644 --- a/lib/util.h +++ b/lib/util.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. + * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ #ifndef UTIL_H #define UTIL_H 1 +#include #include #include #include @@ -145,6 +146,11 @@ is_pow2(uintmax_t x) #define RDP2_4(X) (RDP2_5(X) | (RDP2_5(X) >> 2)) #define RDP2_5(X) ( (X) | ( (X) >> 1)) +/* This system's cache line size, in bytes. + * Being wrong hurts performance but not correctness. */ +#define CACHE_LINE_SIZE 64 +BUILD_ASSERT_DECL(IS_POW2(CACHE_LINE_SIZE)); + #ifndef MIN #define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) #endif @@ -259,6 +265,10 @@ char *xasprintf(const char *format, ...) PRINTF_FORMAT(1, 2) MALLOC_LIKE; char *xvasprintf(const char *format, va_list) PRINTF_FORMAT(1, 0) MALLOC_LIKE; void *x2nrealloc(void *p, size_t *n, size_t s); +void *xmalloc_cacheline(size_t) MALLOC_LIKE; +void *xzalloc_cacheline(size_t) MALLOC_LIKE; +void free_cacheline(void *); + void ovs_strlcpy(char *dst, const char *src, size_t size); void ovs_strzcpy(char *dst, const char *src, size_t size); @@ -280,24 +290,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); @@ -492,6 +485,7 @@ 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);