os-freebsd.h revision 5c4e1dbc4ec6ee963220c5f4e64a04cd6130dc81
1ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#ifndef FIO_OS_FREEBSD_H
2ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#define FIO_OS_FREEBSD_H
3ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe
45c4e1dbc4ec6ee963220c5f4e64a04cd6130dc81Jens Axboe#include <sys/sysctl.h>
55c4e1dbc4ec6ee963220c5f4e64a04cd6130dc81Jens Axboe
6ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#undef FIO_HAVE_LIBAIO
7ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#define FIO_HAVE_POSIXAIO
8ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#undef FIO_HAVE_FADVISE
9ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#undef FIO_HAVE_CPU_AFFINITY
10ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#undef FIO_HAVE_DISK_UTIL
11ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#undef FIO_HAVE_SGIO
12ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe
13ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#define OS_MAP_ANON		(MAP_ANON)
14ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe
15ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboetypedef unsigned long os_cpu_mask_t;
166dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboetypedef unsigned int os_random_state_t;
17ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe
18ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe/*
19ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe * FIXME
20ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe */
219104f874d726e84739d3b4008eee0f6ddfe96714Jens Axboestatic inline int blockdev_size(int fd, unsigned long long *bytes)
22ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe{
23ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe	return 1;
24ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe}
25ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe
2632cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboestatic inline unsigned long long os_phys_mem(void)
2732cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe{
2832cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe	int mib[2] = { CTL_HW, HW_PHYSMEM };
2932cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe	unsigned long long mem;
3032cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe	size_t len = sizeof(mem);
3132cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe
3232cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe	sysctl(mib, 2, &mem, &len, NULL, 0);
3332cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe	return mem;
3432cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe}
3532cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe
366dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboestatic inline void os_random_seed(unsigned long seed, os_random_state_t *rs)
376dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe{
386dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe	srand(seed);
396dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe}
406dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe
416dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboestatic inline long os_random_long(os_random_state_t *rs)
426dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe{
436dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe	long val;
446dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe
456dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe	val = rand_r(rs);
466dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe	return val;
476dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe}
486dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe
496dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboestatic inline double os_random_double(os_random_state_t *rs)
506dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe{
516dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe	double val;
526dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe
536dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe	val = (double) rand_r(rs);
546dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe	return val;
556dfd46b99af38cc1e5f702f53c59212129fe615eJens Axboe}
56ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#endif
57