zx_process_create_shared

摘要

建立新程序,與其他程序共用部分位址空間。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_process_create_shared(zx_handle_t shared_proc,
                                     uint32_t options,
                                     const char* name,
                                     size_t name_size,
                                     zx_handle_t* proc_handle,
                                     zx_handle_t* restricted_vmar_handle);

說明

zx_process_create_shared() 會建立新程序,與 shared_proc 共用部分位址空間。建立的程序會新增至與 shared_proc 相同的工作。

建立的程序初始 ZX_PROP_PROCESS_* 屬性會與 shared_proc 的屬性相符。

shared_proc 必須是使用 ZX_PROCESS_SHARED 或透過 zx_process_create_shared() 建立。

所建立程序的位址空間會分成兩部分:共用部分 (與 shared_proc 共用) 和受限部分 (所建立程序專用)。程序中的每個執行緒都會在共用部分處於啟用狀態時開始執行。

詳情請參閱 zx_process_create()

權限

shared_proc 必須為 ZX_OBJ_TYPE_PROCESS 類型,且具有 ZX_RIGHT_MANAGE_PROCESSZX_RIGHT_GET_PROPERTY

請參閱「zx_process_create()」。

傳回值

成功時,zx_process_create_shared() 會傳回 ZX_OK、新程序的控制代碼 (透過 proc_handle),以及受限位址空間根目錄的控制代碼 (透過 restricted_vmar_handle)。如果失敗,系統會傳回負數錯誤值。

詳情請參閱 zx_process_create()

錯誤

ZX_ERR_INVALID_ARGS shared_proc 是有效的控制代碼,但指向的程序並非透過 zx_process_create_shared()zx_process_create() (搭配 ZX_PROCESS_SHARED) 建立。

ZX_ERR_BAD_HANDLE shared_proc 不是有效的控制代碼。

ZX_ERR_WRONG_TYPE shared_proc 不是程序控制代碼。

ZX_ERR_BAD_STATE shared_proc 是有效的控制代碼,但共用狀態已失效 (可能是因為共用狀態的所有程序都已終止)。

ZX_ERR_ACCESS_DENIED shared_proc 沒有 ZX_RIGHT_MANAGE_PROCESS 權限 (僅限非 ZX_HANDLE_INVALID 的情況)。

如要瞭解其他錯誤,請參閱 zx_process_create()

另請參閱