--- IO-AIO/AIO.xs 2010/12/02 10:04:47 1.176 +++ IO-AIO/AIO.xs 2011/01/07 21:47:15 1.179 @@ -18,7 +18,7 @@ #include #include -#if _POSIX_MEMLOCK || _POSIX_MAPPED_FILES +#if _POSIX_MEMLOCK || _POSIX_MEMLOCK_RANGE || _POSIX_MAPPED_FILES # include #endif @@ -355,6 +355,7 @@ { sv_result = sv_result_cache; sv_result_cache = 0; SvIV_set (sv_result, req->result); + SvIOK_only (sv_result); } else { @@ -528,7 +529,7 @@ } break; - case EIO_DUP2: /* EIO_DUP2 actually means aio_close(), su fudge result value */ + case EIO_DUP2: /* EIO_DUP2 actually means aio_close(), so fudge result value */ if (req->result > 0) SvIV_set (sv_result, 0); /* FALLTHROUGH */ @@ -638,6 +639,9 @@ #if !_POSIX_MAPPED_FILES # define mmap(addr,length,prot,flags,fd,offs) (errno = ENOSYS, -1) # define munmap(addr,length) (errno = ENOSYS, -1) +#endif + +#if !_POSIX_MEMORY_PROTECTION # define mprotect(addr,len,prot) (errno = ENOSYS, -1) # define PROT_NONE 0 # define PROT_WRITE 0 @@ -1525,7 +1529,7 @@ addr = (void *)(((intptr_t)addr) + offset); eio_page_align (&addr, &len); -#if _POSIX_MEMLOCK +#if _POSIX_MEMLOCK_RANGE RETVAL = munlock (addr, len); #else RETVAL = ((errno = ENOSYS), -1);