base-hw: ack thread capability on construction

Fixes #3982
This commit is contained in:
Alexander Boettcher 2021-01-06 15:54:44 +01:00 committed by Norman Feske
parent 2d21d04c76
commit 2b0170fb6a

View File

@ -46,12 +46,15 @@ void prepare_init_main_thread()
*/
Native_utcb * utcb = Thread::myself()->utcb();
_parent_cap = Capability_space::import(utcb->cap_get(Native_utcb::PARENT));
Kernel::ack_cap(Capability_space::capid(_parent_cap));
Untyped_capability ds_cap =
Capability_space::import(utcb->cap_get(Native_utcb::UTCB_DATASPACE));
_main_thread_utcb_ds = reinterpret_cap_cast<Ram_dataspace>(ds_cap);
Kernel::ack_cap(Capability_space::capid(_main_thread_utcb_ds));
_main_thread_cap = Capability_space::import(utcb->cap_get(Native_utcb::THREAD_MYSELF));
Kernel::ack_cap(Capability_space::capid(_main_thread_cap));
}
@ -83,4 +86,6 @@ void Thread::_thread_bootstrap()
{
Kernel::capid_t capid = myself()->utcb()->cap_get(Native_utcb::THREAD_MYSELF);
native_thread().cap = Capability_space::import(capid);
if (native_thread().cap.valid())
Kernel::ack_cap(Capability_space::capid(native_thread().cap));
}