zx_port_queue

摘要

將封包排入通訊埠佇列。

宣告

#include <zircon/syscalls.h>
#include <zircon/syscalls/port.h>

zx_status_t zx_port_queue(zx_handle_t handle, const zx_port_packet_t* packet);

說明

zx_port_queue() 會將使用者「封包」排入處理常式指定的通訊埠。

zx_port_wait() 會排除使用者封包。無法 使用及時方式可能會導致過度使用核心記憶體 例外狀況。詳情請參閱 ipc 限制

typedef struct zx_port_packet {
    uint64_t key;
    uint32_t type;
    zx_status_t status;
    union {
        zx_packet_user_t user;
        zx_packet_signal_t signal;
    };
} zx_port_packet_t;

「packet」type 應為 ZX_PKT_TYPE_USER,只有 user 聯集元素視為有效:

typedef union zx_packet_user {
    uint64_t u64[4];
    uint32_t u32[8];
    uint16_t u16[16];
    uint8_t   c8[32];
} zx_packet_user_t;

權限

handle 必須是 ZX_OBJ_TYPE_PORT 類型,且包含 ZX_RIGHT_WRITE

傳回值

zx_port_queue() 會在成功的封包佇列上傳回 ZX_OK

錯誤

ZX_ERR_BAD_HANDLE帳號代碼不是有效的帳號代碼

ZX_ERR_INVALID_ARGS「packet」是無效的指標。

ZX_ERR_WRONG_TYPE 帳號代碼並非通訊埠控制代碼。

ZX_ERR_ACCESS_DENIED 帳號代碼沒有 ZX_RIGHT_WRITE

另請參閱