From owner-svn-src-all@freebsd.org Sat Mar 12 14:54:37 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0988AACE6DD; Sat, 12 Mar 2016 14:54:37 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D8CDB797; Sat, 12 Mar 2016 14:54:36 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u2CEsZNk091291; Sat, 12 Mar 2016 14:54:35 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u2CEsZN2091282; Sat, 12 Mar 2016 14:54:35 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201603121454.u2CEsZN2091282@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 12 Mar 2016 14:54:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r296723 - in head: bin/sh etc lib/libutil usr.bin/limits X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Mar 2016 14:54:37 -0000 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;