diff options
Diffstat (limited to 'drivers/acpi/sysfs.c')
| -rw-r--r-- | drivers/acpi/sysfs.c | 19 | 
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c index f8588f81048..61891e75583 100644 --- a/drivers/acpi/sysfs.c +++ b/drivers/acpi/sysfs.c @@ -438,7 +438,7 @@ static void delete_gpe_attr_array(void)  	return;  } -void acpi_os_gpe_count(u32 gpe_number) +static void gpe_count(u32 gpe_number)  {  	acpi_gpe_count++; @@ -454,7 +454,7 @@ void acpi_os_gpe_count(u32 gpe_number)  	return;  } -void acpi_os_fixed_event_count(u32 event_number) +static void fixed_event_count(u32 event_number)  {  	if (!all_counters)  		return; @@ -468,6 +468,16 @@ void acpi_os_fixed_event_count(u32 event_number)  	return;  } +static void acpi_gbl_event_handler(u32 event_type, acpi_handle device, +	u32 event_number, void *context) +{ +	if (event_type == ACPI_EVENT_TYPE_GPE) +		gpe_count(event_number); + +	if (event_type == ACPI_EVENT_TYPE_FIXED) +		fixed_event_count(event_number); +} +  static int get_status(u32 index, acpi_event_status *status,  		      acpi_handle *handle)  { @@ -601,6 +611,7 @@ end:  void acpi_irq_stats_init(void)  { +	acpi_status status;  	int i;  	if (all_counters) @@ -619,6 +630,10 @@ void acpi_irq_stats_init(void)  	if (all_counters == NULL)  		goto fail; +	status = acpi_install_global_event_handler(acpi_gbl_event_handler, NULL); +	if (ACPI_FAILURE(status)) +		goto fail; +  	counter_attrs = kzalloc(sizeof(struct kobj_attribute) * (num_counters),  				GFP_KERNEL);  	if (counter_attrs == NULL)  |