libmetal
Macros | Typedefs | Functions
Interrupt Handling Interfaces

Macros

#define METAL_IRQ_NOT_HANDLED   0
 
#define METAL_IRQ_HANDLED   1
 

Typedefs

typedef int(* metal_irq_handler) (int irq, void *priv)
 type of interrupt handler More...
 

Functions

int metal_irq_register (int irq, metal_irq_handler irq_handler, struct metal_device *dev, void *drv_id)
 Register interrupt handler for driver ID/device. More...
 
int metal_irq_unregister (int irq, metal_irq_handler irq_handler, struct metal_device *dev, void *drv_id)
 Unregister interrupt handler for driver ID and/or device. More...
 
unsigned int metal_irq_save_disable (void)
 disable interrupts More...
 
void metal_irq_restore_enable (unsigned int flags)
 restore interrupts to their previous state More...
 
void metal_irq_enable (unsigned int vector)
 metal_irq_enable More...
 
void metal_irq_disable (unsigned int vector)
 metal_irq_disable More...
 

Detailed Description

Macro Definition Documentation

◆ METAL_IRQ_HANDLED

#define METAL_IRQ_HANDLED   1

◆ METAL_IRQ_NOT_HANDLED

#define METAL_IRQ_NOT_HANDLED   0

IRQ handled status

Typedef Documentation

◆ metal_irq_handler

typedef int(* metal_irq_handler) (int irq, void *priv)

type of interrupt handler

Parameters
[in]irqinterrupt id
[in]privprivate data
Returns
irq handled status

Function Documentation

◆ metal_irq_disable()

void metal_irq_disable ( unsigned int  vector)

metal_irq_disable

Disables the given interrupt

Parameters
vector- interrupt vector number

◆ metal_irq_enable()

void metal_irq_enable ( unsigned int  vector)

metal_irq_enable

Enables the given interrupt

Parameters
vector- interrupt vector number

◆ metal_irq_register()

int metal_irq_register ( int  irq,
metal_irq_handler  irq_handler,
struct metal_device dev,
void *  drv_id 
)

Register interrupt handler for driver ID/device.

Parameters
[in]irqinterrupt id
[in]irq_handlerinterrupt handler
[in]devmetal device this irq belongs to (can be NULL).
[in]drv_iddriver id is a unique interrupt handler identifier. It can also be used for driver data.
Returns
0 for success, non-zero on failure

◆ metal_irq_restore_enable()

void metal_irq_restore_enable ( unsigned int  flags)

restore interrupts to their previous state

Parameters
[in]flagsprevious interrupts state

◆ metal_irq_save_disable()

unsigned int metal_irq_save_disable ( void  )

disable interrupts

Returns
interrupts state

◆ metal_irq_unregister()

int metal_irq_unregister ( int  irq,
metal_irq_handler  irq_handler,
struct metal_device dev,
void *  drv_id 
)

Unregister interrupt handler for driver ID and/or device.

        If interrupt handler (hd), driver ID (drv_id) and device (dev)
        are NULL, unregister all handlers for this interrupt.

        If interrupt handler (hd), device (dev) or driver ID (drv_id),
        are not NULL, unregister handlers matching non NULL criterias.
        e.g: when call is made with drv_id and dev non NULL,
        all handlers matching both are unregistered.

        If interrupt is not found, or other criterias not matching,
        return -ENOENT
Parameters
[in]irqinterrupt id
[in]irq_handlerinterrupt handler
[in]devmetal device this irq belongs to
[in]drv_iddriver id. It can be used for driver data.
Returns
0 for success, non-zero on failure