问题描述
我正在运行一个简单的xilkernel程序。我在shell_main中请求了1000ms的sys_sleep()。
我创建了一个比shell_main更高优先级的pthread。当我杀死这个pthread时,sys_sleep()不再返回1000ms。它只返回500毫秒。
解决/修复方法
此问题将在EDK 9.1i中修复。有关此工具发布之前的变通方法,请在timer.c文件中进行修改,如下所述。 ‘timer.c’位于以下位置:
<edk_install_dir> \ SW \ lib中\ BSP \ xilkernel_v3_00_a \ SRC \ SRC \ SYS
之前:
———–
int remove_tmr(pid_t pid)
{
int i;
for(i = 0; i <MAX_TMRS; i ++){
if(soft_tmrs [i] .pid == pid){
soft_tmrs [i] .pid = -1; //处理程序将以静默方式删除活动计时器列表中的计时器条目
打破;
}
}
}
后:
——–
int remove_tmr(pid_t pid)
{
int i;
for(i = 0; i <MAX_TMRS; i ++){
if(soft_tmrs [i] .pid == pid){
soft_tmrs [i] .pid = -1; //处理程序将以静默方式删除活动计时器列表中的计时器条目
nactive–;
打破;
}
}
}
没有回复内容