因为没有初值,所以被放到了bss区。 staticstruct rt_thread thread1;//+120B 对比3和4的结果,发现在bss区增加了512B大小,是因为我们对静态线程增加了512B线程栈的结果。 静态线程和动态线程创建方式有所不同。 对于静态线程:我们使用rt_thread_init()来创建。 rt_err_trt_thread_init(struct rt_thread*thread...
struct rt_thread thread_static; 线程栈可以通过定义数组的方式来分配,或者通过动态内存分配的方式来完成: /* 数组方式确定线程栈,应该定义成全局数组 */ char thread_stack[1024]; /* 动态内存申请方式,确定线程栈 */ char *thread_stack = (char *)rt_malloc(1024); ...
staticvoidrt_hw_led_init(void);staticvoidstatic_thread_entry(void*parameter);staticvoiddynamic_thread_entry(void*parameter);/*变量分配4字节对齐*/ALIGN(RT_ALIGN_SIZE)/*静态线程的 线程堆栈*/staticrt_uint8_t led1_stack[512];/*静态线程的 线程控制块*/staticstructrt_thread led1_thread;voiddemo_...
for(node=information->object_list.next;node!=&(information->object_list);node=node->next){struct rt_object*obj;obj=rt_list_entry(node,struct rt_object,list);if(obj)/* skip warning when disable debug */{RT_ASSERT(obj!=object);}} object->type=type|RT_Object_Class_Static; 对象类型设置...
struct rt_thread thread_static; 1. 线程栈可以通过定义数组的方式来分配,或者通过动态内存分配的方式来完成: /* 数组方式确定线程栈,应该定义成全局数组 */ char thread_stack[1024]; /* 动态内存申请方式,确定线程栈 */ char *thread_stack = (char *)rt_malloc(1024); ...
ALIGN(RT_ALIGN_SIZE);staticstructrt_thread thread2;staticcharthread_stack[1024];staticvoidthread2_entry(void*parameter) //线程2入口代码 { rt_base_t i, count=0;for(i =0; i <10; i++) { rt_kprintf("thread2, count: %d\n", count++); ...
1)rt_inline,定义如下,static 关键字的作用是令函数只能在当前的文件中使用;inline 表示内联,用 static 修饰后在调用函数时会建议编译器进行内联展开。 2)RT_USED,定义如下,该宏的作用是向编译器说明这段代码有用,即使函数中没有调用也要保留编译。例如 RT-Thread 自动初始化功能使用了自定义的段,使用 RT_USE...
1static struct dfs_fdtable _fdtab; 1. 5 虚拟文件系统使用步骤 初始化 DFS 组件。 注册具体类型的文件系统。 挂载文件系统 当文件系统不再使用,可以将它卸载。 5.1 初始化 DFS 组件 dfs_init() 函数会初始化 DFS 所需的相关资源,创建一些关键的数据结构, 有了这些数据结构,DFS 便能在系统中找到特定的文件...
static void TASK1_Thread_Process(void* parameter){ rt_kprintf("正在向内存池申请内存...");p_Sa...
static char led1_thread_stack[256]; //demo,用户定义的静态线程大小 /* 参数的含义 1、线程句柄。线程句柄由用户提供出来,并指向对应的线程控制块内存地址,上面的led1_thread。 2、线程的名称;线程名称的最大长度由 rtconfig.h 中定义的 RT_NAME_MAX 宏指定,多余部分会被自动截掉 ...