It seems that sound(4)'s feeder routines don't need to allocate memory

without waiting, since they are called from a system-call context only.
This appears to fix all sorts of problems with open("/dev/dsp", O_WRONLY)
randomly returning ENXIO.

Found by:	cognet
This commit is contained in:
Brian Feldman 2003-02-23 20:49:45 +00:00
parent 437ce69ead
commit 3fbe138ca9
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=111354
3 changed files with 8 additions and 11 deletions

View File

@ -137,7 +137,7 @@ feeder_create(struct feeder_class *fc, struct pcm_feederdesc *desc)
struct pcm_feeder *f;
int err;
f = (struct pcm_feeder *)kobj_create((kobj_class_t)fc, M_FEEDER, M_NOWAIT | M_ZERO);
f = (struct pcm_feeder *)kobj_create((kobj_class_t)fc, M_FEEDER, M_WAITOK | M_ZERO);
if (f == NULL)
return NULL;

View File

@ -209,8 +209,8 @@ FEEDER_DECLARE(feeder_8to16le, 0, NULL);
static int
feed_16to8_init(struct pcm_feeder *f)
{
f->data = malloc(FEEDBUFSZ, M_FMTFEEDER, M_NOWAIT | M_ZERO);
return (f->data)? 0 : ENOMEM;
f->data = malloc(FEEDBUFSZ, M_FMTFEEDER, M_WAITOK | M_ZERO);
return 0;
}
static int
@ -318,8 +318,8 @@ FEEDER_DECLARE(feeder_monotostereo16, 0, NULL);
static int
feed_stereotomono8_init(struct pcm_feeder *f)
{
f->data = malloc(FEEDBUFSZ, M_FMTFEEDER, M_NOWAIT | M_ZERO);
return (f->data)? 0 : ENOMEM;
f->data = malloc(FEEDBUFSZ, M_FMTFEEDER, M_WAITOK | M_ZERO);
return 0;
}
static int
@ -363,8 +363,8 @@ FEEDER_DECLARE(feeder_stereotomono8, 1, NULL);
static int
feed_stereotomono16_init(struct pcm_feeder *f)
{
f->data = malloc(FEEDBUFSZ, M_FMTFEEDER, M_NOWAIT | M_ZERO);
return (f->data)? 0 : ENOMEM;
f->data = malloc(FEEDBUFSZ, M_FMTFEEDER, M_WAITOK | M_ZERO);
return 0;
}
static int

View File

@ -249,10 +249,7 @@ feed_rate_init(struct pcm_feeder *f)
{
struct feed_rate_info *info;
info = malloc(sizeof(*info), M_RATEFEEDER, M_NOWAIT | M_ZERO);
if (info == NULL)
return ENOMEM;
info = malloc(sizeof(*info), M_RATEFEEDER, M_WAITOK | M_ZERO);
info->src = DSP_DEFAULT_SPEED;
info->dst = DSP_DEFAULT_SPEED;
info->channels = 2;