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_PSHARED_MUTEX 26 #define FIO_HAVE_CHARDEV_SIZE 27 28 #define OS_MAP_ANON MAP_ANONYMOUS 29 #define OS_MSG_DONTWAIT 0 30 31 #define POSIX_MADV_DONTNEED MADV_DONTNEED 32 #define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL 33 #define POSIX_MADV_RANDOM MADV_RANDOM 34 #define posix_madvise(ptr, sz, hint) madvise((ptr), (sz), (hint)) 35 36 #ifndef MSG_WAITALL 37 #define MSG_WAITALL 0x40 38 #endif 39 40 #define FIO_USE_GENERIC_SWAP 41 42 #define FIO_OS_HAVE_AIOCB_TYPEDEF 43 typedef struct aiocb64 os_aiocb_t; 44 45 static inline int blockdev_invalidate_cache(struct fio_file *f) 46 { 47 return EINVAL; 48 } 49 50 static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) 51 { 52 disk_describe_type_ext_t dext; 53 54 if (!ioctl(f->fd, DIOC_DESCRIBE_EXT, &dext)) { 55 unsigned long long lba; 56 57 lba = ((uint64_t) dext.maxsva_high << 32) | dext.maxsva_low; 58 *bytes = lba * dext.lgblksz; 59 return 0; 60 } 61 62 *bytes = 0; 63 return errno; 64 } 65 66 static inline int chardev_size(struct fio_file *f, unsigned long long *bytes) 67 { 68 return blockdev_size(f, bytes); 69 } 70 71 static inline unsigned long long os_phys_mem(void) 72 { 73 unsigned long long ret; 74 struct pst_static pst; 75 union pstun pu; 76 77 pu.pst_static = &pst; 78 if (pstat(PSTAT_STATIC, pu, sizeof(pst), 0, 0) == -1) 79 return 0; 80 81 ret = pst.physical_memory; 82 ret *= pst.page_size; 83 return ret; 84 } 85 86 #define FIO_HAVE_CPU_ONLINE_SYSCONF 87 88 static inline unsigned int cpus_online(void) 89 { 90 return mpctl(MPC_GETNUMSPUS, 0, NULL); 91 } 92 93 #endif 94