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_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