Date: Mon, 30 Dec 1996 19:40:09 +0100 (MET) From: J Wunsch <j@uriah.heep.sax.de> To: freebsd-hackers@freebsd.org (FreeBSD hackers) Cc: randy@zyzzyva.com (Randy Terbush) Subject: Re: DEVFS strangeness Message-ID: <199612301840.TAA09551@uriah.heep.sax.de> In-Reply-To: <199612291900.NAA18516@sierra.zyzzyva.com> from Randy Terbush at "Dec 29, 96 01:00:05 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
As Randy Terbush wrote:
> Seems that sound devices are being created as follows.
>
> crw-rw---- 1 root games 30, 68 Dec 19 08:49 /dev/audio4
> # Sounds support
> controller snd0
> device gus0 at isa? port 0x220 irq 12 drq 1 vector gusintr
>
> #> cat /usr/local/lib/sound/sounds/clink.au > /dev/audio4
> su: /dev/audio4: Device not configured
>
> Is this a known deficiency of the DEVFS?
No, it's a known (now that you mention it :) deficiency of the sound
driver. A quick glance over the source yields:
static int
sndattach (struct isa_device *dev)
{
int unit;
...
unit = driver_to_voxunit(dev->id_driver);
...
#ifdef DEVFS
/* XXX */ /* find out where to store the tokens.. */
/* XXX */ /* should only create devices if that card has them */
#define SND_UID 0
#define SND_GID 13
snd_devfs_token[unit]=
devfs_add_devswf(&snd_cdevsw, (unit << 4)+SND_DEV_CTL, DV_CHR,
^^^^
SND_UID, SND_GID, 0660, "mixer%d", unit);
^^ ^^^^
However:
static int
driver_to_voxunit(struct isa_driver *driver)
{
/* converts a sound driver pointer into the equivalent
VoxWare device unit number */
if(driver == &opldriver)
return(SNDCARD_ADLIB);
else if(driver == &sbdriver)
return(SNDCARD_SB);
else if(driver == &pasdriver)
return(SNDCARD_PAS);
etc. pp....
So this driver seems to have to very different ideas of what a `unit'
might be. If it would really use the term `unit' consistently in the
above sense, it should recognize it always as being unit 4. Probably,
the unit # in the DEVFS sense can only be 0 at all for this driver,
however.
I think this idea of a unit # is a gross abuse... If i read this
correctly, it would never be possible to put two identical soundcards
into the same machine (on different hardware addresses and interrupt
vectors, i mean)?
--
cheers, J"org
joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199612301840.TAA09551>
