9front - general discussion about 9front
 help / color / mirror / Atom feed
From: Anthony Martin <ality@pbrane.org>
To: 9front@9front.org
Subject: [9front] Re: [PATCH] devproc: use the correct limit when warning that conf.nproc is too high
Date: Tue, 8 Jun 2021 16:59:02 -0700
Message-ID: <YMAERiTuZ+hrjUzu@alice> (raw)
In-Reply-To: <87CC47A3BE3DD1D6C46A7DBCA339BB32@biobuf.link>

james palmer <james@biobuf.link> once said:
> -	if(conf.nproc >= (1<<(16-QSHIFT))-1)
> +	if(conf.nproc >= (1<<23)-1)

This change could be better. Skip to the end for the patch or
continue reading for a stroll down memory lane.

The number of qid types in the proc(3) file system has slowly
increased over time. The first edition originally had nine:

	Qdir, Qctl, Qmem, Qnote, Qnotepg, Qproc, Qsegment, Qstatus,
	and Qtext.

The second edition added two:

	Qnoteid, and Qwait.

The third edition added six:

	Qfd, Qfpregs, Qkregs, Qns, Qregs, and Qprofile.

The fourth edition added three:

	Qargs in 2002, Qtrace in 2003, and Qsyscall in 2010.

And 9front has added two more:

	Qppid in 2011, and Qwatchpt in 2017.

The number surpassed 16 in 3ed so QSHIFT was incremented and the
constants were adjusted but, unfortunately, the comment was not
updated at that time.

In May 2011, quanstro pointed this out on 9fans and it was corrected.
The QID and SLOT macros were also changed to calculate the mask based
on QSHIFT. The guard testing for too many procs in procinit was also

This change happened shortly after the 9front fork happened so it was
easily missed.


% cd /n/dump/2011
% diff -c (0526 0527)^/sys/src/9/port/devproc.c
0526/sys/src/9/port/devproc.c:132,139 - 0527/sys/src/9/port/devproc.c:132,139

   * Qids are, in path:
-  *	 4 bits of file type (qids above)
-  *	23 bits of process slot number + 1
+  *	 5 bits of file type (qids above)
+  *	26 bits of process slot number + 1
   *	     in vers,
   *	32 bits of pid, for consistency checking
   * If notepg, c->pgrpid.path is pgrp slot, .vers is noteid.
0526/sys/src/9/port/devproc.c:140,147 - 0527/sys/src/9/port/devproc.c:140,147
  #define	QSHIFT	5	/* location in qid of proc slot # */

- #define	QID(q)		((((ulong)(q).path)&0x0000001F)>>0)
- #define	SLOT(q)		(((((ulong)(q).path)&0x07FFFFFE0)>>QSHIFT)-1)
+ #define	QID(q)		((((ulong)(q).path) & ((1<<QSHIFT)-1)) >> 0)
+ #define	SLOT(q)		(((((ulong)(q).path) & ~(1UL<<31)) >> QSHIFT) - 1)
  #define	PID(q)		((q).vers)
  #define	NOTEID(q)	((q).vers)

0526/sys/src/9/port/devproc.c:288,294 - 0527/sys/src/9/port/devproc.c:288,294
  static void
- 	if(conf.nproc >= (1<<(16-QSHIFT))-1)
+ 	if(conf.nproc >= (1<<(31-QSHIFT))-1)
  		print("warning: too many procs for devproc\n");
  	addclock0link((void (*)(void))profclock, 113);	/* Relative prime to HZ */

  reply	other threads:[~2021-06-09  0:25 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-07  8:39 [9front] " james palmer
2021-06-08 23:59 ` Anthony Martin [this message]
2021-06-09  2:22   ` [9front] " ori

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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YMAERiTuZ+hrjUzu@alice \
    --to=ality@pbrane.org \
    --cc=9front@9front.org \


* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

9front - general discussion about 9front

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.vuxu.org/9front

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 9front 9front/ http://inbox.vuxu.org/9front \
	public-inbox-index 9front

Example config snippet for mirrors.
Newsgroup available over NNTP:

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git