Interrupts

API for registering and manipulating interrupts.

Typedefs

typedef enum metal_vector_mode_ metal_vector_mode

Possible mode of interrupts to operate.

typedef void (*metal_interrupt_handler_t)(int, void *)

Function signature for interrupt callback handlers.

Enums

enum metal_vector_mode_

Possible mode of interrupts to operate.

Values:

METAL_DIRECT_MODE = 0
METAL_VECTOR_MODE = 1
METAL_SELECTIVE_VECTOR_MODE = 2
METAL_HARDWARE_VECTOR_MODE = 3

Functions

void metal_interrupt_init(struct metal_interrupt *controller)

Initialize a given interrupt controller.

Initialize a given interrupt controller. This function must be called before any interrupts are registered or enabled with the handler. It is invalid to initialize an interrupt controller more than once.

Parameters
  • controller: The handle for the interrupt controller

int metal_interrupt_register_handler(struct metal_interrupt *controller, int id, metal_interrupt_handler_t handler, void *priv_data)

Register an interrupt handler.

Return
0 upon success
Parameters
  • controller: The handle for the interrupt controller
  • id: The interrupt ID to register
  • handler: The interrupt handler callback
  • priv_data: Private data for the interrupt handler

int metal_interrupt_enable(struct metal_interrupt *controller, int id)

Enable an interrupt.

Return
0 upon success
Parameters
  • controller: The handle for the interrupt controller
  • id: The interrupt ID to enable

int metal_interrupt_disable(struct metal_interrupt *controller, int id)

Disable an interrupt.

Return
0 upon success
Parameters
  • controller: The handle for the interrupt controller
  • id: The interrupt ID to disable

int metal_interrupt_vector_enable(struct metal_interrupt *controller, int id, metal_vector_mode mode)

Enable an interrupt vector.

Return
0 upon success
Parameters
  • controller: The handle for the interrupt controller
  • id: The interrupt ID to enable
  • mode: The interrupt mode type to enable

int metal_interrupt_vector_disable(struct metal_interrupt *controller, int id)

Disable an interrupt vector.

Return
0 upon success
Parameters
  • controller: The handle for the interrupt controller
  • id: The interrupt ID to disable

struct metal_interrupt
#include <interrupt.h>

A handle for an interrupt.