Commit ec7d9c9c authored by Christoph Hellwig's avatar Christoph Hellwig

ide: replace ->proc_fops with ->proc_show

Just set up the show callback in the tty_operations, and use
proc_create_single_data to create the file without additional
boilerplace code.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 61fb5c04
...@@ -1426,21 +1426,8 @@ static int idecd_capacity_proc_show(struct seq_file *m, void *v) ...@@ -1426,21 +1426,8 @@ static int idecd_capacity_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int idecd_capacity_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, idecd_capacity_proc_show, PDE_DATA(inode));
}
static const struct file_operations idecd_capacity_proc_fops = {
.owner = THIS_MODULE,
.open = idecd_capacity_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static ide_proc_entry_t idecd_proc[] = { static ide_proc_entry_t idecd_proc[] = {
{ "capacity", S_IFREG|S_IRUGO, &idecd_capacity_proc_fops }, { "capacity", S_IFREG|S_IRUGO, idecd_capacity_proc_show },
{} {}
}; };
......
...@@ -52,19 +52,6 @@ static int idedisk_cache_proc_show(struct seq_file *m, void *v) ...@@ -52,19 +52,6 @@ static int idedisk_cache_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int idedisk_cache_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, idedisk_cache_proc_show, PDE_DATA(inode));
}
static const struct file_operations idedisk_cache_proc_fops = {
.owner = THIS_MODULE,
.open = idedisk_cache_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int idedisk_capacity_proc_show(struct seq_file *m, void *v) static int idedisk_capacity_proc_show(struct seq_file *m, void *v)
{ {
ide_drive_t*drive = (ide_drive_t *)m->private; ide_drive_t*drive = (ide_drive_t *)m->private;
...@@ -73,19 +60,6 @@ static int idedisk_capacity_proc_show(struct seq_file *m, void *v) ...@@ -73,19 +60,6 @@ static int idedisk_capacity_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int idedisk_capacity_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, idedisk_capacity_proc_show, PDE_DATA(inode));
}
static const struct file_operations idedisk_capacity_proc_fops = {
.owner = THIS_MODULE,
.open = idedisk_capacity_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int __idedisk_proc_show(struct seq_file *m, ide_drive_t *drive, u8 sub_cmd) static int __idedisk_proc_show(struct seq_file *m, ide_drive_t *drive, u8 sub_cmd)
{ {
u8 *buf; u8 *buf;
...@@ -114,43 +88,17 @@ static int idedisk_sv_proc_show(struct seq_file *m, void *v) ...@@ -114,43 +88,17 @@ static int idedisk_sv_proc_show(struct seq_file *m, void *v)
return __idedisk_proc_show(m, m->private, ATA_SMART_READ_VALUES); return __idedisk_proc_show(m, m->private, ATA_SMART_READ_VALUES);
} }
static int idedisk_sv_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, idedisk_sv_proc_show, PDE_DATA(inode));
}
static const struct file_operations idedisk_sv_proc_fops = {
.owner = THIS_MODULE,
.open = idedisk_sv_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int idedisk_st_proc_show(struct seq_file *m, void *v) static int idedisk_st_proc_show(struct seq_file *m, void *v)
{ {
return __idedisk_proc_show(m, m->private, ATA_SMART_READ_THRESHOLDS); return __idedisk_proc_show(m, m->private, ATA_SMART_READ_THRESHOLDS);
} }
static int idedisk_st_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, idedisk_st_proc_show, PDE_DATA(inode));
}
static const struct file_operations idedisk_st_proc_fops = {
.owner = THIS_MODULE,
.open = idedisk_st_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
ide_proc_entry_t ide_disk_proc[] = { ide_proc_entry_t ide_disk_proc[] = {
{ "cache", S_IFREG|S_IRUGO, &idedisk_cache_proc_fops }, { "cache", S_IFREG|S_IRUGO, idedisk_cache_proc_show },
{ "capacity", S_IFREG|S_IRUGO, &idedisk_capacity_proc_fops }, { "capacity", S_IFREG|S_IRUGO, idedisk_capacity_proc_show },
{ "geometry", S_IFREG|S_IRUGO, &ide_geometry_proc_fops }, { "geometry", S_IFREG|S_IRUGO, ide_geometry_proc_show },
{ "smart_values", S_IFREG|S_IRUSR, &idedisk_sv_proc_fops }, { "smart_values", S_IFREG|S_IRUSR, idedisk_sv_proc_show },
{ "smart_thresholds", S_IFREG|S_IRUSR, &idedisk_st_proc_fops }, { "smart_thresholds", S_IFREG|S_IRUSR, idedisk_st_proc_show },
{} {}
}; };
......
...@@ -14,22 +14,9 @@ static int idefloppy_capacity_proc_show(struct seq_file *m, void *v) ...@@ -14,22 +14,9 @@ static int idefloppy_capacity_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int idefloppy_capacity_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, idefloppy_capacity_proc_show, PDE_DATA(inode));
}
static const struct file_operations idefloppy_capacity_proc_fops = {
.owner = THIS_MODULE,
.open = idefloppy_capacity_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
ide_proc_entry_t ide_floppy_proc[] = { ide_proc_entry_t ide_floppy_proc[] = {
{ "capacity", S_IFREG|S_IRUGO, &idefloppy_capacity_proc_fops }, { "capacity", S_IFREG|S_IRUGO, idefloppy_capacity_proc_show },
{ "geometry", S_IFREG|S_IRUGO, &ide_geometry_proc_fops }, { "geometry", S_IFREG|S_IRUGO, ide_geometry_proc_show },
{} {}
}; };
......
...@@ -56,19 +56,6 @@ static int ide_imodel_proc_show(struct seq_file *m, void *v) ...@@ -56,19 +56,6 @@ static int ide_imodel_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int ide_imodel_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ide_imodel_proc_show, PDE_DATA(inode));
}
static const struct file_operations ide_imodel_proc_fops = {
.owner = THIS_MODULE,
.open = ide_imodel_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int ide_mate_proc_show(struct seq_file *m, void *v) static int ide_mate_proc_show(struct seq_file *m, void *v)
{ {
ide_hwif_t *hwif = (ide_hwif_t *) m->private; ide_hwif_t *hwif = (ide_hwif_t *) m->private;
...@@ -80,19 +67,6 @@ static int ide_mate_proc_show(struct seq_file *m, void *v) ...@@ -80,19 +67,6 @@ static int ide_mate_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int ide_mate_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ide_mate_proc_show, PDE_DATA(inode));
}
static const struct file_operations ide_mate_proc_fops = {
.owner = THIS_MODULE,
.open = ide_mate_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int ide_channel_proc_show(struct seq_file *m, void *v) static int ide_channel_proc_show(struct seq_file *m, void *v)
{ {
ide_hwif_t *hwif = (ide_hwif_t *) m->private; ide_hwif_t *hwif = (ide_hwif_t *) m->private;
...@@ -101,19 +75,6 @@ static int ide_channel_proc_show(struct seq_file *m, void *v) ...@@ -101,19 +75,6 @@ static int ide_channel_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int ide_channel_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ide_channel_proc_show, PDE_DATA(inode));
}
static const struct file_operations ide_channel_proc_fops = {
.owner = THIS_MODULE,
.open = ide_channel_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int ide_identify_proc_show(struct seq_file *m, void *v) static int ide_identify_proc_show(struct seq_file *m, void *v)
{ {
ide_drive_t *drive = (ide_drive_t *)m->private; ide_drive_t *drive = (ide_drive_t *)m->private;
...@@ -141,19 +102,6 @@ static int ide_identify_proc_show(struct seq_file *m, void *v) ...@@ -141,19 +102,6 @@ static int ide_identify_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int ide_identify_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ide_identify_proc_show, PDE_DATA(inode));
}
static const struct file_operations ide_identify_proc_fops = {
.owner = THIS_MODULE,
.open = ide_identify_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
/** /**
* ide_find_setting - find a specific setting * ide_find_setting - find a specific setting
* @st: setting table pointer * @st: setting table pointer
...@@ -441,27 +389,14 @@ static const struct file_operations ide_settings_proc_fops = { ...@@ -441,27 +389,14 @@ static const struct file_operations ide_settings_proc_fops = {
.write = ide_settings_proc_write, .write = ide_settings_proc_write,
}; };
static int ide_capacity_proc_show(struct seq_file *m, void *v) int ide_capacity_proc_show(struct seq_file *m, void *v)
{ {
seq_printf(m, "%llu\n", (long long)0x7fffffff); seq_printf(m, "%llu\n", (long long)0x7fffffff);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(ide_capacity_proc_show);
static int ide_capacity_proc_open(struct inode *inode, struct file *file) int ide_geometry_proc_show(struct seq_file *m, void *v)
{
return single_open(file, ide_capacity_proc_show, NULL);
}
const struct file_operations ide_capacity_proc_fops = {
.owner = THIS_MODULE,
.open = ide_capacity_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
EXPORT_SYMBOL_GPL(ide_capacity_proc_fops);
static int ide_geometry_proc_show(struct seq_file *m, void *v)
{ {
ide_drive_t *drive = (ide_drive_t *) m->private; ide_drive_t *drive = (ide_drive_t *) m->private;
...@@ -471,20 +406,7 @@ static int ide_geometry_proc_show(struct seq_file *m, void *v) ...@@ -471,20 +406,7 @@ static int ide_geometry_proc_show(struct seq_file *m, void *v)
drive->bios_cyl, drive->bios_head, drive->bios_sect); drive->bios_cyl, drive->bios_head, drive->bios_sect);
return 0; return 0;
} }
EXPORT_SYMBOL(ide_geometry_proc_show);
static int ide_geometry_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ide_geometry_proc_show, PDE_DATA(inode));
}
const struct file_operations ide_geometry_proc_fops = {
.owner = THIS_MODULE,
.open = ide_geometry_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
EXPORT_SYMBOL(ide_geometry_proc_fops);
static int ide_dmodel_proc_show(struct seq_file *seq, void *v) static int ide_dmodel_proc_show(struct seq_file *seq, void *v)
{ {
...@@ -495,19 +417,6 @@ static int ide_dmodel_proc_show(struct seq_file *seq, void *v) ...@@ -495,19 +417,6 @@ static int ide_dmodel_proc_show(struct seq_file *seq, void *v)
return 0; return 0;
} }
static int ide_dmodel_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ide_dmodel_proc_show, PDE_DATA(inode));
}
static const struct file_operations ide_dmodel_proc_fops = {
.owner = THIS_MODULE,
.open = ide_dmodel_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int ide_driver_proc_show(struct seq_file *m, void *v) static int ide_driver_proc_show(struct seq_file *m, void *v)
{ {
ide_drive_t *drive = (ide_drive_t *)m->private; ide_drive_t *drive = (ide_drive_t *)m->private;
...@@ -523,19 +432,6 @@ static int ide_driver_proc_show(struct seq_file *m, void *v) ...@@ -523,19 +432,6 @@ static int ide_driver_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int ide_driver_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ide_driver_proc_show, PDE_DATA(inode));
}
static const struct file_operations ide_driver_proc_fops = {
.owner = THIS_MODULE,
.open = ide_driver_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int ide_media_proc_show(struct seq_file *m, void *v) static int ide_media_proc_show(struct seq_file *m, void *v)
{ {
ide_drive_t *drive = (ide_drive_t *) m->private; ide_drive_t *drive = (ide_drive_t *) m->private;
...@@ -567,11 +463,10 @@ static const struct file_operations ide_media_proc_fops = { ...@@ -567,11 +463,10 @@ static const struct file_operations ide_media_proc_fops = {
}; };
static ide_proc_entry_t generic_drive_entries[] = { static ide_proc_entry_t generic_drive_entries[] = {
{ "driver", S_IFREG|S_IRUGO, &ide_driver_proc_fops }, { "driver", S_IFREG|S_IRUGO, ide_driver_proc_show },
{ "identify", S_IFREG|S_IRUSR, &ide_identify_proc_fops}, { "identify", S_IFREG|S_IRUSR, ide_identify_proc_show },
{ "media", S_IFREG|S_IRUGO, &ide_media_proc_fops }, { "media", S_IFREG|S_IRUGO, ide_media_proc_show },
{ "model", S_IFREG|S_IRUGO, &ide_dmodel_proc_fops }, { "model", S_IFREG|S_IRUGO, ide_dmodel_proc_show },
{ "settings", S_IFREG|S_IRUSR|S_IWUSR, &ide_settings_proc_fops},
{} {}
}; };
...@@ -582,7 +477,7 @@ static void ide_add_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p ...@@ -582,7 +477,7 @@ static void ide_add_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p
if (!dir || !p) if (!dir || !p)
return; return;
while (p->name != NULL) { while (p->name != NULL) {
ent = proc_create_data(p->name, p->mode, dir, p->proc_fops, data); ent = proc_create_single_data(p->name, p->mode, dir, p->show, data);
if (!ent) return; if (!ent) return;
p++; p++;
} }
...@@ -647,8 +542,12 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif) ...@@ -647,8 +542,12 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif)
continue; continue;
drive->proc = proc_mkdir(drive->name, parent); drive->proc = proc_mkdir(drive->name, parent);
if (drive->proc) if (drive->proc) {
ide_add_proc_entries(drive->proc, generic_drive_entries, drive); ide_add_proc_entries(drive->proc, generic_drive_entries, drive);
proc_create_data("setting", S_IFREG|S_IRUSR|S_IWUSR,
drive->proc, &ide_settings_proc_fops,
drive);
}
sprintf(name, "ide%d/%s", (drive->name[2]-'a')/2, drive->name); sprintf(name, "ide%d/%s", (drive->name[2]-'a')/2, drive->name);
ent = proc_symlink(drive->name, proc_ide_root, name); ent = proc_symlink(drive->name, proc_ide_root, name);
if (!ent) return; if (!ent) return;
...@@ -658,6 +557,7 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif) ...@@ -658,6 +557,7 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif)
void ide_proc_unregister_device(ide_drive_t *drive) void ide_proc_unregister_device(ide_drive_t *drive)
{ {
if (drive->proc) { if (drive->proc) {
remove_proc_entry("settings", drive->proc);
ide_remove_proc_entries(drive->proc, generic_drive_entries); ide_remove_proc_entries(drive->proc, generic_drive_entries);
remove_proc_entry(drive->name, proc_ide_root); remove_proc_entry(drive->name, proc_ide_root);
remove_proc_entry(drive->name, drive->hwif->proc); remove_proc_entry(drive->name, drive->hwif->proc);
...@@ -666,9 +566,9 @@ void ide_proc_unregister_device(ide_drive_t *drive) ...@@ -666,9 +566,9 @@ void ide_proc_unregister_device(ide_drive_t *drive)
} }
static ide_proc_entry_t hwif_entries[] = { static ide_proc_entry_t hwif_entries[] = {
{ "channel", S_IFREG|S_IRUGO, &ide_channel_proc_fops }, { "channel", S_IFREG|S_IRUGO, ide_channel_proc_show },
{ "mate", S_IFREG|S_IRUGO, &ide_mate_proc_fops }, { "mate", S_IFREG|S_IRUGO, ide_mate_proc_show },
{ "model", S_IFREG|S_IRUGO, &ide_imodel_proc_fops }, { "model", S_IFREG|S_IRUGO, ide_imodel_proc_show },
{} {}
}; };
......
...@@ -1847,22 +1847,9 @@ static int idetape_name_proc_show(struct seq_file *m, void *v) ...@@ -1847,22 +1847,9 @@ static int idetape_name_proc_show(struct seq_file *m, void *v)
return 0; return 0;
} }
static int idetape_name_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, idetape_name_proc_show, PDE_DATA(inode));
}
static const struct file_operations idetape_name_proc_fops = {
.owner = THIS_MODULE,
.open = idetape_name_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static ide_proc_entry_t idetape_proc[] = { static ide_proc_entry_t idetape_proc[] = {
{ "capacity", S_IFREG|S_IRUGO, &ide_capacity_proc_fops }, { "capacity", S_IFREG|S_IRUGO, ide_capacity_proc_show },
{ "name", S_IFREG|S_IRUGO, &idetape_name_proc_fops }, { "name", S_IFREG|S_IRUGO, idetape_name_proc_show },
{} {}
}; };
......
...@@ -961,7 +961,7 @@ __IDE_PROC_DEVSET(_name, _min, _max, NULL, NULL) ...@@ -961,7 +961,7 @@ __IDE_PROC_DEVSET(_name, _min, _max, NULL, NULL)
typedef struct { typedef struct {
const char *name; const char *name;
umode_t mode; umode_t mode;
const struct file_operations *proc_fops; int (*show)(struct seq_file *, void *);
} ide_proc_entry_t; } ide_proc_entry_t;
void proc_ide_create(void); void proc_ide_create(void);
...@@ -973,8 +973,8 @@ void ide_proc_unregister_port(ide_hwif_t *); ...@@ -973,8 +973,8 @@ void ide_proc_unregister_port(ide_hwif_t *);
void ide_proc_register_driver(ide_drive_t *, struct ide_driver *); void ide_proc_register_driver(ide_drive_t *, struct ide_driver *);
void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *); void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *);
extern const struct file_operations ide_capacity_proc_fops; int ide_capacity_proc_show(struct seq_file *m, void *v);
extern const struct file_operations ide_geometry_proc_fops; int ide_geometry_proc_show(struct seq_file *m, void *v);
#else #else
static inline void proc_ide_create(void) { ; } static inline void proc_ide_create(void) { ; }
static inline void proc_ide_destroy(void) { ; } static inline void proc_ide_destroy(void) { ; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment