libmetal  latest
softirq.c File Reference
#include <metal/atomic.h>
#include <metal/errno.h>
#include <metal/irq.h>
#include <metal/irq_controller.h>
#include <metal/log.h>
#include <metal/sys.h>
#include <metal/softirq.h>
#include <metal/utilities.h>
#include <string.h>

Macros

#define METAL_SOFTIRQ_NUM   64
 
#define METAL_SOFTIRQ_ARRAY_DECLARE(num)
 

Functions

static void metal_softirq_set_enable (struct metal_irq_controller *cntr, int irq, unsigned int enable)
 
static METAL_IRQ_CONTROLLER_DECLARE (metal_softirq_cntr, METAL_IRQ_ANY, METAL_SOFTIRQ_NUM, NULL, metal_softirq_set_enable, NULL, metal_softirqs)
 
void metal_softirq_set (int irq)
 metal_softirq_set More...
 
int metal_softirq_init (void)
 metal_softirq_init More...
 
int metal_softirq_allocate (int num)
 metal_softirq_allocate More...
 
void metal_softirq_dispatch (void)
 metal_softirq_dispatch More...
 

Variables

static int metal_softirq_avail
 

Macro Definition Documentation

◆ METAL_SOFTIRQ_ARRAY_DECLARE

#define METAL_SOFTIRQ_ARRAY_DECLARE (   num)
Value:
static const int metal_softirq_num = num; \
static struct metal_irq metal_softirqs[num]; \
static atomic_char metal_softirq_pending[num]; \
static atomic_char metal_softirq_enabled[num];
char atomic_char
Definition: atomic.h:20
Libmetal interrupt structure.
Definition: irq_controller.h:60

◆ METAL_SOFTIRQ_NUM

#define METAL_SOFTIRQ_NUM   64

Function Documentation

◆ METAL_IRQ_CONTROLLER_DECLARE()

static METAL_IRQ_CONTROLLER_DECLARE ( metal_softirq_cntr  ,
METAL_IRQ_ANY  ,
METAL_SOFTIRQ_NUM  ,
NULL  ,
metal_softirq_set_enable  ,
NULL  ,
metal_softirqs   
)
static

◆ metal_softirq_set_enable()

static void metal_softirq_set_enable ( struct metal_irq_controller cntr,
int  irq,
unsigned int  enable 
)
static

Variable Documentation

◆ metal_softirq_avail

int metal_softirq_avail
static