1.1 --- a/libexec/include/exec/process.h Sun Jun 12 17:50:58 2022 +0200
1.2 +++ b/libexec/include/exec/process.h Sun Jun 12 18:04:17 2022 +0200
1.3 @@ -50,17 +50,18 @@
1.4
1.5 enum exec_task_caps
1.6 {
1.7 - L4_EXEC_PAGER_CAP = 0x10 << L4_CAP_SHIFT,
1.8 - L4_EXEC_RM_CAP = 0x11 << L4_CAP_SHIFT,
1.9 - L4_EXEC_MA_CAP = 0x12 << L4_CAP_SHIFT,
1.10 - L4_EXEC_KIP_CAP = 0x14 << L4_CAP_SHIFT,
1.11 + L4_EXEC_PAGER_CAP = 0x10UL << L4_CAP_SHIFT,
1.12 + L4_EXEC_RM_CAP = 0x11UL << L4_CAP_SHIFT,
1.13 + L4_EXEC_MA_CAP = 0x12UL << L4_CAP_SHIFT,
1.14 + L4_EXEC_KIP_CAP = 0x14UL << L4_CAP_SHIFT,
1.15 };
1.16
1.17 -/* The default first free capability index must follow those above. */
1.18 +/* The default first free capability index must follow those above. Any
1.19 + additional initial capabilities must elevate the index below. */
1.20
1.21 enum exec_task_cap_indexes
1.22 {
1.23 - L4_EXEC_FIRST_FREE_CAP_INDEX = 0x15,
1.24 + L4_EXEC_FIRST_FREE_CAP_INDEX = 0x15UL,
1.25 };
1.26
1.27
1.28 @@ -81,6 +82,10 @@
1.29 l4re_aux_t _aux;
1.30 l4re_env_t _env;
1.31
1.32 + /* Mapped capability details. */
1.33 +
1.34 + unsigned int _num_mapped_caps = 0;
1.35 +
1.36 /* Task and thread initialisation. */
1.37
1.38 long create_task();
1.39 @@ -88,9 +93,14 @@
1.40 long create_thread(l4_cap_idx_t *thread);
1.41
1.42 public:
1.43 - explicit Process();
1.44 + explicit Process(int reserved_threads = 1);
1.45 +
1.46 + long configure_task();
1.47
1.48 - long configure(l4_cap_idx_t server);
1.49 + long configure_thread(l4_cap_idx_t server);
1.50 +
1.51 + long map_capabilities(struct ipc_mapped_cap mapped_caps[],
1.52 + bool to_count = true);
1.53
1.54 long thread_start(l4_addr_t program_start, Stack &st);
1.55 };