[PATCH 1/3] bsps/irq: Remove BSP_INTERRUPT_NO_HEAP_USAGE

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Jun 18 07:20:33 UTC 2021


Remove the support for BSP_INTERRUPT_NO_HEAP_USAGE.  This was only used
by one BSP and provides no real benefit.

Update #3269.
---
 bsps/include/bsp/irq-generic.h            |  8 ------
 bsps/powerpc/mpc55xxevb/include/bsp/irq.h |  1 -
 bsps/shared/irq/irq-generic.c             | 34 ++---------------------
 3 files changed, 3 insertions(+), 40 deletions(-)

diff --git a/bsps/include/bsp/irq-generic.h b/bsps/include/bsp/irq-generic.h
index 4135aa518c..e888a66cea 100644
--- a/bsps/include/bsp/irq-generic.h
+++ b/bsps/include/bsp/irq-generic.h
@@ -66,10 +66,6 @@ extern "C" {
   #error "if you define BSP_INTERRUPT_USE_INDEX_TABLE, you have to define BSP_INTERRUPT_HANDLER_TABLE_SIZE etc. as well"
 #endif
 
-#if defined(BSP_INTERRUPT_NO_HEAP_USAGE) && !defined(BSP_INTERRUPT_USE_INDEX_TABLE)
-  #error "if you define BSP_INTERRUPT_NO_HEAP_USAGE, you have to define BSP_INTERRUPT_USE_INDEX_TABLE etc. as well"
-#endif
-
 #define BSP_INTERRUPT_VECTOR_NUMBER \
   (BSP_INTERRUPT_VECTOR_MAX - BSP_INTERRUPT_VECTOR_MIN + 1)
 
@@ -150,10 +146,6 @@ static inline rtems_vector_number bsp_interrupt_handler_index(
  * table will be accessed via a small index table.  You can define the size of
  * the handler table with @ref BSP_INTERRUPT_HANDLER_TABLE_SIZE.
  *
- * Normally new list entries are allocated from the heap.  You may define
- * @ref BSP_INTERRUPT_NO_HEAP_USAGE, if you do not want to use the heap.  For
- * this option you have to define @ref BSP_INTERRUPT_USE_INDEX_TABLE as well.
- *
  * You have to provide some special routines in your BSP (follow the links for
  * the details):
  * - bsp_interrupt_facility_initialize()
diff --git a/bsps/powerpc/mpc55xxevb/include/bsp/irq.h b/bsps/powerpc/mpc55xxevb/include/bsp/irq.h
index c923859dec..491c120ee8 100644
--- a/bsps/powerpc/mpc55xxevb/include/bsp/irq.h
+++ b/bsps/powerpc/mpc55xxevb/include/bsp/irq.h
@@ -483,7 +483,6 @@ rtems_status_code mpc55xx_intc_clear_software_irq(rtems_vector_number vector);
 
 #ifdef BSP_INTERRUPT_HANDLER_TABLE_SIZE
   #define BSP_INTERRUPT_USE_INDEX_TABLE
-  #define BSP_INTERRUPT_NO_HEAP_USAGE
 #endif
 
 /** @} */
diff --git a/bsps/shared/irq/irq-generic.c b/bsps/shared/irq/irq-generic.c
index 1e83a6f249..abe732a9d3 100644
--- a/bsps/shared/irq/irq-generic.c
+++ b/bsps/shared/irq/irq-generic.c
@@ -142,34 +142,6 @@ static inline bool bsp_interrupt_allocate_handler_index(
   #endif
 }
 
-static bsp_interrupt_handler_entry *bsp_interrupt_allocate_handler_entry(void)
-{
-  bsp_interrupt_handler_entry *e;
-
-  #ifdef BSP_INTERRUPT_NO_HEAP_USAGE
-    rtems_vector_number index = 0;
-
-    if (bsp_interrupt_allocate_handler_index(0, &index)) {
-      e = &bsp_interrupt_handler_table [index];
-    } else {
-      e = NULL;
-    }
-  #else
-    e = rtems_malloc(sizeof(*e));
-  #endif
-
-  return e;
-}
-
-static void bsp_interrupt_free_handler_entry(bsp_interrupt_handler_entry *e)
-{
-  #ifdef BSP_INTERRUPT_NO_HEAP_USAGE
-    bsp_interrupt_clear_handler_entry(e, 0);
-  #else
-    free(e);
-  #endif
-}
-
 void bsp_interrupt_initialize(void)
 {
   rtems_status_code sc = RTEMS_SUCCESSFUL;
@@ -318,7 +290,7 @@ static rtems_status_code bsp_interrupt_handler_install(
       }
 
       /* Allocate a new entry */
-      current = bsp_interrupt_allocate_handler_entry();
+      current = rtems_malloc(sizeof(*current));
       if (current == NULL) {
         /* Not enough memory */
         bsp_interrupt_unlock();
@@ -433,7 +405,7 @@ static rtems_status_code bsp_interrupt_handler_remove(
       match->next = current->next;
       bsp_interrupt_enable(level);
 
-      bsp_interrupt_free_handler_entry(current);
+      free(current);
     } else if (match == head) {
       /*
        * The match is the list head and has no successor.
@@ -465,7 +437,7 @@ static rtems_status_code bsp_interrupt_handler_remove(
       bsp_interrupt_fence(ATOMIC_ORDER_RELEASE);
       bsp_interrupt_enable(level);
 
-      bsp_interrupt_free_handler_entry(match);
+      free(match);
     }
   } else {
     /* No matching entry found */
-- 
2.26.2



More information about the devel mailing list