mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-19 21:09:22 +08:00
* cygwin.din: Add symbols for getrlimit' and
setrlimit'.
* exceptions.cc (stackdump): Avoid creating stackdump when `rlim_core' is 0. * resource.cc: New global variable `rlim_core'. (getrlimit): New function. (setrlimit): Ditto. include/cygwin/version.h: Bump minor API version to 32 due to adding `getrlimit' and `setrlimit'. include/sys/resource.h: Add defines, types and prototypes for `getrlimit' and `setrlimit'.
This commit is contained in:
parent
2803e941b3
commit
8a93913d26
@ -1,3 +1,16 @@
|
|||||||
|
Tue Dec 27 1:08:00 2000 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* cygwin.din: Add symbols for `getrlimit' and `setrlimit'.
|
||||||
|
* exceptions.cc (stackdump): Avoid creating stackdump when
|
||||||
|
`rlim_core' is 0.
|
||||||
|
* resource.cc: New global variable `rlim_core'.
|
||||||
|
(getrlimit): New function.
|
||||||
|
(setrlimit): Ditto.
|
||||||
|
include/cygwin/version.h: Bump minor API version to 32 due to
|
||||||
|
adding `getrlimit' and `setrlimit'.
|
||||||
|
include/sys/resource.h: Add defines, types and prototypes for
|
||||||
|
`getrlimit' and `setrlimit'.
|
||||||
|
|
||||||
Mon Dec 25 22:18:42 2000 Christopher Faylor <cgf@cygnus.com>
|
Mon Dec 25 22:18:42 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
* autoload.h: Make DLL initializers global to avoid inlining.
|
* autoload.h: Make DLL initializers global to avoid inlining.
|
||||||
|
@ -347,6 +347,8 @@ getpid
|
|||||||
_getpid = getpid
|
_getpid = getpid
|
||||||
getppid
|
getppid
|
||||||
_getppid = getppid
|
_getppid = getppid
|
||||||
|
getrlimit
|
||||||
|
_getrlimit = getrlimit
|
||||||
getrusage
|
getrusage
|
||||||
_getrusage = getrusage
|
_getrusage = getrusage
|
||||||
gets
|
gets
|
||||||
@ -622,6 +624,8 @@ setlocale
|
|||||||
_setlocale = setlocale
|
_setlocale = setlocale
|
||||||
setpgid
|
setpgid
|
||||||
_setpgid = setpgid
|
_setpgid = setpgid
|
||||||
|
setrlimit
|
||||||
|
_setrlimit = setrlimit
|
||||||
setsid
|
setsid
|
||||||
_setsid = setsid
|
_setsid = setsid
|
||||||
settimeofday
|
settimeofday
|
||||||
|
@ -381,7 +381,12 @@ try_to_debug ()
|
|||||||
static void
|
static void
|
||||||
stackdump (EXCEPTION_RECORD *e, CONTEXT *in)
|
stackdump (EXCEPTION_RECORD *e, CONTEXT *in)
|
||||||
{
|
{
|
||||||
|
extern unsigned long rlim_core;
|
||||||
const char *p;
|
const char *p;
|
||||||
|
|
||||||
|
if (rlim_core == 0UL)
|
||||||
|
return;
|
||||||
|
|
||||||
if (myself->progname[0])
|
if (myself->progname[0])
|
||||||
{
|
{
|
||||||
/* write to progname.stackdump if possible */
|
/* write to progname.stackdump if possible */
|
||||||
|
@ -122,10 +122,11 @@ details. */
|
|||||||
29: Export hstrerror
|
29: Export hstrerror
|
||||||
30: CW_GET_CYGDRIVE_INFO addition to external.cc
|
30: CW_GET_CYGDRIVE_INFO addition to external.cc
|
||||||
31: Export inet_aton
|
31: Export inet_aton
|
||||||
|
32: Export getrlimit/setrlimit
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CYGWIN_VERSION_API_MAJOR 0
|
#define CYGWIN_VERSION_API_MAJOR 0
|
||||||
#define CYGWIN_VERSION_API_MINOR 31
|
#define CYGWIN_VERSION_API_MINOR 32
|
||||||
|
|
||||||
/* There is also a compatibity version number associated with the
|
/* There is also a compatibity version number associated with the
|
||||||
shared memory regions. It is incremented when incompatible
|
shared memory regions. It is incremented when incompatible
|
||||||
|
@ -7,6 +7,26 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define RLIMIT_CPU 0 /* CPU time in seconds */
|
||||||
|
#define RLIMIT_FSIZE 1 /* Maximum filesize */
|
||||||
|
#define RLIMIT_DATA 2 /* max data size */
|
||||||
|
#define RLIMIT_STACK 3 /* max stack size */
|
||||||
|
#define RLIMIT_CORE 4 /* max core file size */
|
||||||
|
#define RLIMIT_NOFILE 5 /* max number of open files */
|
||||||
|
#define RLIMIT_OFILE RLIMIT_NOFILE /* BSD name */
|
||||||
|
#define RLIMIT_AS 6 /* address space (virt. memory) limit */
|
||||||
|
|
||||||
|
#define RLIM_INFINITY (0xffffffffUL)
|
||||||
|
#define RLIM_SAVED_MAX RLIM_INFINITY
|
||||||
|
#define RLIM_SAVED_CUR RLIM_INFINITY
|
||||||
|
|
||||||
|
typedef unsigned long rlim_t;
|
||||||
|
|
||||||
|
struct rlimit {
|
||||||
|
rlim_t rlim_cur;
|
||||||
|
rlim_t rlim_max;
|
||||||
|
};
|
||||||
|
|
||||||
#define RUSAGE_SELF 0 /* calling process */
|
#define RUSAGE_SELF 0 /* calling process */
|
||||||
#define RUSAGE_CHILDREN -1 /* terminated child processes */
|
#define RUSAGE_CHILDREN -1 /* terminated child processes */
|
||||||
|
|
||||||
@ -30,6 +50,9 @@ struct rusage {
|
|||||||
#define ru_last ru_nivcsw
|
#define ru_last ru_nivcsw
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int getrlimit (int __resource, struct rlimit *__rlp);
|
||||||
|
int setrlimit (int __resource, const struct rlimit *__rlp);
|
||||||
|
|
||||||
int getrusage (int __who, struct rusage *__rusage);
|
int getrusage (int __who, struct rusage *__rusage);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -97,3 +97,58 @@ getrusage (int intwho, struct rusage *rusage_in)
|
|||||||
syscall_printf ("%d = getrusage (%d, %p)", res, intwho, rusage_in);
|
syscall_printf ("%d = getrusage (%d, %p)", res, intwho, rusage_in);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long rlim_core = RLIM_INFINITY;
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
int
|
||||||
|
getrlimit (int resource, struct rlimit *rlp)
|
||||||
|
{
|
||||||
|
MEMORY_BASIC_INFORMATION m;
|
||||||
|
if (!rlp || !VirtualQuery (rlp, &m, sizeof (m)) || (m.State != MEM_COMMIT))
|
||||||
|
return EFAULT;
|
||||||
|
|
||||||
|
rlp->rlim_cur = RLIM_INFINITY;
|
||||||
|
rlp->rlim_max = RLIM_INFINITY;
|
||||||
|
|
||||||
|
switch (resource)
|
||||||
|
{
|
||||||
|
case RLIMIT_CPU:
|
||||||
|
case RLIMIT_FSIZE:
|
||||||
|
case RLIMIT_DATA:
|
||||||
|
case RLIMIT_STACK:
|
||||||
|
case RLIMIT_NOFILE:
|
||||||
|
break;
|
||||||
|
case RLIMIT_CORE:
|
||||||
|
rlp->rlim_cur = rlim_core;
|
||||||
|
break;
|
||||||
|
case RLIMIT_AS:
|
||||||
|
rlp->rlim_cur = 0x80000000UL;
|
||||||
|
rlp->rlim_max = 0x80000000UL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
set_errno (EINVAL);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
int
|
||||||
|
setrlimit (int resource, const struct rlimit *rlp)
|
||||||
|
{
|
||||||
|
MEMORY_BASIC_INFORMATION m;
|
||||||
|
if (!rlp || !VirtualQuery (rlp, &m, sizeof (m)) || (m.State != MEM_COMMIT))
|
||||||
|
return EFAULT;
|
||||||
|
|
||||||
|
switch (resource)
|
||||||
|
{
|
||||||
|
case RLIMIT_CORE:
|
||||||
|
rlim_core = rlp->rlim_cur;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
set_errno (EINVAL);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user