return info;
}
-static struct comedi_file_info *comedi_clear_subdevice_minor(unsigned minor)
-{
- struct comedi_file_info *info;
- unsigned int i = minor - COMEDI_NUM_BOARD_MINORS;
-
- mutex_lock(&comedi_subdevice_minor_table_lock);
- info = comedi_subdevice_minor_table[i];
- comedi_subdevice_minor_table[i] = NULL;
- mutex_unlock(&comedi_subdevice_minor_table_lock);
- return info;
-}
-
static void comedi_free_board_file_info(struct comedi_file_info *info)
{
if (info) {
return info;
}
-static struct comedi_file_info *comedi_file_info_from_minor(unsigned minor)
-{
- if (minor < COMEDI_NUM_BOARD_MINORS)
- return comedi_file_info_from_board_minor(minor);
- else
- return comedi_file_info_from_subdevice_minor(minor);
-}
-
static struct comedi_device *
comedi_dev_from_file_info(struct comedi_file_info *info)
{
return info ? info->device : NULL;
}
+static struct comedi_device *comedi_dev_from_board_minor(unsigned minor)
+{
+ struct comedi_file_info *info;
+
+ info = comedi_file_info_from_board_minor(minor);
+ return comedi_dev_from_file_info(info);
+}
+
+static struct comedi_device *comedi_dev_from_subdevice_minor(unsigned minor)
+{
+ struct comedi_file_info *info;
+
+ info = comedi_file_info_from_subdevice_minor(minor);
+ return comedi_dev_from_file_info(info);
+}
+
struct comedi_device *comedi_dev_from_minor(unsigned minor)
{
- return comedi_dev_from_file_info(comedi_file_info_from_minor(minor));
+ if (minor < COMEDI_NUM_BOARD_MINORS)
+ return comedi_dev_from_board_minor(minor);
+ else
+ return comedi_dev_from_subdevice_minor(minor);
}
EXPORT_SYMBOL_GPL(comedi_dev_from_minor);
void comedi_free_subdevice_minor(struct comedi_subdevice *s)
{
struct comedi_file_info *info;
+ unsigned int i;
if (s == NULL)
return;
BUG_ON(s->minor >= COMEDI_NUM_MINORS);
BUG_ON(s->minor < COMEDI_NUM_BOARD_MINORS);
- info = comedi_clear_subdevice_minor(s->minor);
+ i = s->minor - COMEDI_NUM_BOARD_MINORS;
+ mutex_lock(&comedi_subdevice_minor_table_lock);
+ info = comedi_subdevice_minor_table[i];
+ comedi_subdevice_minor_table[i] = NULL;
+ mutex_unlock(&comedi_subdevice_minor_table_lock);
if (s->class_dev) {
device_destroy(comedi_class, MKDEV(COMEDI_MAJOR, s->minor));
s->class_dev = NULL;