|
From: William C. <wc...@nc...> - 2002-10-18 21:36:28
|
I have been revising the ia64 port based on the comments I got on it.
The problem code is at the end of module/oprofile.c:op_entry():
if (likely(eflags & IF_MASK)) {
oprof_ready[cpu] = 1;
wake_up(&oprof_wait);
}
I am trying to understand all the issues with this snippet of code. This
code is executed during the nmi and could be executed at potentially any
time on the x86 including interrupting code in wake_up attempting to do
an atomic operation (nmi can interrupt even when interrupts are masked).
So this code appears to be making sure that atomic operations are not
being broken. Is there something else it is doing besides that?
-Will
|