: ACPI: duplicate ACPI "info" attribute in sysfs
Subsystems (2)
PATCH 6/6 : ACPI: duplicate ACPI "info" attribute in sysfs
From: Zhang Rui <[email protected]>
Add "info" attribute to indicates ACPICA version. /proc/acpi/info is deprecated by /sys/firmware/acpi/info.
--- drivers/acpi/Kconfig | 3 ++- drivers/acpi/system.c | 48 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 6 deletions(-)
drivers/acpi/system.c +43 -5
@@ -29,6 +29,7 @@#include <asm/uaccess.h> #include <acpi/acpi_drivers.h> +#include <acpi/acpi_bus.h> #define _COMPONENT ACPI_SYSTEM_COMPONENTACPI_MODULE_NAME ("acpi_system" )
@@ -42,8 +43,32 @@ ACPI_MODULE_NAME("acpi_system")extern struct fadt_descriptor acpi_fadt;/* -------------------------------------------------------------------------- +FS Interface (/sys) +-------------------------------------------------------------------------- */ +extern struct subsystem acpi_subsys; + +static ssize_t info_show (struct subsystem *subsys,char *buf) +{ +return sprintf (buf,"version: %x\n" ,ACPI_CA_VERSION ); +} + +static struct subsys_attribute info_attr = { + .attr = { + .name =__stringify (info), + .mode =0444 , + }, + .show = info_show, + .store =NULL , +}; + +static int acpi_system_info_add_sysfs (void ) +{ +return sysfs_create_file (&acpi_subsys.kset.kobj, &info_attr.attr); +} +/* -------------------------------------------------------------------------- FS Interface (/proc) -------------------------------------------------------------------------- */ +#ifdef CONFIG_ACPI_PROCFS static int acpi_system_read_info (struct seq_file *seq,void *offset) {
@@ -63,6 +88,7 @@ static const struct file_operations acpi .llseek = seq_lseek, .release = single_release, }; +#endif static ssize_t acpi_system_read_dsdt (struct file *,char __user *,size_t ,loff_t *);
@@ -118,16 +144,13 @@ acpi_system_read_fadt(struct file *file,return res; } -static int __init acpi_system_init (void ) +static int acpi_system_procfs_init (void ) {struct proc_dir_entry *entry;int error =0 ;char *name; - -if (acpi_disabled) -return 0 ; - +#ifdef CONFIG_ACPI_PROCFS /* 'info' [R] */ name =ACPI_SYSTEM_FILE_INFO ; entry =create_proc_entry (name,S_IRUGO , acpi_root_dir);
@@ -136,6 +159,7 @@ static int __init acpi_system_init(void) else { entry->proc_fops = &acpi_system_info_ops; } +#endif /* 'dsdt' [R] */ name =ACPI_SYSTEM_FILE_DSDT ;
@@ -165,4 +189,18 @@ static int __init acpi_system_init(void) goto Done; } +static int __init acpi_system_init (void ) { +int result; + +if (acpi_disabled) +return 0 ; + + result =acpi_system_info_add_sysfs (); +if (result) +return result; + + result =acpi_system_procfs_init (); + +return result; +}subsys_initcall (acpi_system_init);
drivers/acpi/Kconfig +2 -1
@@ -78,7 +78,8 @@ config ACPI_PROCFS /proc/acpi/sleep is deprecated by /sys/power/state. /proc/acpi/alarm is deprecated by /sys/power/alarm. /proc/acpi/wakeup is deprecated by - /sys/devices/acpi_system/.../device/sleep_state && wakeup. ) + /sys/devices/acpi_system/.../device/sleep_state && wakeup. + /proc/acpi/info is deprecated by /sys/firmware/acpi/info. ) config ACPI_AC tristate "AC Adapter"
drivers/acpi/system.c ACPI_MODULE_NAME("acpi_system") · line 62
Quoted 8 lines · Zhang Rui
drivers/acpi/system.c +8
-0+static struct subsys_attribute info_attr = { + .attr = { + .name =__stringify (info), + .mode =0444 , + }, + .show = info_show, + .store =NULL , +};
Please don't expand __ATTR_RO(info) by hand; notice what your manual version omitted, for one thing ...
Hi!
drivers/acpi/system.c ACPI_MODULE_NAME("acpi_system") · line 53
Quoted 10 lines
/* --------------------------------------------------------------------------
drivers/acpi/system.c +8
-0+FS Interface (/sys) +-------------------------------------------------------------------------- */ +extern struct subsystem acpi_subsys; + +static ssize_t info_show (struct subsystem *subsys,char *buf) +{ +return sprintf (buf,"version: %x\n" ,ACPI_CA_VERSION ); +}
One value per file... so it should omit "version: " string at the very least.
Plus I do not think we should have this file at all. ACPI is pretty much in sync with kernel these days, and we do not have
/sys/scsi/scsi_core version nor /sys/vm/vm_internals_version etc.
Pavel
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
PATCH 3/3 : ACPI: add ACPICA version in sysfs
In reply to Zhang RuiFrom: Zhang Rui <[email protected]>
Add an ACPI attribute to indicate ACPICA version. /proc/acpi/version is deprecated by /sys/firmware/acpi/info.
--- drivers/acpi/Kconfig | 3 ++- drivers/acpi/system.c | 43 +++++++++++++++++++++++++++++++++++++------ include/acpi/acpi_bus.h | 7 +++++++ 3 files changed, 46 insertions(+), 7 deletions(-)
drivers/acpi/system.c +37 -6
@@ -29,6 +29,7 @@#include <asm/uaccess.h> #include <acpi/acpi_drivers.h> +#include <acpi/acpi_bus.h> #define _COMPONENT ACPI_SYSTEM_COMPONENTACPI_MODULE_NAME ("acpi_system" )
@@ -42,8 +43,24 @@ ACPI_MODULE_NAME("acpi_system")extern struct fadt_descriptor acpi_fadt;/* -------------------------------------------------------------------------- +FS Interface (/sys) +-------------------------------------------------------------------------- */ +extern struct subsystem acpi_subsys; + +static ssize_t version_show (struct subsystem *subsys,char *buf) +{ +return sprintf (buf,"%x\n" ,ACPI_CA_VERSION ); +} +acpi_ro_attr (version); + +static int acpi_system_info_add_sysfs (void ) +{ +return sysfs_create_file (&acpi_subsys.kset.kobj, &version_attr.attr); +} +/* -------------------------------------------------------------------------- FS Interface (/proc) -------------------------------------------------------------------------- */ +#ifdef CONFIG_ACPI_PROCFS static int acpi_system_read_info (struct seq_file *seq,void *offset) {
@@ -63,6 +80,7 @@ static const struct file_operations acpi .llseek = seq_lseek, .release = single_release, }; +#endif static ssize_t acpi_system_read_dsdt (struct file *,char __user *,size_t ,loff_t *);
@@ -118,16 +136,13 @@ acpi_system_read_fadt(struct file *file,return res; } -static int __init acpi_system_init (void ) +static int acpi_system_procfs_init (void ) {struct proc_dir_entry *entry;int error =0 ;char *name; - -if (acpi_disabled) -return 0 ; - +#ifdef CONFIG_ACPI_PROCFS /* 'info' [R] */ name =ACPI_SYSTEM_FILE_INFO ; entry =create_proc_entry (name,S_IRUGO , acpi_root_dir);
@@ -136,6 +151,7 @@ static int __init acpi_system_init(void) else { entry->proc_fops = &acpi_system_info_ops; } +#endif /* 'dsdt' [R] */ name =ACPI_SYSTEM_FILE_DSDT ;
@@ -159,10 +175,25 @@ static int __init acpi_system_init(void) Error:remove_proc_entry (ACPI_SYSTEM_FILE_FADT , acpi_root_dir);remove_proc_entry (ACPI_SYSTEM_FILE_DSDT , acpi_root_dir); +#ifdef CONFIG_ACPI_PROCFS remove_proc_entry (ACPI_SYSTEM_FILE_INFO , acpi_root_dir); - +#endif error = -EFAULT ; goto Done; } +static int __init acpi_system_init (void ) { +int result; + +if (acpi_disabled) +return 0 ; + + result =acpi_system_info_add_sysfs (); +if (result) +return result; + + result =acpi_system_procfs_init (); + +return result; +}subsys_initcall (acpi_system_init);
drivers/acpi/Kconfig +2 -1
@@ -87,7 +87,8 @@ config ACPI_PROCFS and this proc interface will be removed some time later, it's marked as deprecated. ( /proc/acpi/debug_layer && debug_level are deprecated by - /sys/module/acpi/parameters/debug_layer && debug_level. ) + /sys/module/acpi/parameters/debug_layer && debug_level. + /proc/acpi/info is deprecated by /sys/firmware/acpi/version ) config ACPI_AC tristate "AC Adapter"
include/acpi/acpi_bus.h +7 -0
@@ -320,6 +320,13 @@ struct acpi_bus_event {extern struct subsystem acpi_subsys;/* +* This is for ACPI read only data +* Like ACPICA version, ACPI tables, etc. +*/ +#define acpi_ro_attr (_name) \ +static struct subsys_attribute _name##_attr = __ATTR_RO(_name) + +/* * External Functions */
Len Brown
reviewerRe: [PATCH 3/3] [-mm]: ACPI: add ACPICA version in sysfs
How about instead something like this?
module_param(acpica_version, uint, 0444);
unsigned int acpica_version = ACPI_CA_VERSION;
Quoted 148 lines · Zhang Rui
From: Zhang Rui <[email protected]>
Add an ACPI attribute to indicate ACPICA version.
/proc/acpi/versionis deprecated by/sys/firmware/acpi/info.Signed-off-by Zhang Rui <[email protected]>--- drivers/acpi/Kconfig | 3 ++- drivers/acpi/system.c | 43 +++++++++++++++++++++++++++++++++++++------ include/acpi/acpi_bus.h | 7 +++++++ 3 files changed, 46 insertions(+), 7 deletions(-)Index:
linux-2.6.20-rc4-mm1/drivers/acpi/system.c
===================================================================drivers/acpi/system.c +37
-6@@ -29,6 +29,7 @@#include <asm/uaccess.h> #include <acpi/acpi_drivers.h> +#include <acpi/acpi_bus.h> #define _COMPONENT ACPI_SYSTEM_COMPONENTACPI_MODULE_NAME ("acpi_system" )@@ -42,8 +43,24 @@ ACPI_MODULE_NAME("acpi_system")extern struct fadt_descriptor acpi_fadt;/* -------------------------------------------------------------------------- +FS Interface (/sys) +-------------------------------------------------------------------------- */ +extern struct subsystem acpi_subsys; + +static ssize_t version_show (struct subsystem *subsys,char *buf) +{ +return sprintf (buf,"%x\n" ,ACPI_CA_VERSION ); +} +acpi_ro_attr (version); + +static int acpi_system_info_add_sysfs (void ) +{ +return sysfs_create_file (&acpi_subsys.kset.kobj, &version_attr.attr); +} +/* -------------------------------------------------------------------------- FS Interface (/proc) -------------------------------------------------------------------------- */ +#ifdef CONFIG_ACPI_PROCFS static int acpi_system_read_info (struct seq_file *seq,void *offset) {@@ -63,6 +80,7 @@ static const struct file_operations acpi .llseek = seq_lseek, .release = single_release, }; +#endif static ssize_t acpi_system_read_dsdt (struct file *,char __user *,size_t ,loff_t *);@@ -118,16 +136,13 @@ acpi_system_read_fadt(struct file *file,return res; } -static int __init acpi_system_init (void ) +static int acpi_system_procfs_init (void ) {struct proc_dir_entry *entry;int error =0 ;char *name; - -if (acpi_disabled) -return 0 ; - +#ifdef CONFIG_ACPI_PROCFS /* 'info' [R] */ name =ACPI_SYSTEM_FILE_INFO ; entry =create_proc_entry (name,S_IRUGO , acpi_root_dir);@@ -136,6 +151,7 @@ static int __init acpi_system_init(void) else { entry->proc_fops = &acpi_system_info_ops; } +#endif /* 'dsdt' [R] */ name =ACPI_SYSTEM_FILE_DSDT ;@@ -159,10 +175,25 @@ static int __init acpi_system_init(void) Error:remove_proc_entry (ACPI_SYSTEM_FILE_FADT , acpi_root_dir);remove_proc_entry (ACPI_SYSTEM_FILE_DSDT , acpi_root_dir); +#ifdef CONFIG_ACPI_PROCFS remove_proc_entry (ACPI_SYSTEM_FILE_INFO , acpi_root_dir); - +#endif error = -EFAULT ; goto Done; } +static int __init acpi_system_init (void ) { +int result; + +if (acpi_disabled) +return 0 ; + + result =acpi_system_info_add_sysfs (); +if (result) +return result; + + result =acpi_system_procfs_init (); + +return result; +}subsys_initcall (acpi_system_init);Index: linux-2.6.20-rc4-mm1/drivers/acpi/Kconfig
===================================================================drivers/acpi/Kconfig +2
-1@@ -87,7 +87,8 @@ config ACPI_PROCFS and this proc interface will be removed some time later, it's marked as deprecated. ( /proc/acpi/debug_layer && debug_level are deprecated by - /sys/module/acpi/parameters/debug_layer && debug_level. ) + /sys/module/acpi/parameters/debug_layer && debug_level. + /proc/acpi/info is deprecated by /sys/firmware/acpi/version ) config ACPI_AC tristate "AC Adapter"Index:
linux-2.6.20-rc4-mm1/include/acpi/acpi_bus.h
===================================================================include/acpi/acpi_bus.h +7
-1@@ -320,6 +320,13 @@ struct acpi_bus_event {extern struct subsystem acpi_subsys;/* +* This is for ACPI read only data +* Like ACPICA version, ACPI tables, etc. +*/ +#define acpi_ro_attr (_name) \ +static struct subsys_attribute _name##_attr = __ATTR_RO(_name) + +/* * External Functions */ -To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html