ACPICA: Global event handler

The global event handler is called whenever a general purpose
or fixed ACPI event occurs.

Also update Linux OSL to collect events counter with
global event handler.

Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Esse commit está contido em:
Lin Ming
2010-12-13 13:39:26 +08:00
commit de Len Brown
commit a0fcdb237f
8 arquivos alterados com 104 adições e 5 exclusões

Ver arquivo

@@ -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)