setrlimit always fails
Brian Inglis
Brian.Inglis@SystematicSw.ab.ca
Fri Feb 12 20:38:08 GMT 2021
On 2021-02-12 11:56, Brian Inglis wrote:
> On 2021-02-12 02:12, Corinna Vinschen via Cygwin wrote:
>> On Feb 12 00:26, Brian Inglis wrote:
>>> On 2021-02-11 19:06, Ken Brown via Cygwin wrote:
>>>> On 2/11/2021 10:23 AM, Patrick Chkoreff wrote:
>>>>> I'm trying to use setrlimit to impose limits on various resources such
>>>>> as CPU time and memory. The call to setrlimit always fails. I've
>>>>> distilled this into the following example test.c:
>>>>> if (setrlimit(RLIMIT_CPU,&rlim) < 0)
>>>>> setrlimit: Invalid argument
>>>> Cygwin's setrlimit only supports a few resources, as you can see in the source:
>>>> https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/resource.cc;h=97777e9d223466b7635b990d6c9e0bfb9e2e9a46;hb=HEAD#l201
>>> In that case could I suggest:
>>> /usr/share/doc/cygwin-doc/html/cygwin-api/compatibility.html#std-susv4
>>> https://cygwin.com/cygwin-api/compatibility.html#std-susv4
>>> in https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/doc/posix.xml
>>> get/setrlimit entries should be annotated with:
>> https://cygwin.com/acronyms/#PGA
> I'll see what I can do. Does anyone know if <ulink> is supported within
> <screen>? I seem to remember struggles updating proc(5) in specialnames.xml.
> It appears that code using other than the common POSIX resources need existence
> checks.
> I am unsure if it is worth adding definitions for any others.
> It may be possible to implement RSS, NPROC, LOCKS, NICE, but
https://cygwin.com/acronyms/#SHTDI
>
> Comparing Cygwin and Linux ([uapi/]asm-generic/}:
>
> #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 */
> #ifdef LINUX
> #define RLIMIT_RSS 5 /* max resident set size */
> #define RLIMIT_NPROC 6 /* max number of processes */
> #define RLIMIT_NOFILE 7 /* max number of open files */
#define RLIMIT_MEMLOCK 8 /* max locked-in-memory address space */
> #define RLIMIT_AS 9 /* address space limit */
> #else
> #define RLIMIT_NOFILE 5 /* max number of open files */
> #define RLIMIT_OFILE RLIMIT_NOFILE /* BSD name */
> #define RLIMIT_AS 6 /* address space limit */
> #endif
> #ifdef LINUX
> #define RLIMIT_LOCKS 10 /* maximum file locks held */
> #define RLIMIT_SIGPENDING 11 /* max number of pending signals */
> #define RLIMIT_MSGQUEUE 12 /* maximum bytes in POSIX mqueues */
> #define RLIMIT_NICE 13 /* max nice prio allowed to raise to */
> #define RLIMIT_RTPRIO 14 /* maximum realtime priority */
> #define RLIMIT_RTTIME 15 /* timeout for RT tasks in us */
> #define RLIM_NLIMITS 16
> #else
> #define RLIMIT_NLIMITS 7 /* upper bound of RLIMIT_* defines */
> #endif
>
> Linux man says:
>
> "RLIMIT_MEMLOCK and RLIMIT_NPROC derive from BSD and are not specified in
> POSIX.1; they are present on the BSDs and Linux, but on few other implementations.
> RLIMIT_RSS derives from BSD and is not specified in POSIX.1; it is nevertheless
> present on most implementations.
> RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME, and
> RLIMIT_SIGPENDING are Linux-specific."
--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]
More information about the Cygwin
mailing list