os-freebsd.h revision 4ccdccd149d82c94ec6ccdb4118d9e27479b8516
1ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#ifndef FIO_OS_FREEBSD_H 2ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#define FIO_OS_FREEBSD_H 3ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe 4690dec6e4ec7297a477b809fa24ee23dc02348c9Jens Axboe#include <errno.h> 55c4e1dbc4ec6ee963220c5f4e64a04cd6130dc81Jens Axboe#include <sys/sysctl.h> 6aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe#include <sys/disk.h> 75c4e1dbc4ec6ee963220c5f4e64a04cd6130dc81Jens Axboe 8ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#define FIO_HAVE_POSIXAIO 92c0ecd28459b6a1b236c865defb5ef76ce8bfa02Jens Axboe#define FIO_HAVE_ODIRECT 10535313705d69dc16f27ca38acf2f9bf7205e410dJens Axboe#define FIO_USE_GENERIC_RAND 114ccdccd149d82c94ec6ccdb4118d9e27479b8516Jens Axboe#define FIO_HAVE_CHARDEV_SIZE 12ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe 13dc873b6f4a536c332b72cce268d5a7ccd356a891Jens Axboe#define OS_MAP_ANON MAP_ANON 14ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe 15907249cffbdfa26de688c127abb5483154a4eae6Jens Axboetypedef off_t off64_t; 16907249cffbdfa26de688c127abb5483154a4eae6Jens Axboe 17aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboestatic inline int blockdev_size(int fd, unsigned long long *bytes) 18aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe{ 19aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe off_t size; 20aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe 21aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe if (!ioctl(fd, DIOCGMEDIASIZE, &size)) { 22aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe *bytes = size; 23aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe return 0; 24aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe } 25aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe 262fa55e93d8895e0645df3e50baae82d15d9beea4Jens Axboe *bytes = 0; 27aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe return errno; 28aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe} 29aa5e69b26d16ae4c1680d05b25149f3198036714Jens Axboe 304ccdccd149d82c94ec6ccdb4118d9e27479b8516Jens Axboestatic inline int chardev_size(int fd, unsigned long long *bytes) 314ccdccd149d82c94ec6ccdb4118d9e27479b8516Jens Axboe{ 324ccdccd149d82c94ec6ccdb4118d9e27479b8516Jens Axboe return blockdev_size(fd, bytes); 334ccdccd149d82c94ec6ccdb4118d9e27479b8516Jens Axboe} 344ccdccd149d82c94ec6ccdb4118d9e27479b8516Jens Axboe 35e5b401d4bf67a1704f28872d3abe09eaf65cdabeJens Axboestatic inline int blockdev_invalidate_cache(int fd) 36e5b401d4bf67a1704f28872d3abe09eaf65cdabeJens Axboe{ 37e5b401d4bf67a1704f28872d3abe09eaf65cdabeJens Axboe return EINVAL; 38ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe} 39ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe 4032cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboestatic inline unsigned long long os_phys_mem(void) 4132cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe{ 4232cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe int mib[2] = { CTL_HW, HW_PHYSMEM }; 4332cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe unsigned long long mem; 4432cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe size_t len = sizeof(mem); 4532cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe 4632cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe sysctl(mib, 2, &mem, &len, NULL, 0); 4732cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe return mem; 4832cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe} 4932cd46a085ac60f4f8b085e2d65ebfc6100bb8c5Jens Axboe 50a1c58075279454a91ec43366846b93e8dcf9753cJens Axboe#ifdef MADV_FREE 51a1c58075279454a91ec43366846b93e8dcf9753cJens Axboe#define FIO_MADV_FREE MADV_FREE 52a1c58075279454a91ec43366846b93e8dcf9753cJens Axboe#endif 53a1c58075279454a91ec43366846b93e8dcf9753cJens Axboe 54ebac4655dd3624f3296ff83be48e0cdc02852f1Jens Axboe#endif 55