1c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#ifndef FIO_OS_HPUX_H 2c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define FIO_OS_HPUX_H 3c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 4cca84643cc10cd72b0b453ff92ccb8643ba51493Jens Axboe#define FIO_OS os_hpux 5cca84643cc10cd72b0b453ff92ccb8643ba51493Jens Axboe 6c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include <errno.h> 7c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include <unistd.h> 8c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include <sys/ioctl.h> 9c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include <sys/fcntl.h> 10c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include <sys/fadvise.h> 11c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include <sys/mman.h> 12c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include <sys/mpctl.h> 130ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe#include <sys/diskio.h> 148c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe#include <sys/param.h> 158c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe#include <sys/pstat.h> 16d48a9799a3d3cbe3c41658d6e41d6791b33e926cJens Axboe#include <time.h> 17d48a9799a3d3cbe3c41658d6e41d6791b33e926cJens Axboe#include <aio.h> 186e675fcb0886d989b327bdb6a0a8717f345221cbJens Axboe#include <arm.h> 19c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 20c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#include "../file.h" 21c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 22c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define FIO_HAVE_ODIRECT 23c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define FIO_USE_GENERIC_RAND 2493bcfd20e37cef8cec350fe06d3a086724c9f257Bruce Cran#define FIO_USE_GENERIC_INIT_RANDOM_STATE 25c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define FIO_HAVE_PSHARED_MUTEX 260ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe#define FIO_HAVE_CHARDEV_SIZE 27c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 28c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define OS_MAP_ANON MAP_ANONYMOUS 29c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define OS_MSG_DONTWAIT 0 30c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 31c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define POSIX_MADV_DONTNEED MADV_DONTNEED 32c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL 33c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define POSIX_MADV_RANDOM MADV_RANDOM 34c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define posix_madvise(ptr, sz, hint) madvise((ptr), (sz), (hint)) 35c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 36d48a9799a3d3cbe3c41658d6e41d6791b33e926cJens Axboe#ifndef MSG_WAITALL 37d48a9799a3d3cbe3c41658d6e41d6791b33e926cJens Axboe#define MSG_WAITALL 0x40 38d48a9799a3d3cbe3c41658d6e41d6791b33e926cJens Axboe#endif 39d48a9799a3d3cbe3c41658d6e41d6791b33e926cJens Axboe 40901ebe18bdca90032e2fe107a1410385da80d18bJens Axboe#define FIO_USE_GENERIC_SWAP 41901ebe18bdca90032e2fe107a1410385da80d18bJens Axboe 42e97c14423a5688d7adfb342c16363c263cb741f9Jens Axboe#define FIO_OS_HAVE_AIOCB_TYPEDEF 43e97c14423a5688d7adfb342c16363c263cb741f9Jens Axboetypedef struct aiocb64 os_aiocb_t; 44e97c14423a5688d7adfb342c16363c263cb741f9Jens Axboe 45c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboestatic inline int blockdev_invalidate_cache(struct fio_file *f) 46c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe{ 47c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe return EINVAL; 48c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe} 49c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 50c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboestatic inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) 51c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe{ 520ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe disk_describe_type_ext_t dext; 53c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 540ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe if (!ioctl(f->fd, DIOC_DESCRIBE_EXT, &dext)) { 550ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe unsigned long long lba; 560ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe 570ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe lba = ((uint64_t) dext.maxsva_high << 32) | dext.maxsva_low; 580ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe *bytes = lba * dext.lgblksz; 59c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe return 0; 60c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe } 61c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 62564e49f329dd526842a29f4086fff727bc4d0ba0Jens Axboe *bytes = 0; 63c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe return errno; 64c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe} 65c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 660ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboestatic inline int chardev_size(struct fio_file *f, unsigned long long *bytes) 670ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe{ 680ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe return blockdev_size(f, bytes); 690ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe} 700ec15d6ca9fee3c2b0f19b3520f5b77fb2378d51Jens Axboe 71c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboestatic inline unsigned long long os_phys_mem(void) 72c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe{ 738c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe unsigned long long ret; 748c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe struct pst_static pst; 758c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe union pstun pu; 76c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 778c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe pu.pst_static = &pst; 788c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe if (pstat(PSTAT_STATIC, pu, sizeof(pst), 0, 0) == -1) 79c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe return 0; 80c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 818c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe ret = pst.physical_memory; 828c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe ret *= pst.page_size; 838c9ca2e6fe5a400fcba3a7dd45a33effea8298e0Jens Axboe return ret; 84c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe} 85c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 86c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#define FIO_HAVE_CPU_ONLINE_SYSCONF 87c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 88c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboestatic inline unsigned int cpus_online(void) 89c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe{ 90c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe return mpctl(MPC_GETNUMSPUS, 0, NULL); 91c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe} 92c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe 93c00a22894b82ff53b42c1e741a7b4828199a1388Jens Axboe#endif 94