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:
parent
437ce69ead
commit
3fbe138ca9
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=111354
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user