请教傻孩子,你的抢占调度器
请教傻孩子,你的抢占调度器Nonepreemptive_Scheduler.h中struct Process
{
uint8_t StructMask
[sizeof(struct _Process
{
PROC_FUNCTION *fnProcess;
volatile PROC_STATE State;
void *pArgument;
ES_FLASH uint8_t* pKey;
})
];
};
sizeof是不是结构体字节宽度, StructMask是个数组吗?不理解,请傻孩子讲解一下 这是一个 掩码结构体,当一个模块需要为外部提供对某个结构体的引用,同时又不希望
泄漏结构体的内容时,就可以使用掩码结构体。掩码结构体拥有和原来结构体相同的大小
StructMask就是一个数组,sizeof里面的内容就是原始的结构体,这样我们就获得了一个
和原来结构体相同大小的掩码结构体。
这种技术类似于C++里面的类私有成员(private)。这种方法可以防止外界对模块的恶意
访问。实际上,Windows里面的“内核对象”使用的也是类似的技术。
另外,这个调度器仍然是合作式的,不是抢占式的。 傻孩子
为什么不用typedef,这样看得有点累... 用了啊……
以下是完整内容
/*-----------------------------*
*type definitions *
*----------------------------*/
typedef struct Process PROCESS;
typedef enum
{
PROC_NULL,
PROC_READY,
PROC_BLOCK,
PROC_TERMINATE
}PROC_STATE;
typedef enum
{
PROC_RELEASE_WHEN_TERMINATED,
PROC_RELEASE_IMMEDIATELY
}PROC_RELASE_MODE;
typedef PROC_STATE PROC_FUNCTION(volatile PROCESS *pPROC);
/*-----------------------------*
*structure,union and enum *
*----------------------------*/
struct Process
{
uint8_t StructMask
[sizeof(struct _Process
{
PROC_FUNCTION *fnProcess;
volatile PROC_STATE State;
void *pArgument;
ES_FLASH uint8_t* pKey;
})
];
}; 我的意思是
typedef struct
{
PROC_FUNCTION *fnProcess;
volatile PROC_STATE State;
void *pArgument;
ES_FLASH uint8_t* pKey;
} PROCESS_MASK;
typedef struct
{
uint8_t StructMask;
} PROCESS; 谢谢傻孩子,
你的合作调度器和《时间触发嵌入式系统设计模式-8051系列微控制器开发可靠应用》合作调度器有什么不同,有哪方面改进?
你的时标,也可以说是定时器是怎样的工作的,只有一个时标吗?只有时标定时器才可以中断,其他的都不可以?
页:
[1]