Return to BSD News archive
Newsgroups: comp.os.386bsd.bugs
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!howland.reston.ans.net!math.ohio-state.edu!uwm.edu!linac!uchinews!raistlin!timbuk.cray.com!hemlock.cray.com!andyw
From: andyw@aspen32.cray.com (Andy Warner)
Subject: Soundblaster bugfix.
Message-ID: <1993Jul14.131153.17775@hemlock.cray.com>
Originator: andyw@aspen32
Lines: 96
Nntp-Posting-Host: aspen32
Organization: Cray Research, Inc.
Date: 14 Jul 93 13:11:53 CDT
Here's the context diffs to fix a problem with realease 1.5 of the
soundblaster driver. Using the mixer ioctls would mysteriously
reset the sampling speed, this was obviously a problem, because
mixer.c checked & reset the speed (unfortunately, it can't
do that when the DSP device is already opened..). Anyway, the
problem was an array bounds error in sbopen().
I also have made the minimum speed a #define rather than
and int, since it's never changed.
<=============================== cut here ========================>
*** /sys/i386/isa/sb.c-orig Sun Feb 21 12:52:03 1993
--- /sys/i386/isa/sb.c Tue Jul 13 00:48:16 1993
***************
*** 266,275 ****
int wake[NUM_UNITS];/* What to wakeup on interrupt */
/* Select handler stuff, one entry for each "device" */
! struct proc *selects[SB_BIGGEST_MINOR];
! sbFLAG sel_coll[SB_BIGGEST_MINOR];
! struct proc *sig_proc[SB_BIGGEST_MINOR];
! int flags[SB_BIGGEST_MINOR]; /* fcntl flags */
};
static struct sb_status_type status; /* Global current status */
--- 266,275 ----
int wake[NUM_UNITS];/* What to wakeup on interrupt */
/* Select handler stuff, one entry for each "device" */
! struct proc *selects[SB_BIGGEST_MINOR+1];
! sbFLAG sel_coll[SB_BIGGEST_MINOR+1];
! struct proc *sig_proc[SB_BIGGEST_MINOR+1];
! int flags[SB_BIGGEST_MINOR+1]; /* fcntl flags */
};
static struct sb_status_type status; /* Global current status */
***************
*** 305,312 ****
* you're using. Defaults to oldest card unless configuration says
* otherwise.
*/
! int dsp_min_speed = 3906;
! int dsp_max_speed = 22222;
/*
* Forward declarations galore!
--- 305,312 ----
* you're using. Defaults to oldest card unless configuration says
* otherwise.
*/
! #define DSP_MIN_SPEED 3906
! int dsp_max_speed = 22222 ;
/*
* Forward declarations galore!
***************
*** 537,543 ****
*/
int sbopen(dev_t dev, int flags)
{
! if (!status.alive) return (ENODEV);
DPRINTF (("open(): dev = 0x%x, flags = 0x%x\n", dev, flags));
--- 537,545 ----
*/
int sbopen(dev_t dev, int flags)
{
! if (!status.alive || (minor(dev) > SB_BIGGEST_MINOR)) {
! return (ENODEV);
! }
DPRINTF (("open(): dev = 0x%x, flags = 0x%x\n", dev, flags));
***************
*** 1322,1328 ****
return (ESUCCESS);
}
! *speed = MAX(*speed, dsp_min_speed);
*speed = MIN(*speed, dsp_max_speed);
if (*speed > MAX_LOW_SPEED) {
--- 1324,1330 ----
return (ESUCCESS);
}
! *speed = MAX(*speed, DSP_MIN_SPEED);
*speed = MIN(*speed, dsp_max_speed);
if (*speed > MAX_LOW_SPEED) {
<=============================== cut here ========================>
--
andyw. N0REN/G1XRL
andyw@aspen.cray.com Andy Warner, Cray Research, Inc. (612) 683-5835