Linux カーネル ソースのfutex.c で、制御がこのfutex_wake_op function
ポイントに到達する方法を理解しようとしていました。これは、上記の関数で-EFAULT が返され、書き込み可能である場合に発生します。futex_atomic_op_inuser
uaddr2
しかし、 のソースから、futex_atomic_op_inuser
でのみ -EFAULT を返すことがわかりますif (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
。
futex_atomic_op_inuser
__futex_atomic_op
次に、コードに -EFAULT があるマクロを呼び出しますが、EFAULT へのパスには呼び出しが含まれていないと言われています__futex_atomic_op
コントロールはどのようにして前述のポイントに到達しますか (つまり、if (!fshared)goto retry_private ;)then?
前もって感謝します!