From e4a17c6d11f4ea7cafe5c29daca3219d874d1f61 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 28 Aug 2001 22:48:23 +0000 Subject: [PATCH] * resource.cc (getrlimit): Return actual values on RLIMIT_STACK. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/resource.cc | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 793476af9..5f98dc1c1 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +Wed Aug 29 0:45:00 2001 Corinna Vinschen + + * resource.cc (getrlimit): Return actual values on RLIMIT_STACK. + Tue Aug 28 16:37:17 2001 Christopher Faylor * dir.cc (rmdir): Report ENOENT when file doesn't exist rather than diff --git a/winsup/cygwin/resource.cc b/winsup/cygwin/resource.cc index 84ab9feaa..6361c4fd1 100644 --- a/winsup/cygwin/resource.cc +++ b/winsup/cygwin/resource.cc @@ -106,6 +106,8 @@ extern "C" int getrlimit (int resource, struct rlimit *rlp) { + MEMORY_BASIC_INFORMATION m; + if (check_null_invalid_struct_errno (rlp)) return -1; @@ -117,7 +119,16 @@ getrlimit (int resource, struct rlimit *rlp) case RLIMIT_CPU: case RLIMIT_FSIZE: case RLIMIT_DATA: + break; case RLIMIT_STACK: + if (!VirtualQuery ((LPCVOID) &m, &m, sizeof m)) + debug_printf ("couldn't get stack info, returning def.values. %E"); + else + { + rlp->rlim_cur = (DWORD) &m - (DWORD) m.AllocationBase; + rlp->rlim_max = (DWORD) m.BaseAddress + m.RegionSize + - (DWORD) m.AllocationBase; + } break; case RLIMIT_NOFILE: rlp->rlim_cur = getdtablesize ();