From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 28296 invoked from network); 9 Jun 2021 21:31:41 -0000 Received: from 1ess.inri.net (216.126.196.35) by inbox.vuxu.org with ESMTPUTF8; 9 Jun 2021 21:31:41 -0000 Received: from mimir.eigenstate.org ([206.124.132.107]) by 1ess; Tue Jun 8 22:28:56 -0400 2021 Received: from abbatoir.myfiosgateway.com (pool-74-108-56-225.nycmny.fios.verizon.net [74.108.56.225]) by mimir.eigenstate.org (OpenSMTPD) with ESMTPSA id 10fa8128 (TLSv1.2:ECDHE-RSA-AES256-SHA:256:NO) for <9front@9front.org>; Tue, 8 Jun 2021 19:22:05 -0700 (PDT) Message-ID: To: 9front@9front.org Date: Tue, 08 Jun 2021 22:22:03 -0400 From: ori@eigenstate.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: private singleton-aware event-oriented manager Subject: Re: [9front] Re: [PATCH] devproc: use the correct limit when warning that conf.nproc is too high Reply-To: 9front@9front.org Precedence: bulk Quoth Anthony Martin : > james palmer 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 > fixed. > > This change happened shortly after the 9front fork happened so it was > easily missed. > > Cheers, > Anthony > > % 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<> 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 > procinit(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 */ > } > % > Yeah, that looks better. Thanks for digging it up; applying it by hand. As a side note, 'diff -u' or 'ape/diff -u' makes for a patch that can be applied directly from email: ape/patch -p1