forked from Imagelibrary/rtems
record: Avoid dependency on object link order
For the application configuration option CONFIGURE_RECORD_INTERRUPTS_ENABLED, define bsp_interrupt_get_dispatch_table_slot() in the application configuration to avoid issues with the object link order within the RTEMS libraries. Enable this option in an associated test. Close #5244.
This commit is contained in:
committed by
Kinsey Moore
parent
b68e31a200
commit
45b1495a8a
@@ -39,7 +39,7 @@
|
|||||||
#include <rtems/record.h>
|
#include <rtems/record.h>
|
||||||
|
|
||||||
/* The regular interrupt entries are registered in this table */
|
/* The regular interrupt entries are registered in this table */
|
||||||
static rtems_interrupt_entry *
|
rtems_interrupt_entry *
|
||||||
_Record_Interrupt_dispatch_table[ BSP_INTERRUPT_DISPATCH_TABLE_SIZE ];
|
_Record_Interrupt_dispatch_table[ BSP_INTERRUPT_DISPATCH_TABLE_SIZE ];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -49,13 +49,6 @@ _Record_Interrupt_dispatch_table[ BSP_INTERRUPT_DISPATCH_TABLE_SIZE ];
|
|||||||
static rtems_interrupt_entry
|
static rtems_interrupt_entry
|
||||||
_Record_Interrupt_entry_table[ BSP_INTERRUPT_DISPATCH_TABLE_SIZE ];
|
_Record_Interrupt_entry_table[ BSP_INTERRUPT_DISPATCH_TABLE_SIZE ];
|
||||||
|
|
||||||
rtems_interrupt_entry **bsp_interrupt_get_dispatch_table_slot(
|
|
||||||
rtems_vector_number index
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return &_Record_Interrupt_dispatch_table[ index ];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void _Record_Interrupt_handler( void *arg )
|
static void _Record_Interrupt_handler( void *arg )
|
||||||
{
|
{
|
||||||
uintptr_t vector;
|
uintptr_t vector;
|
||||||
|
|||||||
@@ -195,6 +195,17 @@ extern "C" {
|
|||||||
);
|
);
|
||||||
|
|
||||||
#ifdef CONFIGURE_RECORD_INTERRUPTS_ENABLED
|
#ifdef CONFIGURE_RECORD_INTERRUPTS_ENABLED
|
||||||
|
rtems_interrupt_entry **bsp_interrupt_get_dispatch_table_slot(
|
||||||
|
rtems_vector_number index
|
||||||
|
);
|
||||||
|
|
||||||
|
rtems_interrupt_entry **bsp_interrupt_get_dispatch_table_slot(
|
||||||
|
rtems_vector_number index
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return &_Record_Interrupt_dispatch_table[ index ];
|
||||||
|
}
|
||||||
|
|
||||||
RTEMS_SYSINIT_ITEM(
|
RTEMS_SYSINIT_ITEM(
|
||||||
_Record_Interrupt_initialize,
|
_Record_Interrupt_initialize,
|
||||||
RTEMS_SYSINIT_LAST,
|
RTEMS_SYSINIT_LAST,
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include "recorddata.h"
|
#include "recorddata.h"
|
||||||
|
|
||||||
|
#include <rtems/rtems/intr.h>
|
||||||
#include <rtems/score/atomic.h>
|
#include <rtems/score/atomic.h>
|
||||||
#include <rtems/score/cpu.h>
|
#include <rtems/score/cpu.h>
|
||||||
#include <rtems/score/interr.h>
|
#include <rtems/score/interr.h>
|
||||||
@@ -68,6 +69,8 @@ void _Record_Initialize( void );
|
|||||||
|
|
||||||
void _Record_Interrupt_initialize( void );
|
void _Record_Interrupt_initialize( void );
|
||||||
|
|
||||||
|
extern rtems_interrupt_entry *_Record_Interrupt_dispatch_table[];
|
||||||
|
|
||||||
bool _Record_Thread_create(
|
bool _Record_Thread_create(
|
||||||
struct _Thread_Control *executing,
|
struct _Thread_Control *executing,
|
||||||
struct _Thread_Control *created
|
struct _Thread_Control *created
|
||||||
|
|||||||
@@ -242,6 +242,8 @@ static void fatal_extension(
|
|||||||
|
|
||||||
#define CONFIGURE_RECORD_EXTENSIONS_ENABLED
|
#define CONFIGURE_RECORD_EXTENSIONS_ENABLED
|
||||||
|
|
||||||
|
#define CONFIGURE_RECORD_INTERRUPTS_ENABLED
|
||||||
|
|
||||||
#define CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB
|
#define CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB
|
||||||
|
|
||||||
#define CONFIGURE_INIT
|
#define CONFIGURE_INIT
|
||||||
|
|||||||
Reference in New Issue
Block a user