fuchsia.process

新增:7

通訊協定

啟動器

定義於 fuchsia.process/launcher.fidl

用於啟動程序的低階介面。

這個介面用於手動組合程序。呼叫端會提供新建立程序的所有功能。

建立程序通常會使用 fdio_spawn 或 fdio_spawn_etc,而非直接使用這個介面。fdio_spawn 和 fdio_spawn_etc 函式是使用這個介面實作。

偵錯工具和其他需要在暫停狀態下建立程序的用戶端,通常會直接使用這個介面。這些用戶端會使用 CreateWithoutStarting 方法建立程序,但不會實際啟動程序。

AddArgs

將指定引數新增至程序的指令列。

多次呼叫這個方法會串連引數。

要求

名稱類型
args vector<vector<uint8>>

AddEnvirons

將指定變數新增至程序的環境變數。

多次呼叫這個方法會串連變數。

要求

名稱類型
environ vector<vector<uint8>>

AddHandles

將指定控制代碼新增至程序的啟動控制代碼。

多次呼叫這個方法會串連控制代碼。

要求

名稱類型
handles vector<HandleInfo>

AddNames

將指定名稱新增至程序的命名空間。

命名空間中的路徑不得重疊。詳情請參閱 https://fuchsia.dev/fuchsia-src/concepts/process/namespaces。

多次呼叫這個方法會串連名稱。

要求

名稱類型
names vector<NameInfo>

CreateWithoutStarting

建立 info 描述的程序,但不會啟動。

處理完這則訊息後,Launcher 會重設為初始狀態,並準備啟動另一個程序。

呼叫端必須使用 ProcessStartData 中的資料呼叫 zx_process_start,才能實際啟動程序。

只有在 status 為 ZX_OK 時,才會顯示 data。

要求

名稱類型
info LaunchInfo

回應

名稱類型
status zx/Result
data ProcessStartData?

啟動

建立並啟動 info 描述的程序。

處理完這則訊息後,Launcher 會重設為初始狀態,並準備啟動另一個程序。

只有在 status 為 ZX_OK 時,才會顯示 process。

要求

名稱類型
info LaunchInfo

回應

名稱類型
status zx/Result
process handle<process>?

SetOptions

設定建立程序時使用的選項。

多次呼叫這個方法會覆寫目前的選項。

新增:9

要求

名稱類型
options uint32

解析器

定義於 fuchsia.process/resolver.fidl

用於將名稱解析為執行檔和程式庫載入器的介面。

執行檔本身通常不足以建立工作程序,因為許多執行檔也會載入共用程式庫。在 Fuchsia 上,沒有共用程式庫的全域集區。相反地,每個程序都有相關聯的 fuchsia.ldsvc.Loader,可存取適合該程序的共用程式庫私人集區。

這個介面提供通訊協定,可將名稱解析為執行檔的 zx.Handle:VMO,以及相關聯共用資料庫的 fuchsia.ldsvc.Loader。

這個介面很少直接使用。相反地,fdio_spawn 和 fdio_spawn_etc 會在嘗試執行含有 #!resolve 指令的檔案時,在內部使用這個介面。

已淘汰

解決

將指定的 name 解析為 executable 和共用程式庫載入器。

如果存在,executable 適合用作 LaunchInfo 的 executable 屬性,特別是它會具有 ZX_RIGHT_EXECUTE。如果存在,ldsvc 適合在啟動程序時做為 PA_LDSVC_LOADER 控制代碼。

舉例來說,解析器可能會在套件中找到指定的 name,並從套件傳回可執行的二進位檔,以及限定於該套件的共用程式庫載入器。

要求

名稱類型
name string:2048

回應

名稱類型
status zx/Result
executable handle<vmo>?
ldsvc client_end:fuchsia.ldsvc/Loader?

STRUCTS

HandleInfo 資源

定義於 fuchsia.process/launcher.fidl

啟動時提供給程序的控制代碼相關資訊。

程序會在啟動序列中取得一組初始控制代碼。其中部分控制代碼與程序引數 ID 相關聯,這些 ID 會指定新程序預期的用途。

這個結構代表一個這類控點及其相關聯的 ID。

欄位類型說明預設
handle handle<handle>

這個程序引數要使用的控制代碼。

無預設值
id uint32

程序引數 ID。

如需常見程序引數的定義,請參閱 <zircon/processargs.h>。

無預設值

LaunchInfo 資源

定義於 fuchsia.process/launcher.fidl

啟動程序所需的資訊。

欄位類型說明預設
executable handle<vmo>

要在程序中執行的執行檔。

無預設值
job handle<job>

要在哪個工作建立程序。

無預設值
name string:32

要指派給所建立程序的名稱。

無預設值

NameInfo 資源

定義於 fuchsia.process/launcher.fidl

在啟動時提供給程序的命名空間項目。

程序會在啟動序列中取得一組初始控制代碼。其中部分控制代碼與路徑相關聯,這些路徑會指定新程序做為命名空間項目的預期用途。

這個結構代表一個這類控制代碼及其相關聯的命名空間路徑。

欄位類型說明預設
path fuchsia.io/Path

安裝相關目錄的路徑。

必須是絕對路徑 (即開頭為「/」)。

無預設值
directory client_end:fuchsia.io/Directory

相關聯的目錄。

無預設值

ProcessStartData 資源

定義於 fuchsia.process/launcher.fidl

啟動程序所需的資訊。

如要開始這項程序,請使用提供的引數呼叫 zx_process_start。

欄位類型說明預設
process handle<process>

建立的程序。

無預設值
root_vmar handle<vmar>

建立程序時建立的 vmar 物件。

請參閱 https://fuchsia.dev/fuchsia-src/reference/syscalls/process_create.md。

無預設值
thread handle<thread>

處理程序的初始執行緒。

啟動程序時,應傳遞至 zx_process_start。

無預設值
entry uint64

程序中初始進入點的位址。

啟動程序時,應傳遞至 zx_process_start。

無預設值
stack uint64

程序初始執行緒的堆疊指標值。

啟動程序時,應傳遞至 zx_process_start。

無預設值
bootstrap handle<channel>

啟動時要傳遞至程序的啟動程序管道。

啟動程序時,應傳遞至 zx_process_start。

無預設值
vdso_base uint64

啟動時要傳遞至程序的 vDSO 基本位址。

啟動程序時,應傳遞至 zx_process_start。

無預設值
base uint64

載入的 ELF 檔案基本載入位址。

通常由偵錯工具或其他檢查程序的工具使用。

無預設值

常數

名稱值類型說明
MAX_RESOLVE_NAME_SIZE 2048 uint32

Resolver 使用的名稱長度上限。