From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out-so.shaw.ca (smtp-out-so.shaw.ca [64.59.136.137]) by sourceware.org (Postfix) with ESMTPS id D6D9B385782C for ; Fri, 12 Feb 2021 20:38:10 +0000 (GMT) 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 Received: from [192.168.1.104] ([24.64.172.44]) by shaw.ca with ESMTP id AfCalWb3gHmS3AfCblChyF; Fri, 12 Feb 2021 13:38:10 -0700 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 Reply-To: cygwin@cygwin.com Subject: Re: setrlimit always fails To: cygwin@cygwin.com References: <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 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-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-CA Content-Transfer-Encoding: 8bit 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Feb 2021 20:38:12 -0000 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 is supported within > ? 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.]