x86_cpuidle: use module_dependencies rather than get_module()
Signed-off-by: Fredrik Holmqvist <[email protected]>
This commit is contained in:
committed by
Fredrik Holmqvist
parent
be9a02c0db
commit
8073227c1d
@@ -89,11 +89,11 @@ struct acpi_cstate_info {
|
||||
uint8 type;
|
||||
};
|
||||
|
||||
static device_manager_info *sDeviceManager;
|
||||
static acpi_cpuidle_driver_info *acpi_processor[B_MAX_CPU_COUNT];
|
||||
static CpuidleModuleInfo *sIdle;
|
||||
static CpuidleDevice sAcpiDevice;
|
||||
static device_manager_info *sDeviceManager;
|
||||
static acpi_module_info *sAcpi;
|
||||
CpuidleModuleInfo *gIdle;
|
||||
|
||||
|
||||
static status_t
|
||||
@@ -431,20 +431,14 @@ static status_t
|
||||
acpi_cpuidle_init(void)
|
||||
{
|
||||
dprintf("acpi_cpuidle_init\n");
|
||||
if (get_module(B_CPUIDLE_MODULE_NAME, (module_info**)&sIdle) != B_OK)
|
||||
return B_ERROR;
|
||||
if (get_module(B_ACPI_MODULE_NAME, (module_info**)&sAcpi) != B_OK)
|
||||
return B_ERROR;
|
||||
|
||||
for (int32 i = 0; i < smp_get_num_cpus(); i++)
|
||||
if (acpi_cpuidle_setup(acpi_processor[i]) != B_OK)
|
||||
return B_ERROR;
|
||||
|
||||
status_t status = sIdle->AddDevice(&sAcpiDevice);
|
||||
status_t status = gIdle->AddDevice(&sAcpiDevice);
|
||||
if (status == B_OK)
|
||||
dprintf("using acpi idle\n");
|
||||
else
|
||||
put_module(B_CPUIDLE_MODULE_NAME);
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -553,9 +547,6 @@ static void
|
||||
acpi_cpuidle_uninit_driver(void *driverCookie)
|
||||
{
|
||||
dprintf("acpi_cpuidle_uninit_driver");
|
||||
put_module(B_CPUIDLE_MODULE_NAME);
|
||||
if (sAcpi)
|
||||
put_module(B_ACPI_MODULE_NAME);
|
||||
acpi_cpuidle_driver_info *device = (acpi_cpuidle_driver_info *)driverCookie;
|
||||
free(device);
|
||||
}
|
||||
@@ -563,6 +554,8 @@ acpi_cpuidle_uninit_driver(void *driverCookie)
|
||||
|
||||
module_dependency module_dependencies[] = {
|
||||
{ B_DEVICE_MANAGER_MODULE_NAME, (module_info **)&sDeviceManager },
|
||||
{ B_ACPI_MODULE_NAME, (module_info **)&sAcpi},
|
||||
{ B_CPUIDLE_MODULE_NAME, (module_info **)&gIdle },
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
#include "x86_cpuidle.h"
|
||||
|
||||
static CpuidleModuleInfo *sIdle;
|
||||
static CpuidleDevice sIntelDevice;
|
||||
|
||||
static void *kMwaitEax[] = {
|
||||
@@ -82,8 +81,6 @@ status_t
|
||||
intel_cpuidle_init(void)
|
||||
{
|
||||
dprintf("intel idle init\n");
|
||||
if (get_module(B_CPUIDLE_MODULE_NAME, (module_info**)&sIdle) != B_OK)
|
||||
return B_ERROR;
|
||||
cpu_ent *cpu = get_cpu_struct();
|
||||
if (cpu->arch.vendor != VENDOR_INTEL || cpu->arch.family != 6)
|
||||
return B_ERROR;
|
||||
@@ -116,10 +113,8 @@ intel_cpuidle_init(void)
|
||||
kMwaitEax[i];
|
||||
sIntelDevice.cStateCount++;
|
||||
}
|
||||
status_t status = sIdle->AddDevice(&sIntelDevice);
|
||||
status_t status = gIdle->AddDevice(&sIntelDevice);
|
||||
if (status == B_OK)
|
||||
dprintf("using intel idle\n");
|
||||
else
|
||||
put_module(B_CPUIDLE_MODULE_NAME);
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern CpuidleModuleInfo *gIdle;
|
||||
|
||||
static inline void
|
||||
x86_monitor(const void *addr, unsigned long ecx, unsigned long edx)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user