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