mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ralf Baechle <ralf@uni-koblenz.de>
To: Andries.Brouwer@cwi.nl
Cc: alan@lxorguk.ukuu.org.uk, bishop@sekure.org,
	daniel.kobras@student.uni-tuebingen.de, drepper@cygnus.com,
	linux-kernel@vger.rutgers.edu, mingo@chiara.csoma.elte.hu
Subject: Re: size of pid_t (was: Re: NR_TASKS as config option)
Date: Mon, 14 Jun 1999 11:22:32 +0200	[thread overview]
Message-ID: <19990614112232.C13946@uni-koblenz.de> (raw)
In-Reply-To: <UTC199906131847.UAA26622.aeb@eland.cwi.nl>; from Andries.Brouwer@cwi.nl on Sun, Jun 13, 1999 at 08:47:08PM +0200

On Sun, Jun 13, 1999 at 08:47:08PM +0200, Andries.Brouwer@cwi.nl wrote:

> Changing the size of pid_t to 64-bit is a major operation.
> Lots of system calls have pid_t arguments or return pid_t
> results. And pid_t occurs many other places. For example,
> a struct flock has a pid_t field.
> Moreover, glibc doesnt have machinery in place to change
> the size of a pid_t. So, if I am not mistaken, this would
> require a new major number for the library.
> 
> But if pid_t is 32-bit, then why does the kernel only use 15 bits?
> We have
>         #define PID_MAX 0x8000
> in <linux/tasks.h>, and at first sight not much goes wrong
> if we pick some larger number for PID_MAX, like 0x7fffffff.
> (There are some comparisons around, so for simplicity we should
> keep PID_MAX positive.)
> 
> 
> Hmm - but then what is it that goes wrong?
> In include/asm-i386/posix_types.h we have
>         typedef unsigned short __kernel_ipc_pid_t;
> (and the same for m68k, ppc, sparc, arm).

Alpha, MIPS and Sparc64 on the other side do use a 32-bit *pid_t and
are limited by the current implementation to effectivly 15 bit.

> This is the type of the fields msg_lspid, msg_lrpid, shm_cpid, shm_lpid
> of struct msqid_ds and shmid_ds. Such structures are returned by
> the system calls msgctl() and shmctl().
> So, using larger pid's gives some trouble with SYSV IPC.
> (And again glibc is unable to cope with changes, although
> the trouble is minor in this case.)
> 
> 
> Conclusion:
> - a 64-bit pid_t is most convenient for the kernel, but
>   gives trouble with libc.

Note that I have a chance for a fresh start for MIPS64.  Binary
compatibility is therefore not an issue.  Furthermore it's a 64-bit
architecture, so the code size itself will not increase.

The biggest problem will probably be code which does things like

  int pid;

  pid = fork();

Finding them all is going to be quite a nasty problem.  Making the kernel
/ libc reject pids that are signed / unsigned expanded 32-bit numbers
except init's pid will support that, hopefully.

> - a 32-bit pid_t is what we have today, but we use only
>   15 bits because of SYSV IPC (or perhaps other reasons
>   I am unaware of).

Pids in the range of [0 ... 32000[ are pretty much tradition among
unices since about the time UNIX was born.  Linux does things slightly
more efficient by using the entire range of [0 ... 32768].

  Ralf

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

      parent reply	other threads:[~1999-06-14 10:31 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-06-13 18:47 Andries.Brouwer
1999-06-13 19:48 ` Pavel Machek
1999-06-15  0:43   ` Mike Touloumtzis
1999-06-14  9:08 ` Matthew Wilcox
1999-06-14  9:22 ` Ralf Baechle [this message]

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=19990614112232.C13946@uni-koblenz.de \
    --to=ralf@uni-koblenz.de \
    --cc=Andries.Brouwer@cwi.nl \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=bishop@sekure.org \
    --cc=daniel.kobras@student.uni-tuebingen.de \
    --cc=drepper@cygnus.com \
    --cc=linux-kernel@vger.rutgers.edu \
    --cc=mingo@chiara.csoma.elte.hu \
    /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®