Messages in this thread Patch in this message | | | Date | Thu, 8 Aug 2002 15:02:50 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [PATCH] Linux-2.5 fix/improve get_pid() |
| |
On Thu, 8 Aug 2002, Hubertus Franke wrote: > > That is true. All was done under the 16-bit assumption > My hunch is that the current algorithm might actually work quite well > for a sparsely populated pid-space (32-bits).
I agree.
So let's just try Andries approach, suggested patch as follows..
(yeah, silly mask and MAX_PID, but since even the kernel uses signed integers for some of it, this way it never gets close to being an issue).
Linus
---- --- 1.2/include/linux/threads.h Tue Feb 5 07:23:04 2002 +++ edited/include/linux/threads.h Thu Aug 8 14:58:28 2002 @@ -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 ===== kernel/fork.c 1.57 vs edited ===== --- 1.57/kernel/fork.c Tue Jul 30 15:49:20 2002 +++ edited/kernel/fork.c Thu Aug 8 15:00:16 2002 @@ -142,7 +142,7 @@ 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 @@ 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; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |