Changeset 0d5e41a in rtems
- Timestamp:
- 12/01/22 07:55:24 (4 months ago)
- Branches:
- master
- Children:
- c46fbb9
- Parents:
- 71d1acd
- git-author:
- Sebastian Huber <sebastian.huber@…> (12/01/22 07:55:24)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (12/02/22 09:25:44)
- Location:
- bsps
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
bsps/include/bsp/irq-generic.h
r71d1acd r0d5e41a 664 664 } 665 665 666 /** 667 * @brief Gets a reference to the interrupt handler table slot associated with 668 * the index. 669 * 670 * @return Returns a reference to the interrupt handler table slot associated 671 * with the index. 672 */ 673 rtems_interrupt_entry **bsp_interrupt_get_dispatch_table_slot( 674 rtems_vector_number index 675 ); 676 666 677 #ifdef __cplusplus 667 678 } -
bsps/shared/irq/irq-entry-remove.c
r71d1acd r0d5e41a 48 48 49 49 index = bsp_interrupt_dispatch_index( vector ); 50 first = bsp_interrupt_dispatch_table[ index ];50 first = *bsp_interrupt_get_dispatch_table_slot( index ); 51 51 entry_next = entry->next; 52 52 -
bsps/shared/irq/irq-generic.c
r71d1acd r0d5e41a 50 50 bsp_interrupt_dispatch_table[ BSP_INTERRUPT_DISPATCH_TABLE_SIZE ]; 51 51 52 RTEMS_WEAK rtems_interrupt_entry **bsp_interrupt_get_dispatch_table_slot( 53 rtems_vector_number index 54 ) 55 { 56 return &bsp_interrupt_dispatch_table[ index ]; 57 } 58 52 59 /* The last entry indicates if everything is initialized */ 53 60 uint8_t bsp_interrupt_handler_unique_table … … 92 99 * to carry out an atomic read-modify-write operation. 93 100 */ 94 ptr = (Atomic_Uintptr *) &bsp_interrupt_dispatch_table[101 ptr = (Atomic_Uintptr *) bsp_interrupt_get_dispatch_table_slot( 95 102 bsp_interrupt_dispatch_index( vector ) 96 ];103 ); 97 104 first = (rtems_interrupt_entry *) 98 105 _Atomic_Fetch_add_uintptr( ptr, 0, ATOMIC_ORDER_ACQUIRE ); … … 144 151 bsp_interrupt_assert( bsp_interrupt_is_valid_vector( vector ) ); 145 152 index = bsp_interrupt_dispatch_index( vector ); 146 *previous_next = &bsp_interrupt_dispatch_table[ index ];147 entry = bsp_interrupt_dispatch_table[ index ];153 *previous_next = bsp_interrupt_get_dispatch_table_slot( index ); 154 entry = **previous_next; 148 155 149 156 while ( entry != NULL ) { … … 188 195 #endif 189 196 bsp_interrupt_entry_store_release( 190 &bsp_interrupt_dispatch_table[ index ],197 bsp_interrupt_get_dispatch_table_slot( index ), 191 198 entry 192 199 ); … … 221 228 222 229 index = bsp_interrupt_dispatch_index( vector ); 223 first = bsp_interrupt_dispatch_table[ index ];230 first = *bsp_interrupt_get_dispatch_table_slot( index ); 224 231 225 232 if ( first == NULL ) { -
bsps/shared/irq/irq-handler-iterate.c
r71d1acd r0d5e41a 58 58 59 59 index = bsp_interrupt_dispatch_index( vector ); 60 entry = *bsp_interrupt_get_dispatch_table_slot( index ); 60 61 options = bsp_interrupt_is_handler_unique( index ) ? 61 62 RTEMS_INTERRUPT_UNIQUE : RTEMS_INTERRUPT_SHARED; 62 entry = bsp_interrupt_dispatch_table[ index ];63 63 64 64 while ( entry != NULL ) {
Note: See TracChangeset
for help on using the changeset viewer.