專家
啟動器
定義於 fuchsia.process/launcher.fidl
用於啟動程序的低階介面。
這個介面可用於手動組合程序。呼叫端會為新建立的程序提供所有功能。
該程序通常會使用 fdio_spawn
或 fdio_spawn_etc
,而非直接使用這個介面。fdio_spawn
和 fdio_spawn_etc
函式是透過這個介面實作。
需要處於停權狀態建立程序的偵錯工具和其他用戶端通常會直接使用這個介面。這些用戶端會使用 CreateWithoutStarting
方法建立程序,而不實際啟動。
新增引數
將指定的引數新增至程序的指令列。
多次呼叫此方法會串連引數。
要求
名稱 | 類型 |
---|---|
args |
vector<vector<uint8>>
|
AddEnvirons
將指定的變數新增至程序中的環境變數。
多次呼叫此方法會串連變數。
要求
名稱 | 類型 |
---|---|
environ |
vector<vector<uint8>>
|
新增帳號代碼
將指定的控點新增至程序的啟動控點。
多次呼叫此方法即可串連控點。
要求
名稱 | 類型 |
---|---|
handles |
vector<HandleInfo>
|
新增名稱
將指定的名稱新增至命名空間。
命名空間中的路徑不得重疊。詳情請參閱 https://fuchsia.dev/fuchsia-src/concepts/process/namespaces。
多次呼叫此方法會串連名稱。
要求
名稱 | 類型 |
---|---|
names |
vector<NameInfo>
|
建立開始時
建立 info
描述的程序,但不會啟動。
處理這則訊息後,Launcher
會重設為初始狀態,並準備好啟動其他程序。
呼叫端負責使用 ProcessStartData
中的資料呼叫 zx_process_start
以實際啟動程序。
data
只有在 status
為 ZX_OK
時才會顯示。
要求
名稱 | 類型 |
---|---|
info |
LaunchInfo
|
回應
名稱 | 類型 |
---|---|
status |
zx/Status
|
data |
ProcessStartData?
|
發布
建立並開始啟動 info
所述的程序。
處理這則訊息後,Launcher
會重設為初始狀態,並準備好啟動其他程序。
process
只有在 status
為 ZX_OK
時才會顯示。
要求
名稱 | 類型 |
---|---|
info |
LaunchInfo
|
回應
名稱 | 類型 |
---|---|
status |
zx/Status
|
process |
handle<process>?
|
設定選項
設定建立程序時使用的選項。
多次呼叫此方法會覆寫目前的選項。
要求
名稱 | 類型 |
---|---|
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
。如果存在,則適合在啟動程序時做為 PA_LDSVC_LOADER
處理使用。ldsvc
舉例來說,解析器可能會在套件中找到指定的 name
,並從套件傳回可執行二進位檔,以及限定為該套件的共用程式庫載入器。
要求
名稱 | 類型 |
---|---|
name |
string[2048]
|
回應
名稱 | 類型 |
---|---|
status |
zx/Status
|
executable |
handle<vmo>?
|
ldsvc |
fuchsia.ldsvc/Loader?
|
結構
HandleInfo 資源
定義於 fuchsia.process/launcher.fidl
系統在啟動時提供給程序的帳號代碼相關資訊。
程序會給程序一組初始控點,做為啟動程序順序的一部分。其中部分帳號代碼與程序引數 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 |
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>
|
程序的初始執行緒。 啟動程序時,應傳遞至 |
無預設 |
entry |
uint64
|
程序中初始進入點的地址。 啟動程序時,應傳遞至 |
無預設 |
stack |
uint64
|
程序初始執行緒的堆疊指標值。 啟動程序時,應傳遞至 |
無預設 |
bootstrap |
handle<channel>
|
要在啟動時傳遞至程序的啟動管道。 啟動程序時,應傳遞至 |
無預設 |
vdso_base |
uint64
|
要在啟動時傳遞至程序的 vDSO 基準地址。 啟動程序時,應傳遞至 |
無預設 |
base |
uint64
|
已載入 ELF 檔案的基本載入位址。 最常用於偵錯工具或其他檢查程序的工具。 |
無預設 |
場景
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MAX_RESOLVE_NAME_SIZE |
2048
|
uint32 |
|