summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--Doc/Zsh/builtins.yo11
-rw-r--r--Src/Builtins/rlimits.awk4
-rw-r--r--Src/Builtins/rlimits.c46
-rw-r--r--configure.ac4
5 files changed, 71 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f0795509..198147ed4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-10-31 Peter Stephenson <p.w.stephenson@ntlworld.com>
+
+ * 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 <schaefer@zsh.org>
* 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);
@@ -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 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.])