通过反汇编查看到,main_thread_entry跳转到了rt_work_sys_workqueue_init触发了 RT_ASSERT(sys_workq != RT_NULL); 通过断点,查看到程序在ev_handler结束后进入asm_trap,之后mret到wrap函数。 下面我们重温一下yield-os的过程,在初始化时 cte_init(schedule)把__am_asm_trap的位置写入mtvec,令user_handler=s...
1rt_work_sys_workqueue_init/* rt-thread/components/drivers/src/workqueue.c */ 2|-> rt_workqueue_create("sys_work")/* 创建系统工作队列 rt-thread/components/drivers/src/workqueue.c */3|-> rt_thread_create(_workqueue_thread_entry)/* 线程名字为"sys_work",创建队列线程 rt-thread/components/...
initialize dfs_init:0 done initialize rt_work_sys_workqueue_init:0 done initialize lwip_system_initlwIP-2.0.3 initialized! :0 done initialize null_device_init:0 done initialize random_device_init:0 done initialize urandom_device_init:0 done initialize zero_device_init:0 done initialize rt_soft_...
以文件 rt-thread/components/finsh/shell.c 中 Finsh 控制台初始化函数 INIT_APP_EXPORT(finsh_system_init)为例,参照上面的宏定义规则分布展开和最终结果如下 INIT_APP_EXPORT(finsh_system_init) |-> INIT_EXPORT(finsh_system_init, "6") |-> RT_USED const init_fn_t __rt_init_finsh_system...
Remove rt_delayed_work_init() Privatize the rt_work_sys_workqueue_init function Fix an unexpected suspension of critical condition threadsFixed timer ASSERT exception due to multithreaded schedulingOptimize the inclusion relationship between dfs.h and dirent.hUpdate...
RT-Thread 的系统工作线程(System workqueue),而我们往系统工作线程里提交工作项(work item)即可。
RT-Thread Components->Device Drivers->Using device drivers IPC->Using system default workqueue 依次选中上述这些选项,就能够开启系统工作队列了。而且还可以看到工作队列线程的栈大小默认为 2048,优先级为 23 。 这样系统在初始化的时候就创建了系统工作队列了,名字叫作sys_work,在终端输入ps能够看到该线程。
initialize rt_work_sys_workqueue_init:0 doneinitialize clock_time_system_init:0 doneinitialize pthread_system_init:0 doneinitialize libc_system_init:0 doneinitialize sal_init[32m[I/sal.skt] Socket Abstraction Layer initialize success.[0m:0 doneinitialize cplusplus_system_init:0 doneinitialize rt_...
initialize rt_work_sys_workqueue_init:0 doneinitialize clock_time_system_init:0 doneinitialize pthread_system_init:0 doneinitialize libc_system_init:0 doneinitialize sal_init[32m[I/sal.skt] Socket Abstraction Layer initialize success.[0m:0 doneinitialize cplusplus_system_init:0 doneinitialize rt_...
Privatize the rt_work_sys_workqueue_init function Fix an unexpected suspension of critical condition threads Fixed timer ASSERT exception due to multithreaded scheduling Optimize the inclusion relationship between dfs.h and dirent.h Update finsh Restore the FINSH_USING_MSH definition for compatibility Ex...