From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8507 invoked by alias); 30 Oct 2013 02:08:12 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 31930 Received: (qmail 24286 invoked from network); 30 Oct 2013 02:08:07 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FROM_LOCAL_NOVOWEL autolearn=ham version=3.3.2 dkim-signature: v=1; a=rsa-sha256; d=bitmessage.ch; s=mail; c=relaxed/relaxed; q=dns/txt; h=From:Subject:Date:Message-ID:To:MIME-Version:Content-Type; bh=ShKmk3UypbFp1C5fXjAiMr4icXy98mAAV22DwcWVaZs=; b=pXpL4mNSoPNFAHgitprlQIlQNg4kxiNnu6N0sQIwCSpaiLS1lKlnogl9ep5FmS3kCknaXNHYqJriNvM1MzAhf237vTSkLalbhv4o08j/d13YSJYyOTbdjhSPSIA81n2xbpdi0kYcA1KDmLr0b2HdV5qxarEKW4Py+0nj8HlYvz0= From: Stefan Neudorf To: zsh-workers@zsh.org Subject: PATCH: add more ulimit extensions from BSDs Date: Wed, 30 Oct 2013 02:33:18 +0100 Message-ID: <20131030.86li1bwnj5@bitmessage.ch> MIME-Version: 1.0 Content-Type: text/plain On FreeBSD 10, ulimit -a shows at the end -N 11: unlimited -N 12: unlimited -N 13: unlimited while sh's ulimit -a describes them as pseudo-terminals (-p) unlimited swap limit (kbytes, -w) unlimited kqueues (-k) unlimited and DragonFly only has posixlocks (-k) unlimited --- Doc/Zsh/builtins.yo | 4 ++++ Src/Builtins/rlimits.awk | 4 ++++ Src/Builtins/rlimits.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 4 ++++ 4 files changed, 58 insertions(+) diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo index 6f33c02..54455a4 100644 --- a/Doc/Zsh/builtins.yo +++ b/Doc/Zsh/builtins.yo @@ -1013,6 +1013,10 @@ sitem(tt(sigpending))(Maximum number of pending signals.) sitem(tt(sockbufsize))(Maximum size of all socket buffers.) sitem(tt(stacksize))(Maximum stack size for each process.) sitem(tt(vmemorysize))(Maximum amount of virtual memory.) +sitem(tt(posixlocks))(Maximum number of POSIX locks per user.) +sitem(tt(pseudoterminals))(Maximum number of pseudo-terminals.) +sitem(tt(swapuse))(Maximum amount of swap used.) +sitem(tt(kqueues))(Maximum number of kqueues allocated.) endsitem() Which of these resource limits are available depends on the system. diff --git a/Src/Builtins/rlimits.awk b/Src/Builtins/rlimits.awk index bf91481..ccee49e 100644 --- a/Src/Builtins/rlimits.awk +++ b/Src/Builtins/rlimits.awk @@ -55,6 +55,10 @@ BEGIN {limidx = 0} if (limnam == "NICE") { msg[limnum] = "Nnice" } if (limnam == "RTPRIO") { msg[limnum] = "Nrt_priority" } if (limnam == "RTTIME") { msg[limnum] = "Urt_time" } + if (limnam == "POSIXLOCKS") { msg[limnum] = "Nposixlocks" } + if (limnam == "NPTS") { msg[limnum] = "Npseudoterminals" } + if (limnam == "SWAP") { msg[limnum] = "Mswapuse" } + if (limnam == "KQUEUES") { msg[limnum] = "Nkqueues" } } } } diff --git a/Src/Builtins/rlimits.c b/Src/Builtins/rlimits.c index eedfa96..3095109 100644 --- a/Src/Builtins/rlimits.c +++ b/Src/Builtins/rlimits.c @@ -386,6 +386,32 @@ printulimit(char *nam, int lim, int hard, int head) printf("-r: max rt priority "); break; # endif /* HAVE_RLIMIT_RTPRIO */ +# ifdef HAVE_RLIMIT_POSIXLOCKS + case RLIMIT_POSIXLOCKS: + if (head) + printf("-k: posixlocks "); + break; +# endif /* HAVE_RLIMIT_POSIXLOCKS */ +# ifdef HAVE_RLIMIT_NPTS + case RLIMIT_NPTS: + if (head) + printf("-p: pseudo-terminals "); + break; +# endif /* HAVE_RLIMIT_NPTS */ +# ifdef HAVE_RLIMIT_SWAP + case RLIMIT_SWAP: + if (head) + printf("-w: swap limit (kbytes) "); + if (limit != RLIM_INFINITY) + limit /= 1024; + break; +# endif /* HAVE_RLIMIT_SWAP */ +# ifdef HAVE_RLIMIT_KQUEUES + case RLIMIT_KQUEUES: + if (head) + printf("-k: kqueues "); + break; +# endif /* HAVE_RLIMIT_KQUEUES */ default: if (head) printf("-N %2d: ", lim); @@ -844,6 +870,26 @@ bin_ulimit(char *name, char **argv, UNUSED(Options ops), UNUSED(int func)) res = RLIMIT_RTPRIO; break; # endif +# ifdef HAVE_RLIMIT_POSIXLOCKS + case 'k': + res = RLIMIT_POSIXLOCKS; + break; +# endif +# ifdef HAVE_RLIMIT_NPTS + case 'p': + res = RLIMIT_NPTS; + break; +# endif +# ifdef HAVE_RLIMIT_SWAP + case 'w': + res = RLIMIT_SWAP; + break; +# endif +# ifdef HAVE_RLIMIT_KQUEUES + case 'k': + res = RLIMIT_KQUEUES; + break; +# endif default: /* unrecognised limit */ zwarnnam(name, "bad option: -%c", *options); diff --git a/configure.ac b/configure.ac index c3093f2..32872be 100644 --- a/configure.ac +++ b/configure.ac @@ -1812,6 +1812,10 @@ zsh_LIMIT_PRESENT(RLIMIT_SIGPENDING) zsh_LIMIT_PRESENT(RLIMIT_MSGQUEUE) zsh_LIMIT_PRESENT(RLIMIT_NICE) zsh_LIMIT_PRESENT(RLIMIT_RTPRIO) +zsh_LIMIT_PRESENT(RLIMIT_POSIXLOCKS) +zsh_LIMIT_PRESENT(RLIMIT_NPTS) +zsh_LIMIT_PRESENT(RLIMIT_SWAP) +zsh_LIMIT_PRESENT(RLIMIT_KQUEUES) AH_TEMPLATE([RLIMIT_VMEM_IS_RSS], [Define to 1 if RLIMIT_VMEM and RLIMIT_RSS both exist and are equal.])