From owner-freebsd-arch Wed May 23 14: 9:46 2001 Delivered-To: freebsd-arch@freebsd.org Received: from Awfulhak.org (awfulhak.demon.co.uk [194.222.196.252]) by hub.freebsd.org (Postfix) with ESMTP id 8614437B423; Wed, 23 May 2001 14:09:30 -0700 (PDT) (envelope-from brian@Awfulhak.org) Received: from hak.lan.Awfulhak.org (root@hak.lan.Awfulhak.org [172.16.0.12]) by Awfulhak.org (8.11.3/8.11.3) with ESMTP id f4NL9SY12822; Wed, 23 May 2001 22:09:29 +0100 (BST) (envelope-from brian@lan.Awfulhak.org) Received: from hak.lan.Awfulhak.org (brian@localhost [127.0.0.1]) by hak.lan.Awfulhak.org (8.11.3/8.11.3) with ESMTP id f4NL9RF11365; Wed, 23 May 2001 22:09:27 +0100 (BST) (envelope-from brian@hak.lan.Awfulhak.org) Message-Id: <200105232109.f4NL9RF11365@hak.lan.Awfulhak.org> X-Mailer: exmh version 2.3.1 01/18/2001 with nmh-1.0.4 To: Brian Somers Cc: Mike Smith , freebsd-arch@FreeBSD.ORG, brian@Awfulhak.org Subject: Re: RFC: unit_list routines In-Reply-To: Message from Brian Somers of "Wed, 23 May 2001 21:20:02 BST." <200105232020.f4NKK2F10389@hak.lan.Awfulhak.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <11358.990652166.1@hak.lan.Awfulhak.org> Date: Wed, 23 May 2001 22:09:27 +0100 From: Brian Somers Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG > > > > > >I didn't do it that way because the ``usual'' way units are allocated > > > > > >is sequentially. Using bits when there are large numbers of units > > > > > >gets awkward. I figured what was required was something small and > > > > > >simple that would cover the requirements of most/all drivers that > > > > > >need to track their units so that it's easy to find an unused one, > > > > > >and it's easy to allocate/deallocate things. > > > > > > > > > > How does newbus allocate/manage unit numbers ? > > > > > > > > I don't think it does. The only way to find out what's in use > > > > (AFAIK) is by looking at every specinfo in dev_hash.... > > > > > > Er, what exactly are you smoking? > > > > > > Newbus manages unit numbers using the devclass: > > > > > > struct devclass { > > > TAILQ_ENTRY(devclass) link; > > > driver_list_t drivers; /* bus devclasses store drivers for bus */ > > > char *name; > > > device_t *devices; /* array of devices indexed by unit */ > > > int maxunit; /* size of devices array */ > > > }; > > > > Yes, Garrett pointed this out. I misunderstood the question because > > newbus doesn't manage unit numbers. It ``manages'' the maximum unit > > number allocated and nothing else. > > > > My answer was describing the only way I know of to figure out which > > units for a given device are allocated/opened. > > Hmm, hang on. I'll stop smoking.... If that device_t array knows > which devices are open it could solve my problems... Where did I put that smoke.... Anyone care to try # ppp -unit 16777215 I don't care for the consistency of the results (/dev/tun16777215 is created ok, but seems to be talking to interface tun0). Is subr_bus.c *really* trying to allocate 0xffffff device_t pointers and set them all except the last to NULL ? That's 67Mb of memory. Funnily enough, netstat -i takes quite a while to run, and yep, I'm using up a bit of swap. I think devclass needs to be fixed. Maybe it should use this new ``struct unit_list'' that I happen to have handy - or even better, it could use the rman stuff !!! :*D -- Brian Don't _EVER_ lose your sense of humour ! To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message