摘要
建立新程序,與其他程序共用部分位址空間。
宣告
#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_PROCESS 和 ZX_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()。