]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/io/server/src/irqs.cc
update
[l4.git] / l4 / pkg / io / server / src / irqs.cc
1 #include "irqs.h"
2 #include "main.h"
3
4 int
5 Kernel_irq_pin::unbind()
6 {
7   int err = l4_error(system_icu()->icu->unbind(_idx, irq()));
8   set_shareable(false);
9   return err;
10 }
11
12 int
13 Kernel_irq_pin::bind(L4::Cap<L4::Irq> irq, unsigned mode)
14 {
15   int err = l4_error(system_icu()->icu->bind(_idx, irq));
16
17   // allow sharing if IRQ must be acknowledged via the IRQ object 
18   if (err == 0)
19     set_shareable(true);
20
21   if (err < 0)
22     return err;
23
24   // printf(" IRQ[%x]: mode=%x ... ", n, mode);
25   err = l4_error(system_icu()->icu->set_mode(_idx, mode));
26   // printf("result=%d\n", err);
27
28   return err;
29 }
30
31 int
32 Kernel_irq_pin::unmask()
33 {
34   system_icu()->icu->unmask(_idx);
35   return -L4_EINVAL;
36 }
37