acpica: API transition

Issue #1987
This commit is contained in:
Alexander Boettcher 2017-01-12 10:28:57 +01:00 committed by Norman Feske
parent 703d68c7c1
commit 6b2dcffdac
5 changed files with 33 additions and 22 deletions

View File

@ -25,6 +25,7 @@ class Ec : Acpica::Callback<Ec> {
ACPI_HANDLE gpe_block;
Genode::Env &_env;
Genode::Allocator &_heap;
Acpica::Reportstate * _report;
@ -50,8 +51,10 @@ class Ec : Acpica::Callback<Ec> {
public:
Ec(Genode::Allocator &heap, Acpica::Reportstate *report)
Ec(Genode::Env &env, Genode::Allocator &heap,
Acpica::Reportstate *report)
:
_env(env),
_heap(heap),
_report(report)
{ }
@ -138,11 +141,11 @@ class Ec : Acpica::Callback<Ec> {
if (!ec->ec_data) {
ec->ec_port_data = resource->Data.Io.Minimum;
ec->ec_data = new (ec->_heap) Genode::Io_port_connection(ec->ec_port_data, 1);
ec->ec_data = new (ec->_heap) Genode::Io_port_connection(ec->_env, ec->ec_port_data, 1);
} else
if (!ec->ec_cmdsta) {
ec->ec_port_cmdsta = resource->Data.Io.Minimum;
ec->ec_cmdsta = new (ec->_heap) Genode::Io_port_connection(ec->ec_port_cmdsta, 1);
ec->ec_cmdsta = new (ec->_heap) Genode::Io_port_connection(ec->_env, ec->ec_port_cmdsta, 1);
} else
Genode::error("unknown io_port");
@ -217,7 +220,8 @@ class Ec : Acpica::Callback<Ec> {
static ACPI_STATUS detect(ACPI_HANDLE ec, UINT32, void *m, void **)
{
Acpica::Main * main = reinterpret_cast<Acpica::Main *>(m);
Ec *ec_obj = new (main->heap) Ec(main->heap, main->report);
Ec *ec_obj = new (main->heap) Ec(main->env, main->heap,
main->report);
ACPI_STATUS res = AcpiWalkResources(ec, ACPI_STRING("_CRS"),
Ec::detect_io_ports, ec_obj);

View File

@ -53,10 +53,10 @@ struct Acpica::Statechange
bool _enable_reset;
bool _enable_poweroff;
Statechange(Genode::Entrypoint &ep, bool reset, bool poweroff)
Statechange(Genode::Env &env, bool reset, bool poweroff)
:
_dispatcher(ep, *this, &Statechange::state_changed),
_system_state("system"),
_dispatcher(env.ep(), *this, &Statechange::state_changed),
_system_state(env, "system"),
_enable_reset(reset), _enable_poweroff(poweroff)
{
_system_state.sigh(_dispatcher);
@ -131,7 +131,7 @@ struct Acpica::Main
bool const enable_ready = config.xml().attribute_value("acpi_ready", false);
if (enable_report)
report = new (heap) Acpica::Reportstate();
report = new (heap) Acpica::Reportstate(env);
init_acpica();
@ -139,8 +139,7 @@ struct Acpica::Main
report->enable();
if (enable_reset || enable_poweroff)
new (heap) Acpica::Statechange(env.ep(), enable_reset,
enable_poweroff);
new (heap) Acpica::Statechange(env, enable_reset, enable_poweroff);
/* setup IRQ */
if (!irq_handler.handler) {
@ -148,7 +147,7 @@ struct Acpica::Main
return;
}
sci_conn.construct(irq_handler.irq);
sci_conn.construct(env, irq_handler.irq);
Genode::log("SCI IRQ: ", irq_handler.irq);
@ -159,7 +158,7 @@ struct Acpica::Main
return;
/* we are ready - signal it via changing system state */
static Genode::Reporter _system_rom { "system", "acpi_ready" };
static Genode::Reporter _system_rom(env, "system", "acpi_ready");
_system_rom.enabled(true);
Genode::Reporter::Xml_generator xml(_system_rom, [&] () {
xml.attribute("state", "acpi_ready");

View File

@ -22,11 +22,11 @@ class Acpica::Reportstate {
private:
Genode::Reporter _reporter_lid { "acpi_lid" };
Genode::Reporter _reporter_ac { "acpi_ac" };
Genode::Reporter _reporter_sb { "acpi_battery" };
Genode::Reporter _reporter_ec { "acpi_ec" };
Genode::Reporter _reporter_fix { "acpi_fixed" };
Genode::Reporter _reporter_lid;
Genode::Reporter _reporter_ac;
Genode::Reporter _reporter_sb;
Genode::Reporter _reporter_ec;
Genode::Reporter _reporter_fix;
bool _changed_lid = false;
bool _changed_ac = false;
@ -42,7 +42,14 @@ class Acpica::Reportstate {
public:
Reportstate() { }
Reportstate(Genode::Env &env)
:
_reporter_lid(env, "acpi_lid"),
_reporter_ac (env, "acpi_ac"),
_reporter_sb (env, "acpi_battery"),
_reporter_ec (env, "acpi_ec"),
_reporter_fix(env, "acpi_fixed")
{ }
void add_notify(Acpica::Callback<Battery> * s) { _list_sb.insert(s); }
void add_notify(Acpica::Callback<Fixed> * f) { _fixed = f; }

View File

@ -139,7 +139,8 @@ class Acpica::Io_mem
io_mem._virt = 0;
io_mem._io_mem = new (Acpica::heap())
Genode::Io_mem_connection(io_mem._phys, io_mem._size);
Genode::Io_mem_connection(Acpica::env(), io_mem._phys,
io_mem._size);
return &io_mem;
});

View File

@ -151,7 +151,7 @@ ACPI_STATUS AcpiOsReadPort (ACPI_IO_ADDRESS port, UINT32 *value, UINT32 width)
/* the I/O port may be owned by drivers, which will cause exceptions */
try {
unsigned const bytes = width / 8;
Genode::Io_port_connection io_port(port, bytes);
Genode::Io_port_connection io_port(Acpica::env(), port, bytes);
switch (bytes) {
case 1 :
@ -181,7 +181,7 @@ ACPI_STATUS AcpiOsWritePort (ACPI_IO_ADDRESS port, UINT32 value, UINT32 width)
/* the I/O port may be owned by drivers, which will cause exceptions */
try {
unsigned const bytes = width / 8;
Genode::Io_port_connection io_port(port, bytes);
Genode::Io_port_connection io_port(Acpica::env(), port, bytes);
switch (bytes) {
case 1 :
@ -251,7 +251,7 @@ void AcpiOsSleep (UINT64 sleep_ms)
{
Genode::log(__func__, " ", sleep_ms, " ms");
static Timer::Connection conn;
static Timer::Connection conn(Acpica::env());
conn.msleep(sleep_ms);
return;
}