Loading...
Searching...
No Matches
L4vcpu::Vcpu Class Reference
vCPU Support Library

C++ implementation of the vCPU save state area. More...

`#include <vcpu>`

Inheritance diagram for L4vcpu::Vcpu:
Collaboration diagram for L4vcpu::Vcpu:

## Public Member Functions

void | irq_disable () throw ()
| Disable the vCPU for event delivery.
unsigned | irq_disable_save () throw ()
| Disable the vCPU for event delivery and return previous state.
State * | state () throw ()
| Get state word.
State | state () const throw ()
| Get state word.
State * | saved_state () throw ()
| Get saved_state word.
State | saved_state () const throw ()
| Get saved_state word.
l4_uint16_t | sticky_flags () const throw ()
| Get sticky flags.
void | irq_enable (l4_utcb_t *utcb, l4vcpu_event_hndl_t do_event_work_cb, l4vcpu_setup_ipc_t setup_ipc) throw ()
| Enable the vCPU for event delivery.
void | irq_restore (unsigned s, l4_utcb_t *utcb, l4vcpu_event_hndl_t do_event_work_cb, l4vcpu_setup_ipc_t setup_ipc) throw ()
| Restore a previously saved IRQ/event state.
void | wait_for_event (l4_utcb_t *utcb, l4vcpu_event_hndl_t do_event_work_cb, l4vcpu_setup_ipc_t setup_ipc) throw ()
| Wait for event.
void | task (L4::Cap< L4::Task > const task=L4::Cap< L4::Task >::Invalid) throw ()
| Set the task of the vCPU.
int | is_page_fault_entry () const
| Return whether the entry reason was a page fault.
int | is_irq_entry () const
| Return whether the entry reason was an IRQ/IPC message.
l4_vcpu_regs_t * | r () throw ()
| Return pointer to register state.
l4_vcpu_regs_t const * | r () const throw ()
| Return pointer to register state.
l4_vcpu_ipc_regs_t * | i () throw ()
| Return pointer to IPC state.
l4_vcpu_ipc_regs_t const * | i () const throw ()
| Return pointer to IPC state.
void | entry_sp (l4_umword_t sp)
| Set vCPU entry stack pointer.
void | entry_ip (l4_umword_t ip)
| Set vCPU entry instruction pointer.
void | print_state (const char *prefix="") const throw ()
| Print the state of the vCPU.

## Static Public Member Functions

static int | ext_alloc (Vcpu **vcpu, l4_addr_t *ext_state, L4::Cap< L4::Task > task=L4Re::Env::env() ->task(), L4::Cap< L4Re::Rm > rm=L4Re::Env::env() ->rm()) throw ()
| Allocate state area for an extended vCPU.
static Vcpu * | cast (void *x) throw ()
| Cast a void pointer to a class pointer.
static Vcpu * | cast (l4_addr_t x) throw ()
| Cast an address to a class pointer.

## Detailed Description

C++ implementation of the vCPU save state area.

Definition at line 65 of file vcpu.

## Member Function Documentation

## cast() [1/2]

Vcpu * L4vcpu::Vcpu::cast | ( | l4_addr_t | x | ) |
throw | ( | ) |  |  |

inlinestatic

Cast an address to a class pointer.

Parameters

  x | Pointer.

Returns
  Pointer to Vcpu class.

Definition at line 269 of file vcpu.

## cast() [2/2]

Vcpu * L4vcpu::Vcpu::cast | ( | void * | x | ) |
throw | ( | ) |  |  |

inlinestatic

Cast a void pointer to a class pointer.

Parameters

  x | Pointer.

Returns
  Pointer to Vcpu class.

Definition at line 259 of file vcpu.

References cast().

Referenced by cast().

Here is the call graph for this function:
Here is the caller graph for this function:

## entry_ip()

void L4vcpu::Vcpu::entry_ip | ( | l4_umword_t | ip | ) |

inline

Set vCPU entry instruction pointer.

Parameters

  ip | Instruction pointer address to set.

Definition at line 232 of file vcpu.

References l4_vcpu_state_t::entry_ip.

## entry_sp()

void L4vcpu::Vcpu::entry_sp | ( | l4_umword_t | sp | ) |

inline

Set vCPU entry stack pointer.

Parameters

  sp | Stack pointer address to set.

Note
  The value is only used when entering from a user-task.

Definition at line 225 of file vcpu.

References l4_vcpu_state_t::entry_sp.

## ext_alloc()

int L4vcpu::Vcpu::ext_alloc | ( | Vcpu ** | vcpu,
|  | l4_addr_t * | ext_state,
|  | L4::Cap< L4::Task > | task = L4Re::Env::env() ->task(),
|  | L4::Cap< L4Re::Rm > | rm = L4Re::Env::env() ->rm() )
throw | ( | ) |  |  |

static

Allocate state area for an extended vCPU.

Parameters

  [out] | vcpu | Allocated vcpu-state area.
  [out] | ext_state | Allocated extended vcpu-state area.
  | task | Task to use for allocation, defaults to own task.
  | rm | Region manager to use for allocation defaults to standard region manager.

Returns
  0 for success, error code otherwise

References L4Re::Env::env(), and task().

Here is the call graph for this function:

## i() [1/2]

l4_vcpu_ipc_regs_t * L4vcpu::Vcpu::i | ( |  | ) |
throw | ( | ) |  |  |

inline

Return pointer to IPC state.

Returns
  Pointer to IPC state.

Definition at line 209 of file vcpu.

References l4_vcpu_state_t::i.

## i() [2/2]

l4_vcpu_ipc_regs_t const * L4vcpu::Vcpu::i | ( |  | ) | const
throw | ( | ) |  |  |

