Bug fix for plic_get_instance

This commit is contained in:
SHI Bin 2019-03-12 12:29:40 +08:00
parent 1667d0d8b9
commit 36a8db430f
2 changed files with 14 additions and 9 deletions

View File

@ -358,6 +358,15 @@ extern volatile plic_t *const plic;
*/
typedef int (*plic_irq_callback_t)(void *ctx);
/**
* @brief Definitions for IRQ table instance
*/
typedef struct _plic_instance_t
{
plic_irq_callback_t callback;
void *ctx;
} plic_instance_t;
/**
* @brief Initialize PLIC external interrupt
*
@ -467,11 +476,13 @@ void plic_irq_deregister(plic_irq_t irq);
void plic_irq_unregister(plic_irq_t irq);
/**
* @brief Get IRQ table
* @brief Get IRQ table, Usage:
* plic_instance_t (*plic_instance)[IRQN_MAX] = plic_get_instance();
* ... plic_instance[x][y] ...;
*
* @return the point of IRQ table
*/
plic_instance_t * plic_get_instance(void);
plic_instance_t (*plic_get_instance(void))[IRQN_MAX];
/* For c++ compatibility */
#ifdef __cplusplus

View File

@ -21,12 +21,6 @@
volatile plic_t* const plic = (volatile plic_t*)PLIC_BASE_ADDR;
typedef struct _plic_instance_t
{
plic_irq_callback_t callback;
void *ctx;
} plic_instance_t;
static plic_instance_t plic_instance[PLIC_NUM_CORES][IRQN_MAX];
void plic_init(void)
@ -161,7 +155,7 @@ void plic_irq_unregister(plic_irq_t irq)
void __attribute__((weak, alias("plic_irq_unregister"))) plic_irq_deregister(plic_irq_t irq);
plic_instance_t * plic_get_instance(void)
plic_instance_t (*plic_get_instance(void))[IRQN_MAX]
{
return plic_instance;
}