aboutsummaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-08-28 22:48:23 +0000
committerCorinna Vinschen <corinna@vinschen.de>2001-08-28 22:48:23 +0000
commite4a17c6d11f4ea7cafe5c29daca3219d874d1f61 (patch)
tree683c08aaaf55dc6652cb04e0898f6d8c846487fa /winsup
parenta06a7fb451d268407656b22f5259a99069c53d40 (diff)
downloadnewlib-e4a17c6d11f4ea7cafe5c29daca3219d874d1f61.zip
newlib-e4a17c6d11f4ea7cafe5c29daca3219d874d1f61.tar.gz
newlib-e4a17c6d11f4ea7cafe5c29daca3219d874d1f61.tar.bz2
* resource.cc (getrlimit): Return actual values on RLIMIT_STACK.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/resource.cc11
2 files changed, 15 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 793476a..5f98dc1 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+Wed Aug 29 0:45:00 2001 Corinna Vinschen <corinna@vinschen.de>
+
+ * resource.cc (getrlimit): Return actual values on RLIMIT_STACK.
+
Tue Aug 28 16:37:17 2001 Christopher Faylor <cgf@cygnus.com>
* 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 84ab9fe..6361c4f 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 ();