diff options
author | Christopher Faylor <me@cgf.cx> | 2011-12-04 03:55:21 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2011-12-04 03:55:21 +0400 |
commit | 69864e48cb0ef1efd1ac29a80b34bbc9c604533b (patch) | |
tree | 87b2250459f355787a02bdb49b3db3f8e0dcd09b /winsup/cygwin/mmap.cc | |
parent | 645575574342c4f50a6d9ea68306278c11e114c6 (diff) |
* mmap.cc (mlock): Add standard syscall return value debugging output.
(munlock): Ditto.
(posix_madvise): Ditto.
* signal.cc: Remove obsolete sigcatchers stuff throughout.
(sigaction_worker): Add function name parameter and use it to show standard
syscall return value debugging output. Also add fault protection.
(sigaction): Accommodate extra argument to sigaction_worker.
(siginterrupt): Ditto.
* syscalls.cc (read): Remove obsolete sigcatchers stuff.
(readv): Ditto.
Diffstat (limited to 'winsup/cygwin/mmap.cc')
-rw-r--r-- | winsup/cygwin/mmap.cc | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc index 97f0dad6f..2bd72610f 100644 --- a/winsup/cygwin/mmap.cc +++ b/winsup/cygwin/mmap.cc @@ -1394,6 +1394,7 @@ mlock (const void *addr, size_t len) } while (status == STATUS_WORKING_SET_QUOTA); + syscall_printf ("%R = mlock(%p, %u)", ret, addr, len); return ret; } @@ -1413,28 +1414,37 @@ munlock (const void *addr, size_t len) else ret = 0; + syscall_printf ("%R = munlock(%p, %u)", ret, addr, len); return ret; } extern "C" int posix_madvise (void *addr, size_t len, int advice) { + int ret; /* Check parameters. */ if (advice < POSIX_MADV_NORMAL || advice > POSIX_MADV_DONTNEED || !len) - return EINVAL; - - /* Check requested memory area. */ - MEMORY_BASIC_INFORMATION m; - char *p = (char *) addr; - char *endp = p + len; - while (p < endp) + ret = EINVAL; + else { - if (!VirtualQuery (p, &m, sizeof m) || m.State == MEM_FREE) - return ENOMEM; - p = (char *) m.BaseAddress + m.RegionSize; + /* Check requested memory area. */ + MEMORY_BASIC_INFORMATION m; + char *p = (char *) addr; + char *endp = p + len; + while (p < endp) + { + if (!VirtualQuery (p, &m, sizeof m) || m.State == MEM_FREE) + { + ret = ENOMEM; + break; + } + p = (char *) m.BaseAddress + m.RegionSize; + } + ret = 0; } + syscall_printf ("%d = posix_madvise(%p, %u, %d)", ret, addr, len, advice); /* Eventually do nothing. */ return 0; } |