Date: Sat, 19 Feb 2000 14:55:18 +0000 From: Mark Ovens <mark@ukug.uk.freebsd.org> To: stable@freebsd.org Subject: Help needed with ioctl() calls Message-ID: <20000219145518.C328@marder-1>
next in thread | raw e-mail | index | archive | help
# uname -a
FreeBSD marder-1 3.4-STABLE FreeBSD 3.4-STABLE #0:
Fri Feb 18 18:14:43 GMT 2000
root@marder-1:/usr/src/sys/compile/MARDER-1 i386
I'm trying to debug a problem in the xmms port whereby the volume
doesn't get set correctly.
It goes wrong after the ioctl() call to set the volume in /dev/mixer.
From /usr/include/machine/soundcard.h:
#define SOUND_MIXER_PCM 4
#define MIXER_WRITE(dev) _IOWR('M', dev, int)
#define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
and the code in question is
int fd, v, l, r;
fd = open(devname, O_RDONLY);
l = 90; r = 90;
v = (r << 8) | l; /* v == 23130 */
ioctl(fd, SOUND_MIXER_WRITE_PCM, &v);
/* now v == 23387, which is (91 << 8) | 91 */
Before the ioctl() call the output from mixer(8) was:
Mixer pcm is currently set to 88:88
and after:
Mixer pcm is currently set to 91:91
when it should be 90:90
The appears to be a bug in ioctl(), but is it?
/dev/mixer is being opened read-only but we appear to be writing to it
OK, albeit the wrong values.
I'm getting a bit out of my depth here so a bit of help would be
appreciated. Is this a bug in ioctl()? If not, any suggestions as to
what I should do now to find the cause of the problem?
Thanks.
--
Microsoft: Where do you want to go today?
Linux: Where do you want to go tomorrow?
BSD: Are you guys coming, or what?
-Poster at LinuxWorld 2000
________________________________________________________________
FreeBSD - The Power To Serve http://www.freebsd.org
My Webpage http://ukug.uk.freebsd.org/~mark/
mailto:mark@ukug.uk.freebsd.org http://www.radan.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000219145518.C328>
