L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
examples/libs/libirq/loop.c

libirq usage example using a self-created thread.

libirq usage example using a self-created thread.

/* SPDX-License-Identifier: MIT */
/*
* (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>
*/
#include <l4/irq/irq.h>
#include <l4/util/util.h>
#include <stdio.h>
#include <pthread.h>
enum { IRQ_NO = 17 };
static void isr_handler(void)
{
printf("Got IRQ %d\n", IRQ_NO);
}
static void *isr_thread(void *data)
{
l4irq_t *irq;
(void)data;
if (!(irq = l4irq_attach(IRQ_NO)))
return NULL;
while (1)
{
if (l4irq_wait(irq))
continue;
isr_handler();
}
return NULL;
}
int main(void)
{
pthread_t thread;
if (pthread_create(&thread, NULL, isr_thread, NULL))
return 1;
return 0;
}
l4irq_t * l4irq_attach(int irqnum)
Attach/connect to IRQ.
long l4irq_wait(l4irq_t *irq)
Wait for specified IRQ.
void l4_sleep_forever(void) L4_NOTHROW L4_NORETURN
Go sleep and never wake up.
Definition util.h:85
IRQ handling routines.