aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sound/pcm/feeder.h
diff options
context:
space:
mode:
authorCameron Grant <cg@FreeBSD.org>2001-03-24 23:10:29 +0000
committerCameron Grant <cg@FreeBSD.org>2001-03-24 23:10:29 +0000
commit66ef8af5b0e00b074572e81d3ff8c0453b284325 (patch)
treee045ee15d7d7f19a9a17db39f6172b134e1c8800 /sys/dev/sound/pcm/feeder.h
parent6bef82468fab1862b43b58b6b74a8b1fb5536a03 (diff)
downloadsrc-66ef8af5b0e00b074572e81d3ff8c0453b284325.tar.gz
src-66ef8af5b0e00b074572e81d3ff8c0453b284325.zip
mega-commit.
this introduces a new buffering mechanism which results in dramatic simplification of the channel manager. as several structures have changed, we take the opportunity to move their definitions into the source files where they are used, make them private and de-typedef them. the sound drivers are updated to use snd_setup_intr instead of bus_setup_intr, and to comply with the de-typedefed structures. the ac97, mixer and channel layers have been updated with finegrained locking, as have some drivers- not all though. the rest will follow soon.
Notes
Notes: svn path=/head/; revision=74763
Diffstat (limited to 'sys/dev/sound/pcm/feeder.h')
-rw-r--r--sys/dev/sound/pcm/feeder.h25
1 files changed, 20 insertions, 5 deletions
diff --git a/sys/dev/sound/pcm/feeder.h b/sys/dev/sound/pcm/feeder.h
index bde121807c35..c3910e562c83 100644
--- a/sys/dev/sound/pcm/feeder.h
+++ b/sys/dev/sound/pcm/feeder.h
@@ -26,6 +26,21 @@
* $FreeBSD$
*/
+struct pcm_feederdesc {
+ u_int32_t type;
+ u_int32_t in, out;
+ u_int32_t flags;
+ int idx;
+};
+
+struct pcm_feeder {
+ KOBJ_FIELDS;
+ int align;
+ struct pcm_feederdesc *desc;
+ void *data;
+ struct pcm_feeder *source;
+};
+
struct feeder_class {
KOBJ_CLASS_FIELDS;
int align;
@@ -36,16 +51,16 @@ struct feeder_class {
void feeder_register(void *p);
struct feeder_class *feeder_getclass(struct pcm_feederdesc *desc);
-u_int32_t chn_fmtchain(pcm_channel *c, u_int32_t *to);
-int chn_addfeeder(pcm_channel *c, struct feeder_class *fc, struct pcm_feederdesc *desc);
-int chn_removefeeder(pcm_channel *c);
-pcm_feeder *chn_findfeeder(pcm_channel *c, u_int32_t type);
+u_int32_t chn_fmtchain(struct pcm_channel *c, u_int32_t *to);
+int chn_addfeeder(struct pcm_channel *c, struct feeder_class *fc, struct pcm_feederdesc *desc);
+int chn_removefeeder(struct pcm_channel *c);
+struct pcm_feeder *chn_findfeeder(struct pcm_channel *c, u_int32_t type);
#define FEEDER_DECLARE(feeder, palign, pdata) \
static struct feeder_class feeder ## _class = { \
name: #feeder, \
methods: feeder ## _methods, \
- size: sizeof(pcm_feeder), \
+ size: sizeof(struct pcm_feeder), \
align: palign, \
desc: feeder ## _desc, \
data: pdata, \