theCore C++ embedded framework
irq.cpp File Reference

Common IRQ implementation. More...

#include "common/irq.hpp"
#include <ecl/assert.h>
#include <platform/irq.hpp>
#include <common/execution.hpp>
#include <new>
Include dependency graph for irq.cpp:

Namespaces

 ecl
 
 ecl::irq
 

Typedefs

using ecl::handler_storage = std::aligned_storage_t< sizeof(irq::handler_type), alignof(irq::handler_type)>
 Storage type for the IRQ handlers. More...
 

Functions

static void ecl::default_handler ()
 Unhandled interrupt must cause the abort. More...
 
static auto ecl::extract_handlers ()
 Effectively casts IRQ storage. More...
 
 ecl::__attribute__ ((used)) void core_isr()
 Handles IRQ and visible to the startup code. More...
 
void ecl::irq::init_storage ()
 Initializes storage for callbacks and setups default handler for every IRQ. More...
 
void ecl::irq::subscribe (irq_num irqn, const irq::handler_type &handler)
 Subscribes to the given IRQ. More...
 
void ecl::irq::unsubscribe (irq_num irqn)
 Unsubscribes from the given IRQ. More...
 

Variables

static handler_storage ecl::storage [IRQ_COUNT]
 IRQ storage itself. More...
 

Detailed Description

Common IRQ implementation.