zx_futex_requeue_Single_owner

摘要

喚醒一個執行緒等待 futex 的執行緒,並將更多等候程式排入另一個 Futex 等候佇列。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_futex_requeue_single_owner(const zx_futex_t* value_ptr,
                                          zx_futex_t current_value,
                                          const zx_futex_t* requeue_ptr,
                                          uint32_t requeue_count,
                                          zx_handle_t new_requeue_owner);

說明

喚醒一個等待 value_ptr 的執行緒,並將 value_ptr 的擁有權指派給 也就是喚醒的執行緒。如果沒有任何等待 value_ptr 的執行緒,則 value_ptr 的擁有權設為 none。

接著,從仍在等待 value_ptrrequeue_count 執行緒,從 將 value_ptr Futex 傳送至 requeue_ptr Futex。

zx_futex_requeue_single_ownerzx_futex_requeue 相似,但其 1 的 wake_count,但 zx_futex_requeue_single_owner 會變更 喚醒執行緒的 value_ptr 擁有權。 如需完整說明,請參閱 zx_futex_requeue()

權限

無。

傳回值

zx_futex_requeue_single_owner() 會在成功時傳回 ZX_OK

錯誤

ZX_ERR_INVALID_ARGS 符合下列其中一項條件:

  • value_ptrrequeue_ptr 不是有效的使用者空間指標
  • value_ptrrequeue_ptr 沒有與 sizeof(zx_futex_t) 邊界對齊。
  • value_ptrrequeue_ptr 相同
  • new_requeue_owner 目前是 value_ptrrequeue_ptr 等候者的成員

ZX_ERR_BAD_HANDLE new_requeue_owner 不是 ZX_HANDLE_INVALID,也不是有效的帳號代碼。

ZX_ERR_WRONG_TYPE new_requeue_owner 是有效的帳號代碼,但不是執行緒的控制代碼。

ZX_ERR_BAD_STATE current_valuevalue_ptr 的值不符。

另請參閱