X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=os%2Fos-openbsd.h;h=f1bad67165e982c4da1ecc743887ec8e4bbe056c;hb=afa37b56c6637967180e4409adbb682b2ce16bcb;hp=3b1948321bcbb6e39fa881f0c74893c6ec431c88;hpb=0cfe20893afc994b3e105ea91a528f96af560199;p=fio.git diff --git a/os/os-openbsd.h b/os/os-openbsd.h index 3b194832..f1bad671 100644 --- a/os/os-openbsd.h +++ b/os/os-openbsd.h @@ -9,34 +9,37 @@ #include #include #include -/* XXX hack to avoid conflicts between rbtree.h and */ +#include +#include #include + +/* XXX hack to avoid conflicts between rbtree.h and */ #undef RB_BLACK #undef RB_RED #undef RB_ROOT #include "../file.h" -#undef FIO_HAVE_ODIRECT -#define FIO_USE_GENERIC_RAND #define FIO_USE_GENERIC_INIT_RANDOM_STATE #define FIO_HAVE_FS_STAT #define FIO_HAVE_GETTID #define FIO_HAVE_SHM_ATTACH_REMOVED -#undef FIO_HAVE_CPU_AFFINITY /* XXX notyet */ - #define OS_MAP_ANON MAP_ANON #ifndef PTHREAD_STACK_MIN #define PTHREAD_STACK_MIN 4096 #endif -#define fio_swap16(x) bswap16(x) -#define fio_swap32(x) bswap32(x) -#define fio_swap64(x) bswap64(x) +#define fio_swap16(x) swap16(x) +#define fio_swap32(x) swap32(x) +#define fio_swap64(x) swap64(x) -typedef off_t off64_t; +#ifdef CONFIG_PTHREAD_GETAFFINITY +#define FIO_HAVE_GET_THREAD_AFFINITY +#define fio_get_thread_affinity(mask) \ + pthread_getaffinity_np(pthread_self(), sizeof(mask), &(mask)) +#endif static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) { @@ -53,7 +56,7 @@ static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) static inline int blockdev_invalidate_cache(struct fio_file *f) { - return EINVAL; + return ENOTSUP; } static inline unsigned long long os_phys_mem(void) @@ -66,10 +69,12 @@ static inline unsigned long long os_phys_mem(void) return mem; } +#ifndef CONFIG_HAVE_GETTID static inline int gettid(void) { - return (int) pthread_self(); + return (int)(intptr_t) pthread_self(); } +#endif static inline unsigned long long get_fs_free_size(const char *path) { @@ -90,9 +95,31 @@ static inline unsigned long long get_fs_free_size(const char *path) static inline int shm_attach_to_open_removed(void) { + struct utsname uts; + int major, minor; + + if (uname(&uts) == -1) + return 0; + /* - * XXX: Return 1 if >= OpenBSD 5.1 according to 97900ebf. + * Return 1 if >= OpenBSD 5.1 according to 97900ebf, + * assuming both major/minor versions are < 10. */ + if (uts.release[0] > '9' || uts.release[0] < '0') + return 0; + if (uts.release[1] != '.') + return 0; + if (uts.release[2] > '9' || uts.release[2] < '0') + return 0; + + major = uts.release[0] - '0'; + minor = uts.release[2] - '0'; + + if (major > 5) + return 1; + if (major == 5 && minor >= 1) + return 1; + return 0; }