MCPcopy Create free account
hub / github.com/Bareflank/hypervisor / vmexit_entry

Function vmexit_entry

kernel/integration/bf_debug_op_dump_huge_pool.cpp:177–211  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

175 /// @param exit_reason the exit reason associated with the VMExit
176 ///
177 extern "C" void
178 vmexit_entry(
179 bsl::safe_u16::value_type const vsid, bsl::safe_u64::value_type const exit_reason) noexcept
180 {
181 /// NOTE:
182 /// - Call into the vmexit handler. This entry point serves as a
183 /// trampoline between C and C++. Specifically, the microkernel
184 /// cannot call a member function directly, and can only call
185 /// a C style function.
186 ///
187
188 auto const ret{dispatch_vmexit( // --
189 g_mut_gs, // --
190 g_mut_tls, // --
191 g_mut_sys, // --
192 g_mut_intrinsic, // --
193 g_mut_vp_pool, // --
194 g_mut_vs_pool, // --
195 bsl::to_u16(vsid), // --
196 bsl::to_u64(exit_reason))};
197
198 if (bsl::unlikely(!ret)) {
199 bsl::print<bsl::V>() << bsl::here();
200 return bf_control_op_exit();
201 }
202
203 /// NOTE:
204 /// - This code should never be reached. The VMExit handler should
205 /// always call one of the "run" ABIs to return back to the
206 /// microkernel when a VMExit is finished. If this is called, it
207 /// is because the VMExit handler returned with an error.
208 ///
209
210 return bf_control_op_exit();
211 }
212
213 /// <!-- description -->
214 /// @brief Implements the main entry function for this example

Callers

nothing calls this directly

Calls 2

dispatch_vmexitFunction · 0.50
bf_control_op_exitFunction · 0.50

Tested by

no test coverage detected