mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 11:56:10 +08:00
in smp_call handle we only change TCB_FLAG_CPU_LOCKED bit of tcb->flag
reason: change unrelated changes to tcb->flag fields, may cause error Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
@@ -44,7 +44,6 @@ struct backtrace_arg_s
|
|||||||
int size;
|
int size;
|
||||||
int skip;
|
int skip;
|
||||||
cpu_set_t saved_affinity;
|
cpu_set_t saved_affinity;
|
||||||
uint16_t saved_flags;
|
|
||||||
bool need_restore;
|
bool need_restore;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -74,7 +73,7 @@ static int sched_backtrace_handler(FAR void *cookie)
|
|||||||
if (arg->need_restore)
|
if (arg->need_restore)
|
||||||
{
|
{
|
||||||
tcb->affinity = arg->saved_affinity;
|
tcb->affinity = arg->saved_affinity;
|
||||||
tcb->flags = arg->saved_flags;
|
tcb->flags &= ~TCB_FLAG_CPU_LOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
leave_critical_section(flags);
|
||||||
@@ -127,7 +126,6 @@ int sched_backtrace(pid_t tid, FAR void **buffer, int size, int skip)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
arg.pid = tcb->pid;
|
arg.pid = tcb->pid;
|
||||||
arg.saved_flags = tcb->flags;
|
|
||||||
arg.saved_affinity = tcb->affinity;
|
arg.saved_affinity = tcb->affinity;
|
||||||
arg.need_restore = true;
|
arg.need_restore = true;
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ struct reprioritize_arg_s
|
|||||||
{
|
{
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
cpu_set_t saved_affinity;
|
cpu_set_t saved_affinity;
|
||||||
uint16_t saved_flags;
|
|
||||||
int sched_priority;
|
int sched_priority;
|
||||||
bool need_restore;
|
bool need_restore;
|
||||||
};
|
};
|
||||||
@@ -76,7 +75,7 @@ static int reprioritize_handler(FAR void *cookie)
|
|||||||
if (arg->need_restore)
|
if (arg->need_restore)
|
||||||
{
|
{
|
||||||
tcb->affinity = arg->saved_affinity;
|
tcb->affinity = arg->saved_affinity;
|
||||||
tcb->flags = arg->saved_flags;
|
tcb->flags &= ~TCB_FLAG_CPU_LOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nxsched_reprioritize_rtr(tcb, arg->sched_priority))
|
if (nxsched_reprioritize_rtr(tcb, arg->sched_priority))
|
||||||
@@ -237,7 +236,6 @@ static inline void nxsched_running_setpriority(FAR struct tcb_s *tcb,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
arg.pid = tcb->pid;
|
arg.pid = tcb->pid;
|
||||||
arg.saved_flags = tcb->flags;
|
|
||||||
arg.saved_affinity = tcb->affinity;
|
arg.saved_affinity = tcb->affinity;
|
||||||
arg.need_restore = true;
|
arg.need_restore = true;
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ struct suspend_arg_s
|
|||||||
{
|
{
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
cpu_set_t saved_affinity;
|
cpu_set_t saved_affinity;
|
||||||
uint16_t saved_flags;
|
|
||||||
bool need_restore;
|
bool need_restore;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -74,7 +73,7 @@ static int nxsched_suspend_handler(FAR void *cookie)
|
|||||||
if (arg->need_restore)
|
if (arg->need_restore)
|
||||||
{
|
{
|
||||||
tcb->affinity = arg->saved_affinity;
|
tcb->affinity = arg->saved_affinity;
|
||||||
tcb->flags = arg->saved_flags;
|
tcb->flags &= ~TCB_FLAG_CPU_LOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
nxsched_remove_readytorun(tcb);
|
nxsched_remove_readytorun(tcb);
|
||||||
@@ -158,7 +157,6 @@ void nxsched_suspend(FAR struct tcb_s *tcb)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
arg.pid = tcb->pid;
|
arg.pid = tcb->pid;
|
||||||
arg.saved_flags = tcb->flags;
|
|
||||||
arg.saved_affinity = tcb->affinity;
|
arg.saved_affinity = tcb->affinity;
|
||||||
arg.need_restore = true;
|
arg.need_restore = true;
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ struct sig_arg_s
|
|||||||
{
|
{
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
cpu_set_t saved_affinity;
|
cpu_set_t saved_affinity;
|
||||||
uint16_t saved_flags;
|
|
||||||
bool need_restore;
|
bool need_restore;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -84,7 +83,7 @@ static int sig_handler(FAR void *cookie)
|
|||||||
if (arg->need_restore)
|
if (arg->need_restore)
|
||||||
{
|
{
|
||||||
tcb->affinity = arg->saved_affinity;
|
tcb->affinity = arg->saved_affinity;
|
||||||
tcb->flags = arg->saved_flags;
|
tcb->flags &= ~TCB_FLAG_CPU_LOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tcb->sigdeliver)
|
if (tcb->sigdeliver)
|
||||||
@@ -178,7 +177,6 @@ static int nxsig_queue_action(FAR struct tcb_s *stcb, siginfo_t *info)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
arg.saved_flags = stcb->flags;
|
|
||||||
arg.saved_affinity = stcb->affinity;
|
arg.saved_affinity = stcb->affinity;
|
||||||
arg.need_restore = true;
|
arg.need_restore = true;
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ struct restart_arg_s
|
|||||||
{
|
{
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
cpu_set_t saved_affinity;
|
cpu_set_t saved_affinity;
|
||||||
uint16_t saved_flags;
|
|
||||||
bool need_restore;
|
bool need_restore;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -80,7 +79,7 @@ static int restart_handler(FAR void *cookie)
|
|||||||
if (arg->need_restore)
|
if (arg->need_restore)
|
||||||
{
|
{
|
||||||
tcb->affinity = arg->saved_affinity;
|
tcb->affinity = arg->saved_affinity;
|
||||||
tcb->flags = arg->saved_flags;
|
tcb->flags &= ~TCB_FLAG_CPU_LOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
nxsched_remove_readytorun(tcb);
|
nxsched_remove_readytorun(tcb);
|
||||||
@@ -238,7 +237,6 @@ static int nxtask_restart(pid_t pid)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
arg.pid = tcb->pid;
|
arg.pid = tcb->pid;
|
||||||
arg.saved_flags = tcb->flags;
|
|
||||||
arg.saved_affinity = tcb->affinity;
|
arg.saved_affinity = tcb->affinity;
|
||||||
arg.need_restore = true;
|
arg.need_restore = true;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user