clv: Change no_preempt from int to ihk_atomic_t.
Fix the issue where the value of no_preempt gets unexpected value (-1, 1, 2 etc.) after process ends when running the UTI tests. Change-Id: I7d9c08b754a171ea3fdec20ab2e635df3b607cbd
This commit is contained in:
committed by
Masamichi Takagi
parent
1070387ed2
commit
eba2131f34
10
kernel/cls.c
10
kernel/cls.c
@ -66,15 +66,15 @@ void preempt_enable(void)
|
||||
{
|
||||
#ifndef ENABLE_FUGAKU_HACKS
|
||||
if (cpu_local_var_initialized)
|
||||
--cpu_local_var(no_preempt);
|
||||
ihk_atomic_dec(&cpu_local_var(no_preempt));
|
||||
#else
|
||||
if (cpu_local_var_initialized) {
|
||||
--cpu_local_var(no_preempt);
|
||||
ihk_atomic_dec(&cpu_local_var(no_preempt));
|
||||
|
||||
if (cpu_local_var(no_preempt) < 0) {
|
||||
if (ihk_atomic_read(&cpu_local_var(no_preempt)) < 0) {
|
||||
//cpu_disable_interrupt();
|
||||
|
||||
__kprintf("%s: %d\n", __func__, cpu_local_var(no_preempt));
|
||||
__kprintf("%s: %d\n", __func__, ihk_atomic_read(&cpu_local_var(no_preempt)));
|
||||
__kprintf("TID: %d, call stack from builtin frame (most recent first):\n",
|
||||
cpu_local_var(current)->tid);
|
||||
__show_context_stack(cpu_local_var(current), (uintptr_t)&preempt_enable,
|
||||
@ -93,7 +93,7 @@ void preempt_enable(void)
|
||||
void preempt_disable(void)
|
||||
{
|
||||
if (cpu_local_var_initialized) {
|
||||
++cpu_local_var(no_preempt);
|
||||
ihk_atomic_inc(&cpu_local_var(no_preempt));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user