在Linux內核源代碼中的futex.c的futex_wake_op function
中,我試圖理解控件如何達到this點。發生這種情況時,在上述函數中,futex_atomic_op_inuser
返回-EFAULT,並且但uaddr2
是可寫的。互斥代碼演練 - 返回EFAULT
但是從futex_atomic_op_inuser
的source,我看到它僅在if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
上返回-EFAULT。
反過來futex_atomic_op_inuser
調用的__futex_atomic_op
宏在那裏我看到在代碼中-EFAULT但我告訴路徑EFAULT不涉及調用__futex_atomic_op
如何控制達到上述點(即如果(!fshared)轉到retry_private;)那麼?
在此先感謝!
這是兩個問題。 EFAULT的路徑不涉及調用'__futex_atomic_op'。 –
@Igor我修改了這個問題。 – itisravi