Enable re-use of singleton, but closed IRQ session

Fix #784
This commit is contained in:
Stefan Kalkowski 2013-06-26 14:25:45 +02:00
parent 664d0036c8
commit 770157fea0
2 changed files with 9 additions and 5 deletions

View File

@ -170,7 +170,7 @@ Irq_session_component::Irq_session_component(Cap_session *cap_session,
PERR("Unavailable IRQ %lx requested", irq_number);
throw Root::Invalid_args();
}
long irq_trigger = Arg_string::find_arg(args, "irq_trigger").long_value(-1);
irq_trigger = irq_trigger == -1 ? 0 : irq_trigger;
@ -216,10 +216,8 @@ void Irq_session_component::wait_for_irq()
}
Irq_session_component::~Irq_session_component()
{
PERR("Implement me, immediately!");
}
Irq_session_component::~Irq_session_component() {
_proxy->remove_sharer(); }
/***************************************

View File

@ -196,6 +196,12 @@ class Genode::Irq_proxy : public THREAD,
return true;
}
virtual void remove_sharer()
{
Lock::Guard lock_guard(_mutex);
--_num_sharers;
}
template <typename PROXY>
static PROXY *get_irq_proxy(long irq_number, Range_allocator *irq_alloc = 0)
{