class Irq_muxer : public Kobject_h<Irq_muxer, Irq>, private Irq_chip
{
public:
- unsigned set_mode(Mword, unsigned mode) { return mode; }
- void switch_mode(unsigned)
+ int set_mode(Mword, Irq_chip::Mode) { return 0; }
+ bool is_edge_triggered(Mword) const { return false; }
+ void switch_mode(bool)
{
// the irq object is assumed to be always handled as
// level triggered
L4_snd_item_iter snd_items(utcb, tag.words());
Irq *irq = 0;
- unsigned mode = utcb->values[0] >> 16;
if (tag.items() == 0)
return commit_result(-L4_err::EInval);
if (!irq)
return commit_result(-L4_err::EInval);
- if (mode & Set_irq_mode)
- printf("DEPRECATED SET IRQ MODE\n");
- //pin()->set_mode(mode);
-
irq->unbind();
if (!irq->masked())
PUBLIC
void
-Irq_sender::switch_mode(unsigned mode)
+Irq_sender::switch_mode(bool is_edge_triggered)
{
- if ((mode & Trigger_mask) == Trigger_edge)
- hit_func = &hit_edge_irq;
- else
- hit_func = &hit_level_irq;
+ hit_func = is_edge_triggered ? &hit_edge_irq : &hit_level_irq;
}
PUBLIC
if (tag.items() == 0)
{
// detach
- if (mode & Set_irq_mode)
- printf("DEPRECATED SET IRQ MODE\n");
- //pin()->set_mode(mode);
- else
- {
- free(_irq_thread);
- _irq_id = ~0UL;
- }
+ free(_irq_thread);
+ _irq_id = ~0UL;
return commit_result(0);
}
if (alloc(thread))
{
- if (mode & Set_irq_mode)
- printf("DEPRECATED SET IRQ MODE\n");
_irq_id = utcb->values[1];
return commit_result(0);
}