From: Linus Torvalds <torvalds@linux-foundation.org>
To: Pavel Machek <pavel@ucw.cz>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>, Greg KH <gregkh@suse.de>,
Rik van Riel <riel@redhat.com>, John Stoffel <john@stoffel.org>,
Hedi Berriche <hedi@sgi.com>, Mike Travis <travis@sgi.com>,
Ingo Molnar <mingo@elte.hu>, Jack Steiner <steiner@sgi.com>,
Andrew Morton <akpm@linux-foundation.org>,
Robin Holt <holt@sgi.com>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [Patch 1/1] init: Provide a kernel start parameter to increase pid_max v2
Date: Sun, 25 Apr 2010 10:27:35 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.2.00.1004251021520.3739@i5.linux-foundation.org> (raw)
In-Reply-To: <alpine.LFD.2.00.1004251002480.3739@i5.linux-foundation.org>
On Sun, 25 Apr 2010, Linus Torvalds wrote:
>
> Iirc, some _really_ old code used 'short' for pid_t, and we wanted to be
> really safe when we raised the limits.
.. I dug into the history, and this is from August 2002..
We used to limit it to sixteen bits, but that was too tight even then for
some people, so first we did this:
Author: Linus Torvalds <torvalds@home.transmeta.com>
Date: Thu Aug 8 03:57:42 2002 -0700
Make pid allocation use 30 of the 32 bits, instead of 15.
diff --git a/include/linux/threads.h b/include/linux/threads.h
index 880b990..6804ee7 100644
--- a/include/linux/threads.h
+++ b/include/linux/threads.h
@@ -19,6 +19,7 @@
/*
* This controls the maximum pid allocated to a process
*/
-#define PID_MAX 0x8000
+#define PID_MASK 0x3fffffff
+#define PID_MAX (PID_MASK+1)
#endif
diff --git a/kernel/fork.c b/kernel/fork.c
index d40d246..017740d 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -142,7 +142,7 @@ static int get_pid(unsigned long flags)
return 0;
spin_lock(&lastpid_lock);
- if((++last_pid) & 0xffff8000) {
+ if((++last_pid) & ~PID_MASK) {
last_pid = 300; /* Skip daemons etc. */
goto inside;
}
@@ -157,7 +157,7 @@ inside:
p->tgid == last_pid ||
p->session == last_pid) {
if(++last_pid >= next_safe) {
- if(last_pid & 0xffff8000)
+ if(last_pid & ~PID_MASK)
last_pid = 300;
next_safe = PID_MAX;
}
which just upped the limits. That, in turn, _did_ end up breaking some
silly old binaries, so then a month later Ingo did a "pid-max" patch
that made the maximum dynamic, with a default of the old 15-bit limit,
and a sysctl to raise it.
And then a couple of weeks later, Ingo did another patch to fix the
scalability problems we had with lots of pids (avoiding the whole
"for_each_task()" crud to figure out which pids were ok, and using a
'struct pid' instead).
So the whole worry about > 15-bit pids goes back to 2002. I think we're
pretty safe now.
Linus
next prev parent reply other threads:[~2010-04-25 17:29 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-21 1:40 [Patch 1/1] init: Provide a kernel start parameter to increase pid_max Mike Travis
2010-04-21 1:52 ` [Patch 1/1] init: Provide a kernel start parameter to increase pid_max v2 Mike Travis
2010-04-21 9:23 ` Alan Cox
2010-04-21 16:59 ` Hedi Berriche
2010-04-21 17:18 ` Rik van Riel
2010-04-21 17:54 ` Mike Travis
2010-04-21 19:14 ` John Stoffel
2010-04-21 19:33 ` Hedi Berriche
2010-04-21 20:10 ` John Stoffel
2010-04-21 22:24 ` Greg KH
2010-04-21 22:49 ` Rik van Riel
2010-04-21 23:22 ` Greg KH
2010-04-22 9:28 ` Alan Cox
2010-04-22 12:58 ` Jack Steiner
2010-04-22 13:57 ` Robin Holt
2010-04-22 14:48 ` Linus Torvalds
2010-04-22 17:08 ` Robin Holt
2010-04-22 18:10 ` John Stoffel
2010-04-22 20:35 ` Andrew Morton
2010-04-25 7:16 ` Pavel Machek
2010-04-25 17:15 ` Linus Torvalds
2010-04-25 17:27 ` Linus Torvalds [this message]
2010-04-25 12:13 ` Pavel Machek
2010-04-26 19:48 ` [Patch 1/1] init: Provide a kernel start parameter to increase pid_max v3 Mike Travis
2010-04-26 20:46 ` Greg KH
2010-04-27 0:43 ` Mike Travis
2010-04-27 0:42 ` [Patch 1/1] init: Increase pid_max based on num_possible_cpus v4 Mike Travis
2010-04-21 17:58 ` [Patch 1/1] init: Provide a kernel start parameter to increase pid_max v2 Alan Cox
2010-04-21 19:12 ` Hedi Berriche
2010-04-21 19:51 ` Greg KH
2010-04-21 20:12 ` Hedi Berriche
2010-04-21 22:05 ` Jack Steiner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.2.00.1004251021520.3739@i5.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=gregkh@suse.de \
--cc=hedi@sgi.com \
--cc=holt@sgi.com \
--cc=john@stoffel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=pavel@ucw.cz \
--cc=riel@redhat.com \
--cc=steiner@sgi.com \
--cc=travis@sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®