syscall: the signal received during system call processing is not processed.
Refs: #1176 Fujitsu: POSTK_DEBUG_TEMP_FIX_56 Change-Id: I410160ccbcef3ef49a0e37611a608bc87c97e63b
This commit is contained in:
committed by
Masamichi Takagi
parent
e4da71010c
commit
5e760db417
@ -9523,11 +9523,8 @@ set_cputime(int mode)
|
||||
long syscall(int num, ihk_mc_user_context_t *ctx)
|
||||
{
|
||||
long l;
|
||||
#if !defined(POSTK_DEBUG_TEMP_FIX_60) && !defined(POSTK_DEBUG_TEMP_FIX_56)
|
||||
struct thread *thread = cpu_local_var(current);
|
||||
#else /* !defined(POSTK_DEBUG_TEMP_FIX_60) && !defined(POSTK_DEBUG_TEMP_FIX_56) */
|
||||
struct thread *thread = cpu_local_var(current);
|
||||
#endif /* !defined(POSTK_DEBUG_TEMP_FIX_60) && !defined(POSTK_DEBUG_TEMP_FIX_56) */
|
||||
struct cpu_local_var *v = get_this_cpu_local_var();
|
||||
struct thread *thread = v->current;
|
||||
|
||||
#ifdef DISABLE_SCHED_YIELD
|
||||
if (num != __NR_sched_yield)
|
||||
@ -9629,22 +9626,9 @@ long syscall(int num, ihk_mc_user_context_t *ctx)
|
||||
}
|
||||
#endif // PROFILE_ENABLE
|
||||
|
||||
#if defined(POSTK_DEBUG_TEMP_FIX_60) && defined(POSTK_DEBUG_TEMP_FIX_56)
|
||||
check_need_resched();
|
||||
#elif defined(POSTK_DEBUG_TEMP_FIX_60) /* sched_yield called check_signal fix. */
|
||||
if (num != __NR_futex) {
|
||||
if (v->flags & CPU_FLAG_NEED_RESCHED) {
|
||||
check_need_resched();
|
||||
}
|
||||
#elif defined(POSTK_DEBUG_TEMP_FIX_56) /* in futex_wait() signal handring fix. */
|
||||
if (num != __NR_sched_yield) {
|
||||
check_need_resched();
|
||||
}
|
||||
#else /* POSTK_DEBUG_TEMP_FIX_60 && POSTK_DEBUG_TEMP_FIX_56 */
|
||||
if (num != __NR_sched_yield &&
|
||||
num != __NR_futex) {
|
||||
check_need_resched();
|
||||
}
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_60 && POSTK_DEBUG_TEMP_FIX_56 */
|
||||
|
||||
if (!list_empty(&thread->sigpending) ||
|
||||
!list_empty(&thread->sigcommon->sigpending)) {
|
||||
|
||||
Reference in New Issue
Block a user