- 博客(6)
- 收藏
- 关注
原创 RT-Thread:rt_mp_create 函数
函数的主要功能是创建一个内存池对象,分配所需的内存空间,初始化内存池的各种属性和数据结构(包括空闲内存块链表和挂起线程列表),并返回指向该内存池对象的指针。如果在创建过程中任何一步失败,函数会进行相应的清理操作并返回。这是一个调试宏,用于确保该函数不会在中断上下文中执行。因为内存池的创建涉及到多个步骤的内存分配和数据结构初始化,在中断上下文中执行可能会导致不可预期的结果。如果以上步骤都成功执行,返回指向创建好的内存池对象的指针。函数导出,使其可以在其他模块中被调用。
2025-03-02 14:24:17
724
原创 rt-thread :rt_malloc函数
记录调试日志,调用内存分配钩子函数(如果有注册),最后返回分配的内存块指针(跳过。函数通过查找合适的空闲内存块,根据情况进行分割或直接使用,实现了从堆内存中分配指定大小内存块的功能,并通过信号量保证了内存分配操作的线程安全性。结构体大小和最小对齐大小),则将该内存块分割成两部分,一部分用于分配,另一部分作为新的空闲内存块。指向当前检查的内存块,如果该内存块未使用且剩余空间大于等于要分配的大小,则找到了合适的内存块。,表示要分配的内存块大小,返回值是一个指向分配内存块的指针,如果分配失败则返回。
2025-03-02 14:07:40
396
原创 RT-thread:rt_sem_take函数
函数接受两个参数,sem是指向要获取的信号量的指针,time是线程等待信号量的时间。使用RT_ASSERT宏检查传入的信号量指针是否为空。然后调用对象钩子函数,用于在获取信号量前执行一些自定义操作(如果有注册的话)。保存当前中断状态并关闭中断,防止在检查和修改信号量状态时被中断干扰。如果开启了 IPC 调试日志,输出当前线程名称、要获取的信号量名称以及信号量当前的值。如果信号量的值大于 0,说明信号量可用,将信号量的值减 1,然后恢复中断。信号量不可用处理,无等待时间情况:恢复中断并返回超时错误码。
2025-03-02 13:37:39
455
原创 RT-thread 源码分析 RT-Thread_06_taskdelay
看了韦东山的视频,视频了韦老师带领我们理解了大部分原理。但是并没有一句一句看编程源码。这里我把源码整理了一下。main函数main→rt_thread_create→RT_object_allocate函数通用内存分配函数插入module链表的对象与动态加载模块关联,便于模块级别的资源管理;插入链表的对象是全局对象,由系统整体管理。main→rt_thread_create→RT_object_allocate→RT_KERNEL_MALLOC线程内存栈分配函数是调用了 rt_malloc函数。
2025-02-23 14:02:11
1183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人