svn commit: r296723 - in head: bin/sh etc lib/libutil usr.bin/limits
Konstantin Belousov
kib at FreeBSD.org
Sat Mar 12 14:54:37 UTC 2016
Author: kib
Date: Sat Mar 12 14:54:34 2016
New Revision: 296723
URL: https://svnweb.freebsd.org/changeset/base/296723
Log:
Fix handling of umtxp resource limit in sh(1)/ulimit(1), limits(1), add
login.conf(5) support.
Reviewed by: jilles
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D5610
Modified:
head/bin/sh/miscbltin.c
head/bin/sh/sh.1
head/etc/login.conf
head/lib/libutil/login.conf.5
head/lib/libutil/login_class.3
head/lib/libutil/login_class.c
head/usr.bin/limits/limits.1
head/usr.bin/limits/limits.c
Modified: head/bin/sh/miscbltin.c
==============================================================================
--- head/bin/sh/miscbltin.c Sat Mar 12 13:39:57 2016 (r296722)
+++ head/bin/sh/miscbltin.c Sat Mar 12 14:54:34 2016 (r296723)
@@ -452,7 +452,7 @@ ulimitcmd(int argc __unused, char **argv
struct rlimit limit;
what = 'f';
- while ((optc = nextopt("HSatfdsmcnuvlbpwk")) != '\0')
+ while ((optc = nextopt("HSatfdsmcnuvlbpwko")) != '\0')
switch (optc) {
case 'H':
how = HARD;
Modified: head/bin/sh/sh.1
==============================================================================
--- head/bin/sh/sh.1 Sat Mar 12 13:39:57 2016 (r296722)
+++ head/bin/sh/sh.1 Sat Mar 12 14:54:34 2016 (r296723)
@@ -2615,7 +2615,7 @@ and not found.
For aliases the alias expansion is printed;
for commands and tracked aliases
the complete pathname of the command is printed.
-.It Ic ulimit Oo Fl HSabcdfklmnpstuvw Oc Op Ar limit
+.It Ic ulimit Oo Fl HSabcdfklmnopstuvw Oc Op Ar limit
Set or display resource limits (see
.Xr getrlimit 2 ) .
If
@@ -2674,6 +2674,11 @@ kilobytes.
The maximal resident set size of a process, in kilobytes.
.It Fl n Ar nofiles
The maximal number of descriptors that could be opened by a process.
+.It Fl o Ar umtxp
+The maximal number of process-shared locks
+(see
+.Xr pthread 3 )
+for this user ID.
.It Fl p Ar pseudoterminals
The maximal number of pseudo-terminals for this user ID.
.It Fl s Ar stacksize
Modified: head/etc/login.conf
==============================================================================
--- head/etc/login.conf Sat Mar 12 13:39:57 2016 (r296722)
+++ head/etc/login.conf Sat Mar 12 14:54:34 2016 (r296723)
@@ -43,6 +43,7 @@ default:\
:swapuse=unlimited:\
:pseudoterminals=unlimited:\
:kqueues=unlimited:\
+ :umtxp=unlimited:\
:priority=0:\
:ignoretime@:\
:umask=022:
Modified: head/lib/libutil/login.conf.5
==============================================================================
--- head/lib/libutil/login.conf.5 Sat Mar 12 13:39:57 2016 (r296722)
+++ head/lib/libutil/login.conf.5 Sat Mar 12 14:54:34 2016 (r296723)
@@ -199,6 +199,7 @@ notation may be used.
.It "stacksize size Maximum stack size limit."
.It "pseudoterminals number Maximum number of pseudo-terminals."
.It "swapuse size Maximum swap space size limit."
+.It "umtxp number Maximum number of process-shared pthread locks."
.El
.Pp
These resource limit entries actually specify both the maximum
Modified: head/lib/libutil/login_class.3
==============================================================================
--- head/lib/libutil/login_class.3 Sat Mar 12 13:39:57 2016 (r296722)
+++ head/lib/libutil/login_class.3 Sat Mar 12 14:54:34 2016 (r296723)
@@ -119,6 +119,7 @@ vmemoryuse RLIMIT_VMEM
pseudoterminals RLIMIT_NPTS
swapuse RLIMIT_SWAP
kqueues RLIMIT_KQUEUES
+umtxp RLIMIT_UMTXP
.Ed
.It LOGIN_SETPRIORITY
Set the scheduling priority for the current process based on the
Modified: head/lib/libutil/login_class.c
==============================================================================
--- head/lib/libutil/login_class.c Sat Mar 12 13:39:57 2016 (r296722)
+++ head/lib/libutil/login_class.c Sat Mar 12 14:54:34 2016 (r296723)
@@ -67,6 +67,7 @@ static struct login_res {
{ "pseudoterminals", login_getcapnum, RLIMIT_NPTS },
{ "swapuse", login_getcapsize, RLIMIT_SWAP },
{ "kqueues", login_getcapsize, RLIMIT_KQUEUES },
+ { "umtxp", login_getcapnum, RLIMIT_UMTXP },
{ NULL, 0, 0 }
};
Modified: head/usr.bin/limits/limits.1
==============================================================================
--- head/usr.bin/limits/limits.1 Sat Mar 12 13:39:57 2016 (r296722)
+++ head/usr.bin/limits/limits.1 Sat Mar 12 14:54:34 2016 (r296723)
@@ -30,11 +30,11 @@
.Op Fl C Ar class | Fl P Ar pid | Fl U Ar user
.Op Fl SHB
.Op Fl ea
-.Op Fl bcdfklmnstuvpw Op Ar val
+.Op Fl bcdfklmnopstuvw Op Ar val
.Nm
.Op Fl C Ar class | Fl U Ar user
.Op Fl SHB
-.Op Fl bcdfklmnstuvpw Op Ar val
+.Op Fl bcdfklmnopstuvw Op Ar val
.Op Fl E
.Oo
.Op Ar name Ns = Ns Ar value ...
@@ -233,6 +233,18 @@ system is limited to the value displayed
.Va kern.maxfiles
.Xr sysctl 8
variable.
+.It Fl o Op Ar val
+Select or set the
+.Va umtxp
+resource limit.
+The limit determines the maximal number of the process-shared locks
+which may be simultaneously created by the processes owned by the
+user, see
+.Xr pthread 3 .
+.It Fl p Op Ar val
+Select or set the
+.Va pseudoterminals
+resource limit.
.It Fl s Op Ar val
Select or set the
.Va stacksize
@@ -266,10 +278,6 @@ and is inclusive of text, data, bss, sta
and
.Xr mmap 2 Ns 'd
space.
-.It Fl p Op Ar val
-Select or set the
-.Va pseudoterminals
-resource limit.
.It Fl w Op Ar val
Select or set the
.Va swapuse
Modified: head/usr.bin/limits/limits.c
==============================================================================
--- head/usr.bin/limits/limits.c Sat Mar 12 13:39:57 2016 (r296722)
+++ head/usr.bin/limits/limits.c Sat Mar 12 14:54:34 2016 (r296723)
@@ -254,7 +254,7 @@ static struct {
* to be modified accordingly!
*/
-#define RCS_STRING "tfdscmlunbvpwk"
+#define RCS_STRING "tfdscmlunbvpwko"
static rlim_t resource_num(int which, int ch, const char *str);
static void usage(void);
@@ -551,7 +551,7 @@ usage(void)
{
(void)fprintf(stderr,
"usage: limits [-C class|-P pid|-U user] [-eaSHBE] "
- "[-bcdflmnstuvpwk [val]] [[name=val ...] cmd]\n");
+ "[-bcdfklmnostuvpw [val]] [[name=val ...] cmd]\n");
exit(EXIT_FAILURE);
}
@@ -660,6 +660,7 @@ resource_num(int which, int ch, const ch
case RLIMIT_NOFILE:
case RLIMIT_NPTS:
case RLIMIT_KQUEUES:
+ case RLIMIT_UMTXP:
res = strtoq(s, &e, 0);
s = e;
break;
More information about the svn-src-head
mailing list