libmetal
Data Structures | Macros | Functions | Variables
irq.c File Reference

Linux libmetal irq operations. More...

#include <pthread.h>
#include <sched.h>
#include <metal/device.h>
#include <metal/irq.h>
#include <metal/sys.h>
#include <metal/mutex.h>
#include <metal/list.h>
#include <metal/utilities.h>
#include <metal/alloc.h>
#include <sys/time.h>
#include <sys/eventfd.h>
#include <stdint.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <poll.h>

Data Structures

struct  metal_irq_hddesc
 
struct  metal_irqs_state
 

Macros

#define MAX_IRQS   FD_SETSIZE
 
#define METAL_IRQ_STOP   0xFFFFFFFF
 

Functions

int metal_irq_register (int irq, metal_irq_handler hd, struct metal_device *dev, void *drv_id)
 Register interrupt handler for driver ID/device. More...
 
int metal_irq_unregister (int irq, metal_irq_handler hd, struct metal_device *dev, void *drv_id)
 Unregister interrupt handler for driver ID and/or device. More...
 
unsigned int metal_irq_save_disable ()
 disable interrupts More...
 
void metal_irq_restore_enable (unsigned flags)
 
void metal_irq_enable (unsigned int vector)
 metal_irq_enable More...
 
void metal_irq_disable (unsigned int vector)
 metal_irq_disable More...
 
static void * metal_linux_irq_handling (void *args)
 IRQ handler. More...
 
int metal_linux_irq_init ()
 irq handling initialization More...
 
void metal_linux_irq_shutdown ()
 irq handling shutdown More...
 

Variables

struct metal_irqs_state _irqs
 

Detailed Description

Linux libmetal irq operations.

Macro Definition Documentation

◆ MAX_IRQS

#define MAX_IRQS   FD_SETSIZE

maximum number of irqs

◆ METAL_IRQ_STOP

#define METAL_IRQ_STOP   0xFFFFFFFF

stop interrupts handling thread

Function Documentation

◆ metal_irq_restore_enable()

void metal_irq_restore_enable ( unsigned  flags)

◆ metal_linux_irq_handling()

static void* metal_linux_irq_handling ( void *  args)
static

IRQ handler.

Parameters
[in]argsnot used. required for pthread.

< irq handler descriptor

< metal device IRQ belongs to
< flag to indicate if irq is handled

◆ metal_linux_irq_init()

int metal_linux_irq_init ( )

irq handling initialization

Returns
0 on sucess, non-zero on failure

◆ metal_linux_irq_shutdown()

void metal_linux_irq_shutdown ( )

irq handling shutdown

Variable Documentation

◆ _irqs

struct metal_irqs_state _irqs