Date: Wed, 17 Sep 2003 14:02:36 -0700 From: John-Mark Gurney <gurney_j@efn.org> To: Robert Watson <rwatson@freebsd.org> Cc: freebsd-arch@freebsd.org Subject: Re: devd limitations / automounting removable storage Message-ID: <20030917210236.GB75714@funkthat.com> In-Reply-To: <Pine.NEB.3.96L.1030917161519.51283B-100000@fledge.watson.org> References: <30912.1063828673@critter.freebsd.dk> <Pine.NEB.3.96L.1030917161519.51283B-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Robert Watson wrote this message on Wed, Sep 17, 2003 at 16:19 -0400: > > Apart from that, it's just a matter of telling me how to send the > > event... > > This is a very similar concern to the question I raised at BSDCon about > distinguishing network interfaces at the newbus and network service > levels. My temptation would be to assign a "layer" as well as a device > name to devices when they are announced. I.e., > > Layer Device Meaning > newbus xl0 A device named xl0 is now available > devfs net/xl0 A device node named net/xl0 is now available > ifnet xl0 A network interface named xl0 is now available > newbus ad0 A device named ad0 is now available > devfs ad0 A device node named ad0 is now available > geom ad0 A storage device named ad0 is now available > > We might skip the devfs layer since it's probably implicit in the > completion of ifnet_attach() and disk_create(), but it's worth thinking > about. This would allow ifconfig commands to be issued once the network > device is available, rather than once newbus has attached an xl0. Or for > geom to announce ad0s1e even though newbus doesn't know about it. Or for > devd to handle the introduction of synthetic interfaces such as vlan, tun, > etc, which aren't visible to newbus. Or for the device driver names and > interface names to differ (or for a non-one-one mapping, interface > renames, etc). I was thinking about a more generic event posting mechanism, where modules can register to receive notifications when events came in. We should have each event contain: system (enum/int) subsystem? (enum/int) event (enum/int) device (char[64?]) additionaldata (void *, size_t combo) This means we can make it more extensible, and have a set of well defined system/subsystem/event triplets, while at the same time, letting future interfaces expand. The subsystem would be used for something like the network stack, which has multiple subsystems, like interface, routing, connections. The advantage is then we can reduce the number of /dev entries that convey the same information, but have different calling conventions. -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030917210236.GB75714>