From 790a4fee2b498a80b43605d64f4c81f01501b727 Mon Sep 17 00:00:00 2001 From: Stefan Neudorf Date: Wed, 30 Oct 2013 02:33:18 +0100 Subject: 31930 / 31934: New limits from BSD. Avoid clash of uses for ulimit -k. --- ChangeLog | 7 +++++++ Doc/Zsh/builtins.yo | 11 ++++++++++- Src/Builtins/rlimits.awk | 4 ++++ Src/Builtins/rlimits.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 4 ++++ 5 files changed, 71 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5f0795509..198147ed4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-10-31 Peter Stephenson + + * Stefan Neudorf: 31930 / 31934: Doc/Zsh/builtins.yo, + Src/Builtins/rlimits.awk, Src/Builtins/rlimits.c, configure.ac, + Src/Builtins/rlimits.c: New BSD limits; avoid clash with + ulimit -k. + 2013-10-29 Barton E. Schaefer * 31929: Src/jobs.c: fix DPUTS3() test condition from 31906. diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo index 6f33c02f3..f33685b66 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. @@ -1893,7 +1897,7 @@ enditem() findex(ulimit) cindex(resource limits) cindex(limits, resource) -item(tt(ulimit) [ [ tt(-SHacdfilmnpqrstvx) | tt(-N) var(resource) [ var(limit) ] ... ])( +item(tt(ulimit) [ [ tt(-SHacdfikKlmnpqrstvwx) | tt(-N) var(resource) [ var(limit) ] ... ])( Set or display resource limits of the shell and the processes started by the shell. The value of var(limit) can be a number in the unit specified below or one of the values `tt(unlimited)', which removes the limit on the @@ -1924,9 +1928,13 @@ sitem(tt(-c))(512-byte blocks on the size of core dumps.) sitem(tt(-d))(Kilobytes on the size of the data segment.) sitem(tt(-f))(512-byte blocks on the size of files written.) sitem(tt(-i))(The number of pending signals.) +sitem(tt(-k))(Maximum number of kqueues allocated.) +sitem(tt(-K))(Maximum number of POSIX locks per user. Note this is +tt(-k) in some other shells.) sitem(tt(-l))(Kilobytes on the size of locked-in memory.) sitem(tt(-m))(Kilobytes on the size of physical memory.) sitem(tt(-n))(open file descriptors.) +sitem(tt(-p))(Maximum number of pseudo-terminals.) sitem(tt(-q))(Bytes in POSIX message queues.) sitem(tt(-s))(Kilobytes on the size of the stack.) sitem(tt(-t))(CPU seconds to be used.) @@ -1934,6 +1942,7 @@ sitem(tt(-r))(The number of simultaneous threads available to the user.) sitem(tt(-u))(The number of processes available to the user.) sitem(tt(-v))(Kilobytes on the size of virtual memory. On some systems this refers to the limit called `address space'.) +sitem(tt(-w))(Maximum amount of swap memory.) sitem(tt(-x))(The number of locks on files.) endsitem() diff --git a/Src/Builtins/rlimits.awk b/Src/Builtins/rlimits.awk index bf914814d..ccee49e87 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 eedfa969c..a0f294876 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); @@ -843,6 +869,26 @@ bin_ulimit(char *name, char **argv, UNUSED(Options ops), UNUSED(int func)) case 'r': 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 */ diff --git a/configure.ac b/configure.ac index c3093f20d..32872be5c 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.]) -- cgit 1.4.1