aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2025-11-09 18:32:14 +0100
committerLaurent Bercot <ska-skaware@skarnet.org>2025-11-09 21:13:20 +0000
commitc3a8ef7034fb2bc02f35381a8970ac026822a810 (patch)
treefe078f0067ce443b4ceb102ffa2782523768ae21
parent43253d337ef7a0b74e482e8bf847cb7c12744da0 (diff)
downloads6-c3a8ef7034fb2bc02f35381a8970ac026822a810.tar.gz
s6-softlimit: add -P option for RLIMIT_RTPRIO
Bash ulimit uses -r for this, but in s6-softlimit that was already taken. I could have used -R, but Bash uses that for RLIMIT_RTTIME, so I didn't want to claim that one and create a similarly difficult decision for somebody adding that in future. I decided to use -P (for "priority") as the least bad still-available option.
-rw-r--r--doc/s6-softlimit.html3
-rw-r--r--src/daemontools-extras/s6-softlimit.c7
2 files changed, 8 insertions, 2 deletions
diff --git a/doc/s6-softlimit.html b/doc/s6-softlimit.html
index 05701ce..49a5b40 100644
--- a/doc/s6-softlimit.html
+++ b/doc/s6-softlimit.html
@@ -25,7 +25,7 @@ s6-softlimit changes its process limits, then executes into another program.
<h2> Interface </h2>
<pre>
- s6-softlimit [ -H | -h ] [ -a <em>allmem</em> ] [ -c <em>core</em> ] [ -d <em>data</em> ] [ -f <em>fsize</em> ] [ -l <em>lock</em> ] [ -m <em>mem</em> ] [ -o <em>ofiles</em> ] [ -p <em>proc</em> ] [ -r <em>res</em> ] [ -s <em>stack</em> ] [ -t <em>cpusecs</em> ] <em>prog...</em>
+ s6-softlimit [ -H | -h ] [ -a <em>allmem</em> ] [ -c <em>core</em> ] [ -d <em>data</em> ] [ -f <em>fsize</em> ] [ -l <em>lock</em> ] [ -m <em>mem</em> ] [ -o <em>ofiles</em> ] [ -P <em>prio</em> ] [ -p <em>proc</em> ] [ -r <em>res</em> ] [ -s <em>stack</em> ] [ -t <em>cpusecs</em> ] <em>prog...</em>
</pre>
<ul>
@@ -58,6 +58,7 @@ and s6-softlimit will die. There is virtually no reason to ever use this. </li>
<li> <tt>-l&nbsp;<em>lock</em></tt>&nbsp;: limit the available locked memory to <em>lock</em> bytes. </li>
<li> <tt>-m&nbsp;<em>mem</em></tt>&nbsp;: limit all types of memory to <em>mem</em> bytes. </li>
<li> <tt>-o&nbsp;<em>ofiles</em></tt>&nbsp;: limit the number of open fds to <em>ofiles</em>. </li>
+ <li> <tt>-P&nbsp;<em>prio</em></tt>&nbsp;: limit the real-time priority to <em>prio</em>. </li>
<li> <tt>-p&nbsp;<em>proc</em></tt>&nbsp;: limit the number of processes to <em>proc</em> (per user). </li>
<li> <tt>-r&nbsp;<em>res</em></tt>&nbsp;: limit the available physical memory to <em>res</em> bytes. </li>
<li> <tt>-s&nbsp;<em>stack</em></tt>&nbsp;: limit the available stack memory to <em>stack</em> bytes. </li>
diff --git a/src/daemontools-extras/s6-softlimit.c b/src/daemontools-extras/s6-softlimit.c
index d6112b2..beb7325 100644
--- a/src/daemontools-extras/s6-softlimit.c
+++ b/src/daemontools-extras/s6-softlimit.c
@@ -41,7 +41,7 @@ int main (int argc, char const *const *argv)
PROG = "s6-softlimit" ;
for (;;)
{
- int opt = subgetopt_r(argc, argv, "hHa:c:d:f:l:m:o:p:r:s:t:", &l) ;
+ int opt = subgetopt_r(argc, argv, "hHa:c:d:f:l:m:o:P:p:r:s:t:", &l) ;
if (opt == -1) break ;
switch (opt)
{
@@ -105,6 +105,11 @@ int main (int argc, char const *const *argv)
doit(RLIMIT_NPROC, l.arg) ;
#endif
break ;
+ case 'P' :
+#ifdef RLIMIT_RTPRIO
+ doit(RLIMIT_RTPRIO, l.arg) ;
+#endif
+ break ;
case 'r' :
#ifdef RLIMIT_RSS
doit(RLIMIT_RSS, l.arg) ;