2009年1月19日月曜日

cpu_interrpt() is probably not threadsafe.

う~む。
/* mask must never be zero, except for A20 change call */
void cpu_interrupt(CPUState *env, int mask)
{
。。。
    /* FIXME: This is probably not threadsafe.  A different thread could
       be in the middle of a read-modify-write operation.  */
    env->interrupt_request |= mask;
#if defined(USE_NPTL)
    /* FIXME: TB unchaining isn't SMP safe.  For now just ignore the
       problem and hope the cpu will stop of its own accord.  For userspace
       emulation this often isn't actually as bad as it sounds.  Often
       signals are used primarily to interrupt blocking syscalls.  */
#else
       。。。
}

0 件のコメント:

コメントを投稿