projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of https://github.com/DevriesL/fio
[fio.git]
/
os
/
os-solaris.h
diff --git
a/os/os-solaris.h
b/os/os-solaris.h
index 45268b23862af2983922fca47115cf0d362c6243..ea1f081c89e5d24bdc2c6854e29916ccdacc4b1a 100644
(file)
--- a/
os/os-solaris.h
+++ b/
os/os-solaris.h
@@
-7,17
+7,21
@@
#include <malloc.h>
#include <unistd.h>
#include <sys/types.h>
#include <malloc.h>
#include <unistd.h>
#include <sys/types.h>
-#include <
sys/
fcntl.h>
+#include <fcntl.h>
#include <sys/pset.h>
#include <sys/mman.h>
#include <sys/dkio.h>
#include <sys/byteorder.h>
#include <sys/pset.h>
#include <sys/mman.h>
#include <sys/dkio.h>
#include <sys/byteorder.h>
+#include <sys/statvfs.h>
+#include <pthread.h>
#include "../file.h"
#include "../file.h"
+#include "../lib/types.h"
#define FIO_HAVE_CPU_AFFINITY
#define FIO_HAVE_CHARDEV_SIZE
#define FIO_USE_GENERIC_BDEV_SIZE
#define FIO_HAVE_CPU_AFFINITY
#define FIO_HAVE_CHARDEV_SIZE
#define FIO_USE_GENERIC_BDEV_SIZE
+#define FIO_HAVE_FS_STAT
#define FIO_USE_GENERIC_INIT_RANDOM_STATE
#define FIO_HAVE_GETTID
#define FIO_USE_GENERIC_INIT_RANDOM_STATE
#define FIO_HAVE_GETTID
@@
-42,8
+46,13
@@
struct solaris_rand_seed {
#define os_ctime_r(x, y, z) ctime_r((x), (y), (z))
#define FIO_OS_HAS_CTIME_R
#define os_ctime_r(x, y, z) ctime_r((x), (y), (z))
#define FIO_OS_HAS_CTIME_R
+#ifdef CONFIG_PTHREAD_GETAFFINITY
+#define FIO_HAVE_GET_THREAD_AFFINITY
+#define fio_get_thread_affinity(mask) \
+ pthread_getaffinity_np(pthread_self(), sizeof(mask), &(mask))
+#endif
+
typedef psetid_t os_cpu_mask_t;
typedef psetid_t os_cpu_mask_t;
-typedef struct solaris_rand_seed os_random_state_t;
static inline int chardev_size(struct fio_file *f, unsigned long long *bytes)
{
static inline int chardev_size(struct fio_file *f, unsigned long long *bytes)
{
@@
-65,22
+74,27
@@
static inline int blockdev_invalidate_cache(struct fio_file *f)
static inline unsigned long long os_phys_mem(void)
{
static inline unsigned long long os_phys_mem(void)
{
- return 0;
-}
+ long pagesize, pages;
-static inline void os_random_seed(unsigned long seed, os_random_state_t *rs)
-{
- rs->r[0] = seed & 0xffff;
- seed >>= 16;
- rs->r[1] = seed & 0xffff;
- seed >>= 16;
- rs->r[2] = seed & 0xffff;
- seed48(rs->r);
+ pagesize = sysconf(_SC_PAGESIZE);
+ pages = sysconf(_SC_PHYS_PAGES);
+ if (pages == -1 || pagesize == -1)
+ return 0;
+
+ return (unsigned long long) pages * (unsigned long long) pagesize;
}
}
-static inline
long os_random_long(os_random_state_t *rs
)
+static inline
unsigned long long get_fs_free_size(const char *path
)
{
{
- return nrand48(rs->r);
+ unsigned long long ret;
+ struct statvfs s;
+
+ if (statvfs(path, &s) < 0)
+ return -1ULL;
+
+ ret = s.f_frsize;
+ ret *= (unsigned long long) s.f_bfree;
+ return ret;
}
#define FIO_OS_DIRECTIO
}
#define FIO_OS_DIRECTIO
@@
-103,24
+117,25
@@
static inline int fio_set_odirect(struct fio_file *f)
#define fio_cpu_clear(mask, cpu) pset_assign(PS_NONE, (cpu), NULL)
#define fio_cpu_set(mask, cpu) pset_assign(*(mask), (cpu), NULL)
#define fio_cpu_clear(mask, cpu) pset_assign(PS_NONE, (cpu), NULL)
#define fio_cpu_set(mask, cpu) pset_assign(*(mask), (cpu), NULL)
-static inline
int
fio_cpu_isset(os_cpu_mask_t *mask, int cpu)
+static inline
bool
fio_cpu_isset(os_cpu_mask_t *mask, int cpu)
{
const unsigned int max_cpus = sysconf(_SC_NPROCESSORS_ONLN);
unsigned int num_cpus;
processorid_t *cpus;
{
const unsigned int max_cpus = sysconf(_SC_NPROCESSORS_ONLN);
unsigned int num_cpus;
processorid_t *cpus;
- int i, ret;
+ bool ret;
+ int i;
cpus = malloc(sizeof(*cpus) * max_cpus);
if (pset_info(*mask, NULL, &num_cpus, cpus) < 0) {
free(cpus);
cpus = malloc(sizeof(*cpus) * max_cpus);
if (pset_info(*mask, NULL, &num_cpus, cpus) < 0) {
free(cpus);
- return
0
;
+ return
false
;
}
}
- ret =
0
;
+ ret =
false
;
for (i = 0; i < num_cpus; i++) {
if (cpus[i] == cpu) {
for (i = 0; i < num_cpus; i++) {
if (cpus[i] == cpu) {
- ret =
1
;
+ ret =
true
;
break;
}
}
break;
}
}
@@
-155,10
+170,12
@@
static inline int fio_cpuset_exit(os_cpu_mask_t *mask)
return 0;
}
return 0;
}
+#ifndef CONFIG_HAVE_GETTID
static inline int gettid(void)
{
return pthread_self();
}
static inline int gettid(void)
{
return pthread_self();
}
+#endif
/*
* Should be enough, not aware of what (if any) restrictions Solaris has
/*
* Should be enough, not aware of what (if any) restrictions Solaris has