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 | |
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')
-rw-r--r-- | include/sound/core.h | 9 | ||||
-rw-r--r-- | include/sound/hwdep.h | 1 | ||||
-rw-r--r-- | include/sound/pcm.h | 2 | ||||
-rw-r--r-- | include/sound/rawmidi.h | 6 |
4 files changed, 12 insertions, 6 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); |
diff --git a/include/sound/hwdep.h b/include/sound/hwdep.h index 04b20bc4f144..c679e5b31111 100644 --- a/include/sound/hwdep.h +++ b/include/sound/hwdep.h | |||
@@ -43,6 +43,7 @@ struct snd_hwdep_ops { | |||
43 | 43 | ||
44 | struct snd_hwdep { | 44 | struct snd_hwdep { |
45 | struct snd_card *card; | 45 | struct snd_card *card; |
46 | struct list_head list; | ||
46 | int device; | 47 | int device; |
47 | char id[32]; | 48 | char id[32]; |
48 | char name[80]; | 49 | char name[80]; |
diff --git a/include/sound/pcm.h b/include/sound/pcm.h index 5e29b0e0f214..314268a11048 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h | |||
@@ -412,6 +412,7 @@ struct snd_pcm_str { | |||
412 | 412 | ||
413 | struct snd_pcm { | 413 | struct snd_pcm { |
414 | struct snd_card *card; | 414 | struct snd_card *card; |
415 | struct list_head list; | ||
415 | unsigned int device; /* device number */ | 416 | unsigned int device; /* device number */ |
416 | unsigned int info_flags; | 417 | unsigned int info_flags; |
417 | unsigned short dev_class; | 418 | unsigned short dev_class; |
@@ -439,7 +440,6 @@ struct snd_pcm_notify { | |||
439 | * Registering | 440 | * Registering |
440 | */ | 441 | */ |
441 | 442 | ||
442 | extern struct snd_pcm *snd_pcm_devices[]; | ||
443 | extern struct file_operations snd_pcm_f_ops[2]; | 443 | extern struct file_operations snd_pcm_f_ops[2]; |
444 | 444 | ||
445 | int snd_pcm_new(struct snd_card *card, char *id, int device, | 445 | int snd_pcm_new(struct snd_card *card, char *id, int device, |
diff --git a/include/sound/rawmidi.h b/include/sound/rawmidi.h index 9492a32c1026..d19bddfbf995 100644 --- a/include/sound/rawmidi.h +++ b/include/sound/rawmidi.h | |||
@@ -113,7 +113,7 @@ struct snd_rawmidi_str { | |||
113 | 113 | ||
114 | struct snd_rawmidi { | 114 | struct snd_rawmidi { |
115 | struct snd_card *card; | 115 | struct snd_card *card; |
116 | 116 | struct list_head list; | |
117 | unsigned int device; /* device number */ | 117 | unsigned int device; /* device number */ |
118 | unsigned int info_flags; /* SNDRV_RAWMIDI_INFO_XXXX */ | 118 | unsigned int info_flags; /* SNDRV_RAWMIDI_INFO_XXXX */ |
119 | char id[64]; | 119 | char id[64]; |
@@ -165,8 +165,8 @@ int snd_rawmidi_transmit(struct snd_rawmidi_substream *substream, | |||
165 | /* main midi functions */ | 165 | /* main midi functions */ |
166 | 166 | ||
167 | int snd_rawmidi_info_select(struct snd_card *card, struct snd_rawmidi_info *info); | 167 | int snd_rawmidi_info_select(struct snd_card *card, struct snd_rawmidi_info *info); |
168 | int snd_rawmidi_kernel_open(int cardnum, int device, int subdevice, int mode, | 168 | int snd_rawmidi_kernel_open(struct snd_card *card, int device, int subdevice, |
169 | struct snd_rawmidi_file *rfile); | 169 | int mode, struct snd_rawmidi_file *rfile); |
170 | int snd_rawmidi_kernel_release(struct snd_rawmidi_file *rfile); | 170 | int snd_rawmidi_kernel_release(struct snd_rawmidi_file *rfile); |
171 | int snd_rawmidi_output_params(struct snd_rawmidi_substream *substream, | 171 | int snd_rawmidi_output_params(struct snd_rawmidi_substream *substream, |
172 | struct snd_rawmidi_params *params); | 172 | struct snd_rawmidi_params *params); |