Commit Graph

27 Commits

Author SHA1 Message Date
Shell 40cd8cce99 feat: Added rt_interrupt_context* family for nested interrupt handling
These changes introduce the rt_interrupt_context family, providing a
mechanism for managing nested interrupts. The context management
ensures proper storage and retrieval of interrupt states, improving
reliability in nested interrupt scenarios by enabling context tracking
across different interrupt levels. This enhancement is essential for
platforms where nested interrupt handling is crucial, such as in real-
time or multi-threaded applications.

Changes:
- Defined rt_interrupt_context structure with context and node fields
  in `rtdef.h` to support nested interrupts.
- Added rt_slist_pop function in `rtservice.h` for simplified node
  removal in singly linked lists.
- Declared rt_interrupt_context_push, rt_interrupt_context_pop, and
  rt_interrupt_context_get functions in `rtthread.h` to manage the
  interrupt/exception stack.
- Modified AArch64 CPU support in `cpuport.h` to include
  rt_hw_show_register for debugging registers.
- Refactored `_rt_hw_trap_irq` in `trap.c` for context-aware IRQ
  handling, with stack push/pop logic to handle nested contexts.
- Implemented interrupt context push, pop, and retrieval logic in
  `irq.c` to manage context at the CPU level.

Signed-off-by: Shell <smokewood@qq.com>
2024-11-03 10:08:45 +08:00
Meco Man 2748a6ada4 [kernel] fix some strict compiling warnings 2024-02-19 01:56:21 -05:00
Shell e7880a9713 [kernel] support for hook list
Signed-off-by: Shell <smokewood@qq.com>
2024-01-02 19:42:46 +08:00
yanghuang b51a3420b0 [kernel] 解决rt_slist_for_each_entry宏不能正常遍历slist链表中元素的问题
因rt_slist_for_each_entry宏不能正常调用,在实际开发中去循环再调用rt_slist_entry很不简洁,所以修改了rt_slist_for_each_entry宏中关于链表next的判空处理。目前相关代码在GD32系统的MCU上均能正常工作,相关应用也在生产产品中经过验证。
2023-11-06 10:03:04 +08:00
bin 4d6ceffcab [doxygen] Fix some comments in rtservice.h 2023-02-01 22:31:57 -05:00
rewine a638a879fb [include] fix comment for rt_container_of 2022-05-25 10:04:55 +08:00
Meco Man 2fd265406e [include] auto formatted 2021-03-08 17:22:21 +08:00
Bernard Xiong 310517b818 [Kernel] Code cleanup 2020-04-10 00:02:57 +08:00
Owen 66cf4b9cf0
Update rtservice.h
更正为正确的Doxygen组定义语法
2018-12-26 10:16:04 +08:00
Bernard Xiong 20bc91d25f [license] Change license to Apache. 2018-10-14 19:38:52 +08:00
Bernard Xiong 41f7f2c284 [Kernel] Update to Apache License v2.0
Update license for RT-Thread kernel.
2018-09-14 22:37:43 +08:00
armink a969b7096f [slist] Add rt_slist_tail and rt_slist_tail_entry for slist. 2018-09-11 20:06:40 +08:00
Lynx Zhou 754b363839
Add list iterators over list elements
Address the comments from armink@rt-thread
2018-07-11 17:14:44 +08:00
Lynx Zhou 3b9dfc6aed
Add list iterators over list elements
Some non-gnu toolchains don't support gnu C extended keyword "typeof", like MDK (if no "gnu" option) and IAR, in this case we can provide list element manipulation macro functions to iterate over the list.
2018-07-04 15:50:31 +08:00
armink aa12d66b30 [rtservice] Add `rt_slist_first` and `rt_slist_next` API to slist. 2018-06-27 13:05:50 +08:00
bupleurum 3af13de6a5
Update rtservice.h 2018-05-21 19:41:13 +08:00
JasonJiaJie e9b846d119 [list]1.Modify rt_slist_foreach to rt_slist_for_each_entry. 2.Add rt_sllist_isempty. 3.Make code cleanup
1.Modify rt_slist_foreach to rt_slist_for_each_entry. 2.Add rt_sllist_isempty. 3.Make code cleanup
2017-12-14 09:28:10 +08:00
weety ed90b9d415 [RTSERVICE] Add rt_list_for_each_entry_safe macros definition. 2017-11-05 22:36:46 +08:00
armink d3ac388846 [rtservice] Add `rt_list_len` and `rt_slist_len` to rtservice.h . 2017-10-19 09:28:17 +08:00
bernard cd215b2545 [Kernel] header files
1. Remove components.h file;
2. Add libc_* files for standard libc definitions;
3. Add rtdbg.h file for simple debug log;
4. Add single list implementation;
5. Change the 'rt_uint8_t' type of cmd to 'int'.
2017-10-15 22:30:05 +08:00
Bernard Xiong 462885e6f1 [Kernel] rename list_for_each/list_first_entry. 2017-04-09 19:13:21 +08:00
Bernard Xiong bb1cb89b52 [Kernel] Add list_for_each_entry and list_frist_entry routine.
committed by FH.
2016-05-20 12:24:08 +08:00
Bernard Xiong 79392bb082 Embedded GPLv2 license. 2013-06-24 17:06:09 +08:00
qiuyiuestc@gmail.com 7c7fa51f97 add __RT_SERVICE_H__ definition
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2347 bbd45198-f89e-11dd-88c7-29a3b14d5316
2012-10-13 03:26:25 +00:00
dzzxzz@gmail.com cba2e9bcba convert tabs to 4 spaces in rtservice.h
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2267 bbd45198-f89e-11dd-88c7-29a3b14d5316
2012-09-05 05:42:12 +00:00
bernard.xiong@gmail.com 87195cf84e Added memory heap object implementation; Added RT_LIST_OBJECT_INIT macro.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2046 bbd45198-f89e-11dd-88c7-29a3b14d5316
2012-04-14 03:52:56 +00:00
bernard.xiong@gmail.com 0f519b6721 move src\kservice.h to include\rtservice.h.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2005 bbd45198-f89e-11dd-88c7-29a3b14d5316
2012-03-22 06:11:44 +00:00