[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>
diff --git a/include/sound/core.h b/include/sound/core.h
index 67b0a7e..90ac613 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -187,6 +187,7 @@
int card; /* card number */
int device; /* device number */
struct file_operations *f_ops; /* file operations */
+ void *private_data; /* private data for f_ops->open */
char name[0]; /* device name (keep at the end of
structure) */
};
@@ -199,13 +200,17 @@
void snd_request_card(int card);
int snd_register_device(int type, struct snd_card *card, int dev,
- struct file_operations *f_ops, const char *name);
+ struct file_operations *f_ops, void *private_data,
+ const char *name);
int snd_unregister_device(int type, struct snd_card *card, int dev);
+void *snd_lookup_minor_data(unsigned int minor, int type);
#ifdef CONFIG_SND_OSSEMUL
int snd_register_oss_device(int type, struct snd_card *card, int dev,
- struct file_operations *f_ops, const char *name);
+ struct file_operations *f_ops, void *private_data,
+ const char *name);
int snd_unregister_oss_device(int type, struct snd_card *card, int dev);
+void *snd_lookup_oss_minor_data(unsigned int minor, int type);
#endif
int snd_minor_info_init(void);