|
各位大虾,小弟问个问题,希望大家指教!!
我现在做个网络通信的驱动,有一个任务rxFrameProcess,用来处理从网络上来的数据,然后根据数据类型做不同的处理,再把提取的数据载荷放到指定的数据链中。而用户的应用程序从数据链中读取处理过的数据。这个任务的内容大概是这样的:
sem_ID rxSem;
void rxFrameProcess()
{
FOREVER
{
semTake(rxSem);
/*处理数据*/
semGive(rxSem);
}
}
这个任务由初始化函数生成
int init()
{
taskSpawn("rxFrameProcess", 90, 0x100, 2000, (FUNCPTR) rxFrameProcess, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}
信号量由中断一个处理函数给出。也就是说,每次收到数据,中断处理函数给出信号量rxSem,然后rxFrameProcess就来处理数据。
但是现在有个问题:我的任务的优先级是90,但是如果上层的用户产生了一个更高优先级的任务,不停的读接收数据链
例如:
int readData()
{
while(1)
{
/*读数据*/
if(有数据)
{
返回数据;
return ;
}
else
continue;
}
}
那么这个rxFrameProcess任务即使获得了信号量也无法处理数据!!因为CPU被占用了!!
那我怎么才能合适的设置我的rxFrameProcess任务的优先级了,保证它比任何其他的应用进程都高了?难道设成1??
换句话说,就是我有个任务,如何才能保证这个任务的优先级不比其他应用任务的优先级低了??
谢谢!!
|
|