Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/sound/pcm/sound.c
Show First 20 Lines • Show All 437 Lines • ▼ Show 20 Lines | if (!PCM_REGISTERED(d) || CHN_EMPTY(d, channels.pcm)) | ||||
return EINVAL; | return EINVAL; | ||||
snd_unit = unit; | snd_unit = unit; | ||||
snd_unit_auto = 0; | snd_unit_auto = 0; | ||||
} | } | ||||
return (error); | return (error); | ||||
} | } | ||||
/* XXX: do we need a way to let the user change the default unit? */ | /* XXX: do we need a way to let the user change the default unit? */ | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, default_unit, | SYSCTL_PROC(_hw_snd, OID_AUTO, default_unit, | ||||
CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_ANYBODY, | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_ANYBODY | CTLFLAG_NEEDGIANT, | ||||
0, sizeof(int), sysctl_hw_snd_default_unit, "I", | 0, sizeof(int), sysctl_hw_snd_default_unit, "I", | ||||
"default sound device"); | "default sound device"); | ||||
static int | static int | ||||
sysctl_hw_snd_maxautovchans(SYSCTL_HANDLER_ARGS) | sysctl_hw_snd_maxautovchans(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
struct snddev_info *d; | struct snddev_info *d; | ||||
int i, v, error; | int i, v, error; | ||||
v = snd_maxautovchans; | v = snd_maxautovchans; | ||||
Show All 11 Lines | for (i = 0; pcm_devclass != NULL && | ||||
continue; | continue; | ||||
PCM_ACQUIRE_QUICK(d); | PCM_ACQUIRE_QUICK(d); | ||||
pcm_setmaxautovchans(d, v); | pcm_setmaxautovchans(d, v); | ||||
PCM_RELEASE_QUICK(d); | PCM_RELEASE_QUICK(d); | ||||
} | } | ||||
} | } | ||||
return (error); | return (error); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, maxautovchans, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, maxautovchans, | ||||
0, sizeof(int), sysctl_hw_snd_maxautovchans, "I", "maximum virtual channel"); | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | ||||
0, sizeof(int), sysctl_hw_snd_maxautovchans, "I", | |||||
"maximum virtual channel"); | |||||
struct pcm_channel * | struct pcm_channel * | ||||
pcm_chn_create(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, int dir, int num, void *devinfo) | pcm_chn_create(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, int dir, int num, void *devinfo) | ||||
{ | { | ||||
struct pcm_channel *ch; | struct pcm_channel *ch; | ||||
int direction, err, rpnum, *pnum, max; | int direction, err, rpnum, *pnum, max; | ||||
int udc, device, chan; | int udc, device, chan; | ||||
char *dirs, *devname, buf[CHN_NAMELEN]; | char *dirs, *devname, buf[CHN_NAMELEN]; | ||||
▲ Show 20 Lines • Show All 516 Lines • ▼ Show 20 Lines | for (i = 0; pcm_devclass != NULL && | ||||
if (bootverbose != 0 || snd_verbose > 3) | if (bootverbose != 0 || snd_verbose > 3) | ||||
device_printf(d->dev, "clone gc: pruned=%d\n", | device_printf(d->dev, "clone gc: pruned=%d\n", | ||||
val); | val); | ||||
} | } | ||||
} | } | ||||
return (err); | return (err); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, clone_gc, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, clone_gc, | ||||
CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | |||||
0, sizeof(int), sysctl_hw_snd_clone_gc, "I", | 0, sizeof(int), sysctl_hw_snd_clone_gc, "I", | ||||
"global clone garbage collector"); | "global clone garbage collector"); | ||||
#endif | #endif | ||||
static void | static void | ||||
pcm_sysinit(device_t dev) | pcm_sysinit(device_t dev) | ||||
{ | { | ||||
struct snddev_info *d = device_get_softc(dev); | struct snddev_info *d = device_get_softc(dev); | ||||
▲ Show 20 Lines • Show All 410 Lines • Show Last 20 Lines |