1.1 --- a/pkg/landfall-examples/hw_info/hw_info.c Sat May 04 00:28:29 2024 +0200
1.2 +++ b/pkg/landfall-examples/hw_info/hw_info.c Sat May 04 01:27:36 2024 +0200
1.3 @@ -103,6 +103,21 @@
1.4 return 0;
1.5 }
1.6
1.7 +/* Attach ourselves to the interrupt handler. */
1.8 +
1.9 +static int bind_irq(int num, l4_cap_idx_t irq)
1.10 +{
1.11 + long err = l4_error(l4_rcv_ep_bind_thread(irq, l4re_env()->main_thread, num));
1.12 +
1.13 + if (err)
1.14 + {
1.15 + printf("Could not attach to IRQ: %ld\n", err);
1.16 + return 1;
1.17 + }
1.18 +
1.19 + return 0;
1.20 +}
1.21 +
1.22 static const char *delimiters = " \n";
1.23
1.24 static char *read_token(const char *message)
1.25 @@ -934,6 +949,11 @@
1.26 if (init_irq(num, irqcap, i2c_irq_start, i2c_irq_end))
1.27 return;
1.28
1.29 + /* Bind to the IRQ so that we may use it in this program directly. */
1.30 +
1.31 + if (bind_irq(num, irqcap))
1.32 + return;
1.33 +
1.34 i2c_channels[num] = i2c_get_channel(i2c, num);
1.35 i2c_irqs[num] = irqcap;
1.36 }