* cygheap.h (struct init_cygheap): Add rlim_core member.

* cygheap.cc (cygheap_init): Initialize rlim_core to RLIM_INFINITY.
	* exceptions.cc (stackdump): Drop extern declaration of rlim_core.
	Refer to cygheap->rlim_core instead.
	(exception::handle): Disable stackdumping if cygheap->rlim_core is 0.
	Don't set WCOREDUMP flag in exit code, if cygheap->rlim_core is 0.
	(sigpacket::process): Ditto.
	* resource.cc (rlim_core): Remove.
	(getrlimit): Fetch RLIMIT_CORE value from cygheap->rlim_core.
	(setrlimit): Store RLIMIT_CORE value in cygheap->rlim_core.
This commit is contained in:
Corinna Vinschen
2010-04-20 10:44:52 +00:00
parent 2ac91a1483
commit 9e40fe8112
5 changed files with 34 additions and 14 deletions

View File

@@ -1,6 +1,6 @@
/* resource.cc: getrusage () and friends.
Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2009 Red Hat, Inc.
Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2009, 2010 Red Hat, Inc.
Written by Steve Chamberlain (sac@cygnus.com), Doug Evans (dje@cygnus.com),
Geoffrey Noer (noer@cygnus.com) of Cygnus Support.
@@ -21,6 +21,7 @@ details. */
#include "fhandler.h"
#include "pinfo.h"
#include "dtable.h"
#include "cygheap.h"
/* add timeval values */
static void
@@ -109,8 +110,6 @@ getrusage (int intwho, struct rusage *rusage_in)
return res;
}
unsigned long rlim_core = RLIM_INFINITY;
extern "C" int
getrlimit (int resource, struct rlimit *rlp)
{
@@ -146,7 +145,7 @@ getrlimit (int resource, struct rlimit *rlp)
rlp->rlim_max = OPEN_MAX_MAX;
break;
case RLIMIT_CORE:
rlp->rlim_cur = rlim_core;
rlp->rlim_cur = cygheap->rlim_core;
break;
case RLIMIT_AS:
rlp->rlim_cur = 0x80000000UL;
@@ -182,7 +181,7 @@ setrlimit (int resource, const struct rlimit *rlp)
switch (resource)
{
case RLIMIT_CORE:
rlim_core = rlp->rlim_cur;
cygheap->rlim_core = rlp->rlim_cur;
break;
case RLIMIT_NOFILE:
if (rlp->rlim_cur != RLIM_INFINITY)