X-Recipient: archive-cygwin@delorie.com
X-Original-To: cygwin@cygwin.com
Delivered-To: cygwin@cygwin.com
DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D6D9B385782C
Authentication-Results: sourceware.org; dmarc=none (p=none dis=none)
 header.from=SystematicSw.ab.ca
Authentication-Results: sourceware.org;
 spf=none smtp.mailfrom=brian.inglis@systematicsw.ab.ca
X-Authority-Analysis: v=2.4 cv=MaypB7zf c=1 sm=1 tr=0 ts=6026e732
 a=kiZT5GMN3KAWqtYcXc+/4Q==:117 a=kiZT5GMN3KAWqtYcXc+/4Q==:17
 a=IkcTkHD0fZMA:10 a=w_pzkKWiAAAA:8 a=TImcKGuyeGIbufSLrCcA:9
 a=4tABBRuJ_y_cLOoZ:21 a=T9p4gbe6gTlOyhcu:21 a=QEXdDO2ut3YA:10
 a=7yBdC4_TQmUA:10 a=sRI3_1zDfAgwuvI8zelB:22
Subject: Re: setrlimit always fails
To: cygwin@cygwin.com
References: <b0924bcb-56d0-a026-84b5-71750537facb@fexl.com>
 <1c233bc7-401b-568f-36d5-48c4f1d4dcea@cornell.edu>
 <42b30732-9aee-454e-3359-92a82ef09f0d@SystematicSw.ab.ca>
 <20210212091233.GG4251@calimero.vinschen.de>
 <5dc9c6fa-dee6-94a1-e3ee-e73eb6096047@SystematicSw.ab.ca>
From: Brian Inglis <Brian.Inglis@SystematicSw.ab.ca>
Organization: Systematic Software
Message-ID: <0e457768-ffde-c735-fd3a-63d69cb6c16a@SystematicSw.ab.ca>
Date: Fri, 12 Feb 2021 13:38:08 -0700
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
 Thunderbird/78.7.1
MIME-Version: 1.0
In-Reply-To: <5dc9c6fa-dee6-94a1-e3ee-e73eb6096047@SystematicSw.ab.ca>
Content-Language: en-CA
X-CMAE-Envelope: MS4xfFtBTjOuiUsBdTYp3Bsg48FW2tp5A3bVF/ArqZrewHIwJ3QhY/vm2MNAuZ8z17avWj4fI+1H1nDs2Pm0x4OQNldIs14Rm6sHztmOWmGGQ1aOSr7joztK
 VB8DSYM7JieUif7OiIi7zsuADhHycqSl44ocPbz2Gzg0nDT+Rnt4YiukxkJHSgpCXBDF9C376o3pJaQCSpWbgW6QKiF4hsMUlD4=
X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, BODY_8BITS,
 KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_DNSWL_LOW,
 RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE,
 TXREP autolearn=no autolearn_force=no version=3.4.2
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
 server2.sourceware.org
X-BeenThere: cygwin@cygwin.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
 <mailto:cygwin-request@cygwin.com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-request@cygwin.com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
 <mailto:cygwin-request@cygwin.com?subject=subscribe>
Reply-To: cygwin@cygwin.com
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: cygwin-bounces@cygwin.com
Sender: "Cygwin" <cygwin-bounces@cygwin.com>
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 11CKcgMl003942

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.]
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

