当前位置: 代码迷 >> 综合 >> 【close】任务上下文对象长度超过128字节
  详细解决方案

【close】任务上下文对象长度超过128字节

热度:10   发布时间:2024-01-20 12:13:34.0

原因: 包含在TASK_CONTEX 对象中的 ARCH_CONTEX 长度32字节,需要从任务上下文中移除,使用指针处理。需要为ARCH_CONTEXT单独分配空间。

解决方案:为节省空间,STM32中ARCH_CONTEXT结构体不单独分配空间,改为去掉 STACK_DESCRIPTOR 结构中的 stackhandle 将堆栈POOL ID与 StackCapacity 使用位域合并到一个DWORD中:

修改前:

struct tagSTACK_DESCRIPTOR{SIZE_T                  StackCapacity;                      /* 堆栈容量 */LPVOID                  lpStackBuffer;                      /* 堆栈指针 */LPVOID                  lpStackPosition;                    /* 栈顶指针 */
#if (FALSE == CONFIG_DYNAMIC_STACK_ENABLE)HANDLE                  StackHandle;
#elseDWORD                   Reserved;
#endif
};

修改后

struct tagSTACK_DESCRIPTOR{union{struct{SIZE_T              StackCapacity:22;                   /* 堆栈容量 */HANDLE              StackContainerID:OBJECT_PID_BITS;   /* */}Bits;DWORD               Attribute;}un;LPVOID                  lpStackBuffer;                      /* 堆栈指针 */LPVOID                  lpStackPosition;                    /* 栈顶指针 */
};


  相关解决方案