摘要
建立新的程序,以便與其他程序共用部分位址空間。
宣告
#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
相同的工作。
shared_proc
必須使用 ZX_PROCESS_SHARED
或 zx_process_create_shared()
建立。
已建立程序的位址空間會分成兩組:與 shared_proc
共用的「共用」部分,以及僅限已建立程序的私人「受限」部分。過程中的每個執行緒都會從共用部分開始執行。
詳情請參閱 zx_process_create()
。
權限
shared_proc 必須是類型 ZX_OBJ_TYPE_PROCESS
且具有 ZX_RIGHT_MANAGE_PROCESS
。
請參閱「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_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()
。