1 #ifndef FIO_OS_HPUX_H 2 #define FIO_OS_HPUX_H 3 4 #define FIO_OS os_hpux 5 6 #include <errno.h> 7 #include <unistd.h> 8 #include <sys/ioctl.h> 9 #include <sys/fcntl.h> 10 #include <sys/fadvise.h> 11 #include <sys/mman.h> 12 #include <sys/mpctl.h> 13 #include <sys/diskio.h> 14 #include <sys/param.h> 15 #include <sys/pstat.h> 16 #include <time.h> 17 #include <aio.h> 18 #include <arm.h> 19 20 #include "../file.h" 21 22 #define FIO_HAVE_ODIRECT 23 #define FIO_USE_GENERIC_RAND 24 #define FIO_USE_GENERIC_INIT_RANDOM_STATE 25 #define FIO_HAVE_CHARDEV_SIZE 26 27 #define OS_MAP_ANON MAP_ANONYMOUS 28 #define OS_MSG_DONTWAIT 0 29 30 #define POSIX_MADV_DONTNEED MADV_DONTNEED 31 #define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL 32 #define POSIX_MADV_RANDOM MADV_RANDOM 33 #define posix_madvise(ptr, sz, hint) madvise((ptr), (sz), (hint)) 34 35 #ifndef MSG_WAITALL 36 #define MSG_WAITALL 0x40 37 #endif 38 39 #define FIO_USE_GENERIC_SWAP 40 41 #define FIO_OS_HAVE_AIOCB_TYPEDEF 42 typedef struct aiocb64 os_aiocb_t; 43 44 static inline int blockdev_invalidate_cache(struct fio_file *f) 45 { 46 return ENOTSUP; 47 } 48 49 static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) 50 { 51 disk_describe_type_ext_t dext; 52 53 if (!ioctl(f->fd, DIOC_DESCRIBE_EXT, &dext)) { 54 unsigned long long lba; 55 56 lba = ((uint64_t) dext.maxsva_high << 32) | dext.maxsva_low; 57 *bytes = lba * dext.lgblksz; 58 return 0; 59 } 60 61 *bytes = 0; 62 return errno; 63 } 64 65 static inline int chardev_size(struct fio_file *f, unsigned long long *bytes) 66 { 67 return blockdev_size(f, bytes); 68 } 69 70 static inline unsigned long long os_phys_mem(void) 71 { 72 unsigned long long ret; 73 struct pst_static pst; 74 union pstun pu; 75 76 pu.pst_static = &pst; 77 if (pstat(PSTAT_STATIC, pu, sizeof(pst), 0, 0) == -1) 78 return 0; 79 80 ret = pst.physical_memory; 81 ret *= pst.page_size; 82 return ret; 83 } 84 85 #define FIO_HAVE_CPU_ONLINE_SYSCONF 86 87 static inline unsigned int cpus_online(void) 88 { 89 return mpctl(MPC_GETNUMSPUS, 0, NULL); 90 } 91 92 #endif 93