From deef880daee83ad2fa1511539d7117c0be71496c Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Mon, 14 Dec 2020 17:33:38 +0800 Subject: [PATCH] sched/signal: Make the pre-allocated irq actions configurable the action can't be dynamically allocated in any irq handler so it's important to let the user extend the number as needed Signed-off-by: Xiang Xiao Change-Id: Id30c5d93003e63514c24f2ca0df2f634c4c63c5f --- sched/Kconfig | 6 ++++++ sched/signal/sig_initialize.c | 4 ++-- sched/signal/signal.h | 2 -- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sched/Kconfig b/sched/Kconfig index 2a41d1cb198..a11233056c6 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -1309,6 +1309,12 @@ endmenu # RTOS hooks menu "Signal Configuration" +config SIG_PREALLOC_IRQ_ACTIONS + int "Number of pre-allocated irq actions" + default 8 + ---help--- + The number of pre-allocated irq action structures. + config SIG_EVTHREAD bool "Support SIGEV_THHREAD" default n diff --git a/sched/signal/sig_initialize.c b/sched/signal/sig_initialize.c index 0a03ff2c94f..39f4ca18cb4 100644 --- a/sched/signal/sig_initialize.c +++ b/sched/signal/sig_initialize.c @@ -230,7 +230,7 @@ void nxsig_initialize(void) g_sigpendingirqactionalloc = nxsig_alloc_block(&g_sigpendingirqaction, - NUM_PENDING_INT_ACTIONS, + CONFIG_SIG_PREALLOC_IRQ_ACTIONS, SIG_ALLOC_IRQ); DEBUGASSERT(g_sigpendingirqactionalloc != NULL); @@ -242,7 +242,7 @@ void nxsig_initialize(void) g_sigpendingirqsignalalloc = nxsig_alloc_pendingsignalblock(&g_sigpendingirqsignal, - NUM_INT_SIGNALS_PENDING, + CONFIG_SIG_PREALLOC_IRQ_ACTIONS, SIG_ALLOC_IRQ); DEBUGASSERT(g_sigpendingirqsignalalloc != NULL); } diff --git a/sched/signal/signal.h b/sched/signal/signal.h index e8d36d02b52..5689fe2034a 100644 --- a/sched/signal/signal.h +++ b/sched/signal/signal.h @@ -60,9 +60,7 @@ #define NUM_SIGNAL_ACTIONS 4 #define NUM_PENDING_ACTIONS 4 -#define NUM_PENDING_INT_ACTIONS 8 #define NUM_SIGNALS_PENDING 4 -#define NUM_INT_SIGNALS_PENDING 8 /**************************************************************************** * Public Type Definitions