X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=os%2Fos-linux.h;h=e4c4c3fd2f094eceaad485f1d53b2d35def66367;hb=23d2461974c334d77eb7a06a2dbd1f37aeee85d4;hp=4460653fae44d0e8182239ac69105dbda2dd49c2;hpb=3c2d93ede7d03b3a6923edb55c7737fe014794cb;p=fio.git diff --git a/os/os-linux.h b/os/os-linux.h index 4460653f..e4c4c3fd 100644 --- a/os/os-linux.h +++ b/os/os-linux.h @@ -30,6 +30,7 @@ #define FIO_HAVE_FALLOCATE #define FIO_HAVE_POSIXAIO_FSYNC #define FIO_HAVE_PSHARED_MUTEX +#define FIO_HAVE_CL_SIZE #define OS_MAP_ANON MAP_ANONYMOUS @@ -54,13 +55,13 @@ typedef struct drand48_data os_random_state_t; * the affinity helpers to work. */ #ifndef GLIBC_2_3_2 -#define fio_setaffinity(td) \ - sched_setaffinity((td)->pid, sizeof((td)->o.cpumask), &(td)->o.cpumask) +#define fio_setaffinity(pid, cpumask) \ + sched_setaffinity((pid), sizeof(cpumask), &(cpumask)) #define fio_getaffinity(pid, ptr) \ sched_getaffinity((pid), sizeof(cpu_set_t), (ptr)) #else -#define fio_setaffinity(td) \ - sched_setaffinity((td)->pid, &(td)->o.cpumask) +#define fio_setaffinity(pid, cpumask) \ + sched_setaffinity((pid), &(cpumask)) #define fio_getaffinity(pid, ptr) \ sched_getaffinity((pid), (ptr)) #endif @@ -249,4 +250,30 @@ static inline int fio_lookup_raw(dev_t dev, int *majdev, int *mindev) #define FIO_O_NOATIME 0 #endif +#ifdef MADV_REMOVE +#define FIO_MADV_FREE MADV_REMOVE +#endif + +#define CACHE_LINE_FILE \ + "/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size" + +static inline int arch_cache_line_size(void) +{ + char size[32]; + int fd, ret; + + fd = open(CACHE_LINE_FILE, O_RDONLY); + if (fd < 0) + return -1; + + ret = read(fd, size, sizeof(size)); + + close(fd); + + if (ret <= 0) + return -1; + else + return atoi(size); +} + #endif