diff --git a/repos/libports/src/app/acpica/ec.h b/repos/libports/src/app/acpica/ec.h index 3254a8cb0c..943c549bf0 100644 --- a/repos/libports/src/app/acpica/ec.h +++ b/repos/libports/src/app/acpica/ec.h @@ -25,6 +25,7 @@ class Ec : Acpica::Callback { ACPI_HANDLE gpe_block; + Genode::Env &_env; Genode::Allocator &_heap; Acpica::Reportstate * _report; @@ -50,8 +51,10 @@ class Ec : Acpica::Callback { 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 { 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 { static ACPI_STATUS detect(ACPI_HANDLE ec, UINT32, void *m, void **) { Acpica::Main * main = reinterpret_cast(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); diff --git a/repos/libports/src/app/acpica/os.cc b/repos/libports/src/app/acpica/os.cc index 2c494b7e5b..0ae78f1924 100644 --- a/repos/libports/src/app/acpica/os.cc +++ b/repos/libports/src/app/acpica/os.cc @@ -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"); diff --git a/repos/libports/src/app/acpica/reporter.h b/repos/libports/src/app/acpica/reporter.h index 8a4e6ceddd..a355dd6587 100644 --- a/repos/libports/src/app/acpica/reporter.h +++ b/repos/libports/src/app/acpica/reporter.h @@ -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 * s) { _list_sb.insert(s); } void add_notify(Acpica::Callback * f) { _fixed = f; } diff --git a/repos/libports/src/lib/acpica/iomem.cc b/repos/libports/src/lib/acpica/iomem.cc index 107997a4aa..58681b8f35 100644 --- a/repos/libports/src/lib/acpica/iomem.cc +++ b/repos/libports/src/lib/acpica/iomem.cc @@ -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; }); diff --git a/repos/libports/src/lib/acpica/osl.cc b/repos/libports/src/lib/acpica/osl.cc index 6b5711c129..14aa89f139 100644 --- a/repos/libports/src/lib/acpica/osl.cc +++ b/repos/libports/src/lib/acpica/osl.cc @@ -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; }