diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2005-11-20 08:06:59 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-01-03 06:29:17 -0500 |
commit | f87135f56cb266e031f5ec081dfbde7e43f55e80 (patch) | |
tree | c048abae6bb04df53f5d8d7dcffbf2c28bc638ff /include/sound/core.h | |
parent | 6983b7240cd229787c3ee00e663ea94ea649d96a (diff) |
[ALSA] dynamic minors (3/6): store device-specific object pointers dynamically
Instead of storing the pointers to the device-specific structures in an
array, put them into the struct snd_minor, and look them up dynamically.
This makes the device type modules independent of the minor number
encoding.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Diffstat (limited to 'include/sound/core.h')
-rw-r--r-- | include/sound/core.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/sound/core.h b/include/sound/core.h index 67b0a7e764e7..90ac6132ea3b 100644 --- a/include/sound/core.h +++ b/include/sound/core.h | |||
@@ -187,6 +187,7 @@ struct snd_minor { | |||
187 | int card; /* card number */ | 187 | int card; /* card number */ |
188 | int device; /* device number */ | 188 | int device; /* device number */ |
189 | struct file_operations *f_ops; /* file operations */ | 189 | struct file_operations *f_ops; /* file operations */ |
190 | void *private_data; /* private data for f_ops->open */ | ||
190 | char name[0]; /* device name (keep at the end of | 191 | char name[0]; /* device name (keep at the end of |
191 | structure) */ | 192 | structure) */ |
192 | }; | 193 | }; |
@@ -199,13 +200,17 @@ extern int snd_ecards_limit; | |||
199 | void snd_request_card(int card); | 200 | void snd_request_card(int card); |
200 | 201 | ||
201 | int snd_register_device(int type, struct snd_card *card, int dev, | 202 | int snd_register_device(int type, struct snd_card *card, int dev, |
202 | struct file_operations *f_ops, const char *name); | 203 | struct file_operations *f_ops, void *private_data, |
204 | const char *name); | ||
203 | int snd_unregister_device(int type, struct snd_card *card, int dev); | 205 | int snd_unregister_device(int type, struct snd_card *card, int dev); |
206 | void *snd_lookup_minor_data(unsigned int minor, int type); | ||
204 | 207 | ||
205 | #ifdef CONFIG_SND_OSSEMUL | 208 | #ifdef CONFIG_SND_OSSEMUL |
206 | int snd_register_oss_device(int type, struct snd_card *card, int dev, | 209 | int snd_register_oss_device(int type, struct snd_card *card, int dev, |
207 | struct file_operations *f_ops, const char *name); | 210 | struct file_operations *f_ops, void *private_data, |
211 | const char *name); | ||
208 | int snd_unregister_oss_device(int type, struct snd_card *card, int dev); | 212 | int snd_unregister_oss_device(int type, struct snd_card *card, int dev); |
213 | void *snd_lookup_oss_minor_data(unsigned int minor, int type); | ||
209 | #endif | 214 | #endif |
210 | 215 | ||
211 | int snd_minor_info_init(void); | 216 | int snd_minor_info_init(void); |