因此向下增长的栈从顶部往底部填充数据就类似于数组从尾部往头部填充数据,起始地址为: (rt_uint8_t *)((char *)thread->stack_addr + thread->stack_size - sizeof(rt_ubase_t)) 同时此处的代码是放在 thread.c 内,thread.c是内核文件,是公共的文件,不管你是什么硬件平台,不管你是什么CPU架构,在内核的...
rt_err_t rt_mutex_init (rt_mutex_t mutex, const char* name, rt_uint8_t flag) 该函数对参数mutex指定的互斥量控制块进行初始化。另外两个参数name和flag与动态创建函数相同。 2. 获取互斥量 RT-thread 提供的获取互斥量的函数接口如下,线程通过调用此函数来获取某个互斥量。 rt_err_t rt_mutex_take...
/* 线程控制块*/struct rt_thread{/* rt 对象*/char name[RT_NAME_MAX];/* 线程名称*/rt_uint8_t type;/* 对象类型*/rt_uint8_t flags;/* 标志位*/rt_list_t list;/* 对象列表*/rt_list_t tlist;/* 线程列表*//* 栈指针与入口指针*/void*sp;/* 栈指针*/void*entry;/* 入口函数指针*...
/* 线程控制块 */struct rt_thread{/* rt 对象 */char name[RT_NAME_MAX];/* 线程名称 */rt_uint8_t type;/* 对象类型 */rt_uint8_t flags;/* 标志位 */#ifdefRT_USING_MODULEvoid*module_id;/**< id of application module */#endif rt_list_t list;/* 对象列表 */rt_list_t tlist;...
rt_timer_t rt_timer_create(const char *name, void (*timeout)(void *parameter), void *parameter, rt_tick_t time, rt_uint8_t flag) 调用此函数后,内核自动从内存堆中分配一个定时器控制块,然后初始化该定时器控制块。各个参数说明如下: 参数描述 创建失败,返回 RT_NULL。创建成功,则返回定时器控制...
这是一个rt_uint8_t(RTThread中的宏定义,无符号8位)类型的全局数组,第一句话是为了栈空间对齐,使得CPU对数据的访问更加高效,第二句就是线程的具体定义了,这里定义1024的长度。 然后是线程的ID卡——线程控制块 在操作系统中,常常有许多的线程在运行,面对着这么多的的线程,自然需要一个身份块来标识每个线程,使...
代码清单 6-3 (1):线程栈其实就是一个预先定义好的全局数据,数据类型为rt_uint8_t,大小我们设置为 512。在 RT-Thread 中,凡是涉及到数据类型的地方,RT-Thread 都会将标准的 C 数据类型用 typedef 重新取一个类型名,以“rt”前缀开头。这些经过重定义的数据类型放在 rtdef.h(rtdef.h 第一次使用需要在 ...
owner: 表示此互斥锁的拥有者线程,rt-thread只允许同一时间只有一个线程拥有这个互斥锁,此参数就是用来记录此线程的。 二、互斥量相关接口:在src/ipc.c中 创建互斥量: rt_mutex_t rt_mutex_create(constchar*name, rt_uint8_t flag); 可以调用rt_mutex_create函数创建一个互斥量,它的名字有name所指定。创建...
根据之前的记录,rt_thread_ready_priority_group 是0x40000000,那么就是第30位最先位1,所以to_thread指针就指向了优先级数组里面第30个元素指向的下一个线程: 然后全局变量 rt_current_thread 也指向这里。 最后,开始调度: rt_hw_context_switch_to((rt_uint32_t)&to_thread->sp); ...
RT-Thread 动态创建一个线程的接口函数为rt_thread_create(),其函数原型为: rt_thread_t rt_thread_create(const char *name, void (*entry)(void *parameter), void *parameter, rt_uint32_t stack_size, rt_uint8_t priority, rt_uint32_t tick) ...