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;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to