From e6a3b30993bd1654e8b23323a6e6fd967d5159c1 Mon Sep 17 00:00:00 2001 From: milo <1569491816@qq.com> Date: Mon, 30 Sep 2024 01:16:18 +0800 Subject: [PATCH] [dev] make RTC alarm internal thread's attributes configurable --- components/drivers/rtc/Kconfig | 14 ++++++++++++++ components/drivers/rtc/dev_alarm.c | 14 +++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/components/drivers/rtc/Kconfig b/components/drivers/rtc/Kconfig index e4310cb5b1..7ae99599af 100644 --- a/components/drivers/rtc/Kconfig +++ b/components/drivers/rtc/Kconfig @@ -7,6 +7,20 @@ config RT_USING_RTC bool "Using RTC alarm" default n + if RT_USING_ALARM + config RT_ALARM_STACK_SIZE + int "stack size for alarm thread" + default 2048 + + config RT_ALARM_TIMESLICE + int "timeslice for alarm thread" + default 10 + + config RT_ALARM_PRIORITY + int "priority for alarm thread" + default 5 + endif + config RT_USING_SOFT_RTC bool "Using software simulation RTC device" default n diff --git a/components/drivers/rtc/dev_alarm.c b/components/drivers/rtc/dev_alarm.c index b78528a04c..6a303dd6e5 100644 --- a/components/drivers/rtc/dev_alarm.c +++ b/components/drivers/rtc/dev_alarm.c @@ -9,6 +9,7 @@ * 2013-05-17 aozima initial alarm event & mutex in system init. * 2020-10-15 zhangsz add alarm flags hour minute second. * 2020-11-09 zhangsz fix alarm set when modify rtc time. + * 2024-09-29 milo make internal thread's attributes configurable. */ #include @@ -23,6 +24,15 @@ #endif #if (defined(RT_USING_RTC) && defined(RT_USING_ALARM)) +#ifndef RT_ALARM_STACK_SIZE +#define RT_ALARM_STACK_SIZE 2048 +#endif +#ifndef RT_ALARM_TIMESLICE +#define RT_ALARM_TIMESLICE 10 +#endif +#ifndef RT_ALARM_PRIORITY +#define RT_ALARM_PRIORITY 5 +#endif static struct rt_alarm_container _container; rt_inline rt_uint32_t alarm_mkdaysec(struct tm *time) @@ -789,7 +799,9 @@ int rt_alarm_system_init(void) tid = rt_thread_create("alarmsvc", rt_alarmsvc_thread_init, RT_NULL, - 2048, 10, 5); + RT_ALARM_STACK_SIZE, + RT_ALARM_TIMESLICE, + RT_ALARM_PRIORITY); if (tid != RT_NULL) rt_thread_startup(tid);