通訊協定
啟動器
在 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
會重設為初始值
並準備好啟動其他程序。
呼叫端負責使用資料呼叫 zx_process_start
在 ProcessStartData
中實際啟動程序。
只有在 status
為 ZX_OK
時,才會顯示 data
。
要求
名稱 | 類型 |
---|---|
info |
LaunchInfo
|
回應
名稱 | 類型 |
---|---|
status |
zx/Status
|
data |
ProcessStartData?
|
啟用
建立並啟動 info
所述的程序。
處理這則訊息後,Launcher
會重設為初始值
並準備好啟動其他程序。
只有在 status
為 ZX_OK
時,才會顯示 process
。
要求
名稱 | 類型 |
---|---|
info |
LaunchInfo
|
回應
名稱 | 類型 |
---|---|
status |
zx/Status
|
process |
handle<process>?
|
SetOptions
設定建立程序的選項。
多次呼叫此方法將覆寫目前的選項。
要求
名稱 | 類型 |
---|---|
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/Status
|
executable |
handle<vmo>?
|
ldsvc |
client_end:fuchsia.ldsvc/Loader?
|
結構
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 resource
在 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>
|
程序的初始執行緒。 啟動程序時應傳遞至 |
無預設 |
entry |
uint64
|
程序中初始進入點的地址。 啟動程序時應傳遞至 |
無預設 |
stack |
uint64
|
程序初始執行緒的堆疊指標值。 啟動程序時應傳遞至 |
無預設 |
bootstrap |
handle<channel>
|
在啟動時傳遞至程序的引導程序管道。 啟動程序時應傳遞至 |
無預設 |
vdso_base |
uint64
|
要傳遞至啟動時的程序的 vDSO 基準位址。 啟動程序時應傳遞至 |
無預設 |
base |
uint64
|
已載入 ELF 檔案的基礎載入位址。 通常由偵錯工具或其他檢查程序的工具使用。 |
無預設 |
常數
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MAX_RESOLVE_NAME_SIZE |
2048
|
uint32 |
|