提交 79cb3803 编写于 作者: B Bartlomiej Zolnierkiewicz

ide: allow device drivers to specify per-device type /proc settings

Turn ide_driver_t's 'proc' field into ->proc_entries method
(and also 'settings' field into ->proc_devsets method).  Then
update all device drivers accordingly.

There should be no functional changes caused by this patch.
Acked-by: NBorislav Petkov <petkovbb@gmail.com>
Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
上级 9a6eb74d
...@@ -1908,6 +1908,16 @@ static const struct ide_proc_devset idecd_settings[] = { ...@@ -1908,6 +1908,16 @@ static const struct ide_proc_devset idecd_settings[] = {
IDE_PROC_DEVSET(dsc_overlap, 0, 1), IDE_PROC_DEVSET(dsc_overlap, 0, 1),
{ 0 }, { 0 },
}; };
static ide_proc_entry_t *ide_cd_proc_entries(ide_drive_t *drive)
{
return idecd_proc;
}
static const struct ide_proc_devset *ide_cd_proc_devsets(ide_drive_t *drive)
{
return idecd_settings;
}
#endif #endif
static const struct cd_list_entry ide_cd_quirks_list[] = { static const struct cd_list_entry ide_cd_quirks_list[] = {
...@@ -2069,8 +2079,8 @@ static ide_driver_t ide_cdrom_driver = { ...@@ -2069,8 +2079,8 @@ static ide_driver_t ide_cdrom_driver = {
.end_request = ide_end_request, .end_request = ide_end_request,
.error = __ide_error, .error = __ide_error,
#ifdef CONFIG_IDE_PROC_FS #ifdef CONFIG_IDE_PROC_FS
.proc = idecd_proc, .proc_entries = ide_cd_proc_entries,
.settings = idecd_settings, .proc_devsets = ide_cd_proc_devsets,
#endif #endif
}; };
......
...@@ -77,6 +77,18 @@ static void ide_disk_release(struct kref *kref) ...@@ -77,6 +77,18 @@ static void ide_disk_release(struct kref *kref)
kfree(idkp); kfree(idkp);
} }
#ifdef CONFIG_IDE_PROC_FS
static ide_proc_entry_t *ide_floppy_proc_entries(ide_drive_t *drive)
{
return ide_floppy_proc;
}
static const struct ide_proc_devset *ide_floppy_proc_devsets(ide_drive_t *drive)
{
return ide_floppy_settings;
}
#endif
static ide_driver_t ide_gd_driver = { static ide_driver_t ide_gd_driver = {
.gen_driver = { .gen_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -90,8 +102,8 @@ static ide_driver_t ide_gd_driver = { ...@@ -90,8 +102,8 @@ static ide_driver_t ide_gd_driver = {
.end_request = ide_floppy_end_request, .end_request = ide_floppy_end_request,
.error = __ide_error, .error = __ide_error,
#ifdef CONFIG_IDE_PROC_FS #ifdef CONFIG_IDE_PROC_FS
.proc = ide_floppy_proc, .proc_entries = ide_floppy_proc_entries,
.settings = ide_floppy_settings, .proc_devsets = ide_floppy_proc_devsets,
#endif #endif
}; };
......
...@@ -119,6 +119,18 @@ static void ide_gd_shutdown(ide_drive_t *drive) ...@@ -119,6 +119,18 @@ static void ide_gd_shutdown(ide_drive_t *drive)
drive->gendev.bus->suspend(&drive->gendev, PMSG_SUSPEND); drive->gendev.bus->suspend(&drive->gendev, PMSG_SUSPEND);
} }
#ifdef CONFIG_IDE_PROC_FS
static ide_proc_entry_t *ide_disk_proc_entries(ide_drive_t *drive)
{
return ide_disk_proc;
}
static const struct ide_proc_devset *ide_disk_proc_devsets(ide_drive_t *drive)
{
return ide_disk_settings;
}
#endif
static ide_driver_t ide_gd_driver = { static ide_driver_t ide_gd_driver = {
.gen_driver = { .gen_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -134,8 +146,8 @@ static ide_driver_t ide_gd_driver = { ...@@ -134,8 +146,8 @@ static ide_driver_t ide_gd_driver = {
.end_request = ide_end_request, .end_request = ide_end_request,
.error = __ide_error, .error = __ide_error,
#ifdef CONFIG_IDE_PROC_FS #ifdef CONFIG_IDE_PROC_FS
.proc = ide_disk_proc, .proc_entries = ide_disk_proc_entries,
.settings = ide_disk_settings, .proc_devsets = ide_disk_proc_devsets,
#endif #endif
}; };
......
...@@ -567,10 +567,10 @@ static void ide_remove_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t ...@@ -567,10 +567,10 @@ static void ide_remove_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t
void ide_proc_register_driver(ide_drive_t *drive, ide_driver_t *driver) void ide_proc_register_driver(ide_drive_t *drive, ide_driver_t *driver)
{ {
mutex_lock(&ide_setting_mtx); mutex_lock(&ide_setting_mtx);
drive->settings = driver->settings; drive->settings = driver->proc_devsets(drive);
mutex_unlock(&ide_setting_mtx); mutex_unlock(&ide_setting_mtx);
ide_add_proc_entries(drive->proc, driver->proc, drive); ide_add_proc_entries(drive->proc, driver->proc_entries(drive), drive);
} }
EXPORT_SYMBOL(ide_proc_register_driver); EXPORT_SYMBOL(ide_proc_register_driver);
...@@ -591,7 +591,7 @@ void ide_proc_unregister_driver(ide_drive_t *drive, ide_driver_t *driver) ...@@ -591,7 +591,7 @@ void ide_proc_unregister_driver(ide_drive_t *drive, ide_driver_t *driver)
{ {
unsigned long flags; unsigned long flags;
ide_remove_proc_entries(drive->proc, driver->proc); ide_remove_proc_entries(drive->proc, driver->proc_entries(drive));
mutex_lock(&ide_setting_mtx); mutex_lock(&ide_setting_mtx);
spin_lock_irqsave(&ide_lock, flags); spin_lock_irqsave(&ide_lock, flags);
......
...@@ -2298,6 +2298,16 @@ static ide_proc_entry_t idetape_proc[] = { ...@@ -2298,6 +2298,16 @@ static ide_proc_entry_t idetape_proc[] = {
{ "name", S_IFREG|S_IRUGO, proc_idetape_read_name, NULL }, { "name", S_IFREG|S_IRUGO, proc_idetape_read_name, NULL },
{ NULL, 0, NULL, NULL } { NULL, 0, NULL, NULL }
}; };
static ide_proc_entry_t *ide_tape_proc_entries(ide_drive_t *drive)
{
return idetape_proc;
}
static const struct ide_proc_devset *ide_tape_proc_devsets(ide_drive_t *drive)
{
return idetape_settings;
}
#endif #endif
static int ide_tape_probe(ide_drive_t *); static int ide_tape_probe(ide_drive_t *);
...@@ -2315,8 +2325,8 @@ static ide_driver_t idetape_driver = { ...@@ -2315,8 +2325,8 @@ static ide_driver_t idetape_driver = {
.end_request = idetape_end_request, .end_request = idetape_end_request,
.error = __ide_error, .error = __ide_error,
#ifdef CONFIG_IDE_PROC_FS #ifdef CONFIG_IDE_PROC_FS
.proc = idetape_proc, .proc_entries = ide_tape_proc_entries,
.settings = idetape_settings, .proc_devsets = ide_tape_proc_devsets,
#endif #endif
}; };
......
...@@ -343,6 +343,11 @@ static ide_startstop_t idescsi_do_request (ide_drive_t *drive, struct request *r ...@@ -343,6 +343,11 @@ static ide_startstop_t idescsi_do_request (ide_drive_t *drive, struct request *r
} }
#ifdef CONFIG_IDE_PROC_FS #ifdef CONFIG_IDE_PROC_FS
static ide_proc_entry_t idescsi_proc[] = {
{ "capacity", S_IFREG|S_IRUGO, proc_ide_read_capacity, NULL },
{ NULL, 0, NULL, NULL }
};
#define ide_scsi_devset_get(name, field) \ #define ide_scsi_devset_get(name, field) \
static int get_##name(ide_drive_t *drive) \ static int get_##name(ide_drive_t *drive) \
{ \ { \
...@@ -378,6 +383,16 @@ static const struct ide_proc_devset idescsi_settings[] = { ...@@ -378,6 +383,16 @@ static const struct ide_proc_devset idescsi_settings[] = {
IDE_PROC_DEVSET(transform, 0, 3), IDE_PROC_DEVSET(transform, 0, 3),
{ 0 }, { 0 },
}; };
static ide_proc_entry_t *ide_scsi_proc_entries(ide_drive_t *drive)
{
return idescsi_proc;
}
static const struct ide_proc_devset *ide_scsi_proc_devsets(ide_drive_t *drive)
{
return idescsi_settings;
}
#endif #endif
/* /*
...@@ -419,13 +434,6 @@ static void ide_scsi_remove(ide_drive_t *drive) ...@@ -419,13 +434,6 @@ static void ide_scsi_remove(ide_drive_t *drive)
static int ide_scsi_probe(ide_drive_t *); static int ide_scsi_probe(ide_drive_t *);
#ifdef CONFIG_IDE_PROC_FS
static ide_proc_entry_t idescsi_proc[] = {
{ "capacity", S_IFREG|S_IRUGO, proc_ide_read_capacity, NULL },
{ NULL, 0, NULL, NULL }
};
#endif
static ide_driver_t idescsi_driver = { static ide_driver_t idescsi_driver = {
.gen_driver = { .gen_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -439,8 +447,8 @@ static ide_driver_t idescsi_driver = { ...@@ -439,8 +447,8 @@ static ide_driver_t idescsi_driver = {
.end_request = idescsi_end_request, .end_request = idescsi_end_request,
.error = idescsi_atapi_error, .error = idescsi_atapi_error,
#ifdef CONFIG_IDE_PROC_FS #ifdef CONFIG_IDE_PROC_FS
.proc = idescsi_proc, .proc_entries = ide_scsi_proc_entries,
.settings = idescsi_settings, .proc_devsets = ide_scsi_proc_devsets,
#endif #endif
}; };
......
...@@ -1120,8 +1120,8 @@ struct ide_driver_s { ...@@ -1120,8 +1120,8 @@ struct ide_driver_s {
void (*resume)(ide_drive_t *); void (*resume)(ide_drive_t *);
void (*shutdown)(ide_drive_t *); void (*shutdown)(ide_drive_t *);
#ifdef CONFIG_IDE_PROC_FS #ifdef CONFIG_IDE_PROC_FS
ide_proc_entry_t *proc; ide_proc_entry_t * (*proc_entries)(ide_drive_t *);
const struct ide_proc_devset *settings; const struct ide_proc_devset * (*proc_devsets)(ide_drive_t *);
#endif #endif
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册