diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2008-12-12 20:42:26 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-12-12 20:42:26 +0100 |
commit | 6f7024e49e41fafcb838acbebf0c31fbcf35132f (patch) | |
tree | 0ed42f9ca6e5ae7dd6b3e823b4b0f575de3ca47b /os/os-solaris.h | |
parent | 4e78e405a12b31291aa88fffc1da2cf43b782ef5 (diff) | |
download | fio-6f7024e49e41fafcb838acbebf0c31fbcf35132f.tar.gz fio-6f7024e49e41fafcb838acbebf0c31fbcf35132f.tar.bz2 |
Support for CPU binding in Solaris
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'os/os-solaris.h')
-rw-r--r-- | os/os-solaris.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/os/os-solaris.h b/os/os-solaris.h index 759f3c1b..de948952 100644 --- a/os/os-solaris.h +++ b/os/os-solaris.h @@ -3,11 +3,13 @@ #include <sys/types.h> #include <sys/fcntl.h> +#include <sys/pset.h> #define FIO_HAVE_POSIXAIO #define FIO_HAVE_SOLARISAIO #define FIO_HAVE_FALLOCATE #define FIO_HAVE_POSIXAIO_FSYNC +#define FIO_HAVE_CPU_AFFINITY #define OS_MAP_ANON MAP_ANON #define OS_RAND_MAX 2147483648UL @@ -16,7 +18,7 @@ struct solaris_rand_seed { unsigned short r[3]; }; -typedef unsigned long os_cpu_mask_t; +typedef psetid_t os_cpu_mask_t; typedef struct solaris_rand_seed os_random_state_t; /* @@ -62,4 +64,22 @@ static inline int fio_set_odirect(int fd) return 0; } +/* + * pset binding hooks for fio + */ +#define fio_setaffinity(td) \ + pset_bind((td)->o.cpumask, P_PID, (td)->pid) +#define fio_getaffinity(pid, ptr) \ + sched_getaffinity((pid), sizeof(cpu_set_t), (ptr)) + +#define fio_cpu_clear(mask, cpu) pset_assign(*(mask), (cpu), PS_NONE) +#define fio_cpu_set(mask, cpu) pset_assign(*(mask), (cpu), PS_MYID) +#define fio_cpuset_init(td) pset_create(&(td)->o.cpumask) +#define fio_cpuset_exit(td) pset_destroy((td)->o.cpumask) + +/* + * Should be enough, not aware of what (if any) restrictions Solaris has + */ +#define FIO_MAX_CPUS 16384 + #endif |