Home | History | Annotate | Download | only in os
      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