From 1a7412a2768093f7672f669c354f987b35c44390 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 5 Jun 2018 01:39:41 -0700 Subject: [PATCH] FIO: Make shmem behaviors reflect 3.10 Current functionality works to some extent on Windows and x86 Linux and OS X --- sim_fio.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/sim_fio.c b/sim_fio.c index 894f5e17..f1222a1b 100644 --- a/sim_fio.c +++ b/sim_fio.c @@ -547,6 +547,7 @@ if ((stbuf.st_mode & S_IFIFO)) { return -1; } +#if defined (__linux__) || defined (__APPLE__) #include struct SHMEM { @@ -616,15 +617,50 @@ free (shmem); int32 sim_shmem_atomic_add (int32 *p, int32 v) { +#if defined (HAVE_GCC_SYNC_BUILTINS) return __sync_add_and_fetch((int *) p, v); +#else +return *p + v; +#endif } t_bool sim_shmem_atomic_cas (int32 *ptr, int32 oldv, int32 newv) { +#if defined (HAVE_GCC_SYNC_BUILTINS) return __sync_bool_compare_and_swap (ptr, oldv, newv); +#else +if (*ptr == oldv) { + *ptr = newv; + return 1; + } +else + return 0; +#endif } -#endif +#else /* !(defined (__linux__) || defined (__APPLE__)) */ + +t_stat sim_shmem_open (const char *name, size_t size, SHMEM **shmem, void **addr) +{ +return SCPE_NOFNC; +} + +void sim_shmem_close (SHMEM *shmem) +{ +} + +int32 sim_shmem_atomic_add (int32 *p, int32 v) +{ +return -1; +} + +t_bool sim_shmem_atomic_cas (int32 *ptr, int32 oldv, int32 newv) +{ +return FALSE; +} + +#endif /* defined (__linux__) || defined (__APPLE__) */ +#endif /* defined (_WIN32) */ #if defined(__VAX) /*