13cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#ifndef FIO_OS_OPENBSD_H
23cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define FIO_OS_OPENBSD_H
33cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
43cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define	FIO_OS	os_openbsd
53cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
63cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#include <errno.h>
73cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#include <sys/param.h>
83cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn/* XXX hack to avoid conflicts between rbtree.h and <sys/tree.h> */
93cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#include <sys/sysctl.h>
103cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#undef RB_BLACK
113cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#undef RB_RED
123cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#undef RB_ROOT
133cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
143cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#include "../file.h"
153cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
163cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#undef  FIO_HAVE_ODIRECT
173cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define FIO_USE_GENERIC_BDEV_SIZE
183cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define FIO_USE_GENERIC_RAND
193cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define FIO_USE_GENERIC_INIT_RANDOM_STATE
203cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define FIO_HAVE_GETTID
213cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
223cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#undef	FIO_HAVE_CPU_AFFINITY	/* XXX notyet */
233cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
243cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define OS_MAP_ANON		MAP_ANON
253cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
263cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#ifndef PTHREAD_STACK_MIN
273cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define PTHREAD_STACK_MIN 4096
283cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#endif
293cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
303cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define fio_swap16(x)	bswap16(x)
313cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define fio_swap32(x)	bswap32(x)
323cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define fio_swap64(x)	bswap64(x)
333cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
343cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohntypedef off_t off64_t;
353cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
363cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohnstatic inline int blockdev_invalidate_cache(struct fio_file *f)
373cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn{
383cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn	return EINVAL;
393cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn}
403cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
413cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohnstatic inline unsigned long long os_phys_mem(void)
423cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn{
433cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn	int mib[2] = { CTL_HW, HW_PHYSMEM64 };
443cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn	uint64_t mem;
453cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn	size_t len = sizeof(mem);
463cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
473cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn	sysctl(mib, 2, &mem, &len, NULL, 0);
483cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn	return mem;
493cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn}
503cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
513cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohnstatic inline int gettid(void)
523cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn{
533cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn	return (int) pthread_self();
543cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn}
553cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
563cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#ifdef MADV_FREE
573cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#define FIO_MADV_FREE	MADV_FREE
583cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#endif
593cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn
603cd4c66f35fad0df64e4e6dfeddc5bdfd5206e0cJohn#endif
61