From 2759b7c8dda77641fe271102a26ad7a02419ad62 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sun, 16 Sep 2018 11:07:14 -0700 Subject: [PATCH] Add Musl support The *48_r functions are glibc extensions that also happen to be supported by uclibc as well. Adapted from the Android solution. __USE_FILE_OFFSET64 is glibc specific so use LARGEFILE_SOURCE. Signed-off-by: Rosen Penev --- os/os-linux.h | 17 +++++++++++++++++ oslib/libmtd_common.h | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/os/os-linux.h b/os/os-linux.h index 6b63d123..e06aadae 100644 --- a/os/os-linux.h +++ b/os/os-linux.h @@ -60,7 +60,11 @@ typedef cpu_set_t os_cpu_mask_t; +#if defined(__GLIBC__) || defined(__UCLIBC__) typedef struct drand48_data os_random_state_t; +#else +typedef struct { unsigned short r[3]; } os_random_state_t; +#endif #ifdef CONFIG_3ARG_AFFINITY #define fio_setaffinity(pid, cpumask) \ @@ -172,14 +176,27 @@ static inline unsigned long long os_phys_mem(void) static inline void os_random_seed(unsigned long seed, os_random_state_t *rs) { +#if defined(__GLIBC__) || defined (__UCLIBC__) srand48_r(seed, rs); +#else + rs->r[0] = seed & 0xffff; + seed >>= 16; + rs->r[1] = seed & 0xffff; + seed >>= 16; + rs->r[2] = seed & 0xffff; + seed48(rs->r); +#endif } static inline long os_random_long(os_random_state_t *rs) { long val; +#if defined(__GLIBC__) || (__UCLIBC__) lrand48_r(rs, &val); +#else + val = nrand48(rs->r); +#endif return val; } diff --git a/oslib/libmtd_common.h b/oslib/libmtd_common.h index 4ed9f0ba..c5cfd217 100644 --- a/oslib/libmtd_common.h +++ b/oslib/libmtd_common.h @@ -69,7 +69,7 @@ extern "C" { #endif /* define a print format specifier for off_t */ -#ifdef __USE_FILE_OFFSET64 +#ifdef _LARGEFILE_SOURCE #define PRIxoff_t PRIx64 #define PRIdoff_t PRId64 #else -- 2.19.1