inline

Return pointer to IPC state.

Returns
  Pointer to IPC state.

Definition at line 216 of file vcpu.

References l4_vcpu_state_t::i.

## irq_disable_save()

unsigned L4vcpu::Vcpu::irq_disable_save | ( |  | ) |
throw | ( | ) |  |  |

inline

Disable the vCPU for event delivery and return previous state.

Returns
  IRQ state before disabling IRQs.

Definition at line 78 of file vcpu.

References l4vcpu_irq_disable_save().

Here is the call graph for this function:

## irq_enable()

void L4vcpu::Vcpu::irq_enable | ( | l4_utcb_t * | utcb,
|  | l4vcpu_event_hndl_t | do_event_work_cb,
|  | l4vcpu_setup_ipc_t | setup_ipc )
throw | ( | ) |  |  |

inline

Enable the vCPU for event delivery.

Parameters

  utcb | The UTCB to use.
  do_event_work_cb | Call-back function that is called in case an event (such as an interrupt) is pending.
  setup_ipc | Call-back function that is called before an IPC operation is called, and before event delivery is enabled.

Definition at line 135 of file vcpu.

References l4vcpu_irq_enable().

Here is the call graph for this function:

## irq_restore()

void L4vcpu::Vcpu::irq_restore | ( | unsigned | s,
|  | l4_utcb_t * | utcb,
|  | l4vcpu_event_hndl_t | do_event_work_cb,
|  | l4vcpu_setup_ipc_t | setup_ipc )
throw | ( | ) |  |  |

inline

Restore a previously saved IRQ/event state.

Parameters

  s | IRQ state to be restored.
  utcb | The UTCB to use.
  do_event_work_cb | Call-back function that is called in case an event (such as an interrupt) is pending.
  setup_ipc | Call-back function that is called before an IPC operation is called, and before event delivery is enabled.

Definition at line 150 of file vcpu.

References l4vcpu_irq_restore().

Here is the call graph for this function:

## is_irq_entry()

int L4vcpu::Vcpu::is_irq_entry | ( |  | ) | const

inline

Return whether the entry reason was an IRQ/IPC message.

return 0 if not, !=0 otherwise.

Definition at line 188 of file vcpu.

References l4vcpu_is_irq_entry().

Here is the call graph for this function:

## is_page_fault_entry()

int L4vcpu::Vcpu::is_page_fault_entry | ( |  | ) | const

inline

Return whether the entry reason was a page fault.

return 0 if not, !=0 otherwise.

Definition at line 181 of file vcpu.

References l4vcpu_is_page_fault_entry().

Here is the call graph for this function:

## r() [1/2]

l4_vcpu_regs_t * L4vcpu::Vcpu::r | ( |  | ) |
throw | ( | ) |  |  |

inline

Return pointer to register state.

Returns
  Pointer to register state.

Definition at line 195 of file vcpu.

References l4_vcpu_state_t::r.

## r() [2/2]

l4_vcpu_regs_t const * L4vcpu::Vcpu::r | ( |  | ) | const
throw | ( | ) |  |  |

inline

Return pointer to register state.

Returns
  Pointer to register state.

Definition at line 202 of file vcpu.

References l4_vcpu_state_t::r.

## saved_state() [1/2]

State * L4vcpu::Vcpu::saved_state | ( |  | ) |
throw | ( | ) |  |  |

inline

Get saved_state word.

Returns
  Pointer to saved_state word in the vCPU

Definition at line 106 of file vcpu.

References l4_vcpu_state_t::saved_state.

## saved_state() [2/2]

State L4vcpu::Vcpu::saved_state | ( |  | ) | const
throw | ( | ) |  |  |

inline

Get saved_state word.

Returns
  Pointer to saved_state word in the vCPU

Definition at line 116 of file vcpu.

References l4_vcpu_state_t::saved_state.

## state() [1/2]

State * L4vcpu::Vcpu::state | ( |  | ) |
throw | ( | ) |  |  |

inline

Get state word.

Returns
  Pointer to state word in the vCPU

Definition at line 88 of file vcpu.

References l4_vcpu_state_t::state.

## state() [2/2]

State L4vcpu::Vcpu::state | ( |  | ) | const
throw | ( | ) |  |  |

inline

Get state word.

Returns
  Pointer to state word in the vCPU

Definition at line 99 of file vcpu.

References l4_vcpu_state_t::state.

## task()

void L4vcpu::Vcpu::task | ( | L4::Cap< L4::Task > const | task = L4::Cap<L4::Task>::Invalid | ) |
throw | ( | ) |  |  |

inline

Set the task of the vCPU.

Parameters

  task | Task to set, defaults to invalid task.

Definition at line 174 of file vcpu.

References L4::Cap_base::Invalid, task(), and l4_vcpu_state_t::user_task.

Referenced by ext_alloc(), and task().

Here is the call graph for this function:
Here is the caller graph for this function:

## wait_for_event()

void L4vcpu::Vcpu::wait_for_event | ( | l4_utcb_t * | utcb,
|  | l4vcpu_event_hndl_t | do_event_work_cb,
|  | l4vcpu_setup_ipc_t | setup_ipc )
throw | ( | ) |  |  |

inline

Wait for event.

Parameters

  utcb | The UTCB to use.
  do_event_work_cb | Call-back function that is called in case an event (such as an interrupt) is pending.
  setup_ipc | Call-back function that is called before an IPC operation is called.

Note that event delivery remains disabled after this function returns.

Definition at line 166 of file vcpu.

References l4vcpu_wait_for_event().

Here is the call graph for this function:

The documentation for this class was generated from the following file:

- l4/vcpu/vcpu