diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | eio.c | 25 |
2 files changed, 16 insertions, 10 deletions
@@ -30,4 +30,5 @@ TODO: openbsd requites stdint.h for intptr_t - why posix? - "fix" demo.c so that it works as non-root. - suppoert utimes seperately from futimes, as some systems have utimes but not futimes. + - use _POSIX_MEMLOCK_RANGE for mlock. @@ -81,7 +81,7 @@ # include <signal.h> # include <dirent.h> -#if _POSIX_MEMLOCK || _POSIX_MAPPED_FILES +#if _POSIX_MEMLOCK || _POSIX_MEMLOCK_RANGE || _POSIX_MAPPED_FILES # include <sys/mman.h> #endif @@ -1433,19 +1433,10 @@ eio_page_align (void **addr, size_t *length) } #if !_POSIX_MEMLOCK -# define eio__mlock(a,b) ((errno = ENOSYS), -1) # define eio__mlockall(a) ((errno = ENOSYS), -1) #else static int -eio__mlock (void *addr, size_t length) -{ - eio_page_align (&addr, &length); - - return mlock (addr, length); -} - -static int eio__mlockall (int flags) { #if __GLIBC__ == 2 && __GLIBC_MINOR__ <= 7 @@ -1465,6 +1456,20 @@ eio__mlockall (int flags) } #endif +#if !_POSIX_MEMLOCK_RANGE +# define eio__mlock(a,b) ((errno = ENOSYS), -1) +#else + +static int +eio__mlock (void *addr, size_t length) +{ + eio_page_align (&addr, &length); + + return mlock (addr, length); +} + +#endif + #if !(_POSIX_MAPPED_FILES && _POSIX_SYNCHRONIZED_IO) # define eio__msync(a,b,c) ((errno = ENOSYS), -1) #else |