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

原因: 包含在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;
#else
    DWORD                   Reserved;
#endif
};

修改后

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值