Barrelfish
|
Dispatcher implementation. More...
Functions | |
void | disp_run (dispatcher_handle_t handle) |
Run entry point. More... | |
void | disp_lrpc (struct lmp_endpoint *ep, uint32_t bufpos, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, dispatcher_handle_t handle) |
LRPC entry point. More... | |
void | disp_pagefault (dispatcher_handle_t handle, lvaddr_t fault_address, uintptr_t error, lvaddr_t ip) |
Page fault entry point. More... | |
void | disp_pagefault_disabled (dispatcher_handle_t handle, lvaddr_t fault_address, uintptr_t error, lvaddr_t ip) |
Disabled page fault entry point. More... | |
void | disp_trap (dispatcher_handle_t handle, uintptr_t irq, uintptr_t error, lvaddr_t ip) |
Trap entry point. More... | |
void | disp_init_disabled (dispatcher_handle_t handle) |
Initialise the dispatcher, while disabled. More... | |
void | disp_yield_disabled (dispatcher_handle_t handle) |
Yield the dispatcher's CPU. More... | |
dispatcher_handle_t | disp_disable (void) |
Disable the dispatcher. More... | |
dispatcher_handle_t | disp_try_disable (bool *was_enabled) |
Try to disable the dispatcher. More... | |
void | disp_enable (dispatcher_handle_t handle) |
Re-enable the dispatcher. More... | |
const char * | disp_name (void) |
Return a pointer to the name field of the current dispatcher. More... | |
Dispatcher implementation.
dispatcher_handle_t disp_disable | ( | void | ) |
Disable the dispatcher.
This function disables the current dispatcher, returning a pointer to it. The dispatcher must be enabled.
While the dispatcher is disabled, the current thread cannot be preempted, and no incoming LMP messages can be received.
void disp_enable | ( | dispatcher_handle_t | handle | ) |
Re-enable the dispatcher.
This function re-enables the current dispatcher. The dispatcher must be disabled.
void disp_init_disabled | ( | dispatcher_handle_t | handle | ) |
Initialise the dispatcher, while disabled.
This function is called to setup the dispatcher structure while still disabled.
disp | Dispatcher |
void disp_lrpc | ( | struct lmp_endpoint * | ep, |
uint32_t | bufpos, | ||
uintptr_t | arg1, | ||
uintptr_t | arg2, | ||
uintptr_t | arg3, | ||
uintptr_t | arg4, | ||
dispatcher_handle_t | handle | ||
) |
LRPC entry point.
This function is called from assembly code when the kernel enters us to give us the CPU and deliver an LRPC message. The dispatcher is disabled.
ep | LMP endpoint structure |
bufpos | Reserved position in endpoint message buffer |
arg1 | Message payload |
arg2 | Message payload |
arg3 | Message payload |
arg4 | Message payload |
handle | Dispatcher pointer |
const char* disp_name | ( | void | ) |
Return a pointer to the name field of the current dispatcher.
May be called when the dispatcher is either enabled or disabled.
void disp_pagefault | ( | dispatcher_handle_t | handle, |
lvaddr_t | fault_address, | ||
uintptr_t | error, | ||
lvaddr_t | ip | ||
) |
Page fault entry point.
This function is called from assembly code when the kernel enters us to report a page fault while enabled.
handle | Dispatcher |
fault_address | Fault address |
error | CPU error code |
ip | Faulting instruction pointer |
void disp_pagefault_disabled | ( | dispatcher_handle_t | handle, |
lvaddr_t | fault_address, | ||
uintptr_t | error, | ||
lvaddr_t | ip | ||
) |
Disabled page fault entry point.
This function is called from assembly code when the kernel enters us to report a page fault while disabled.
handle | Dispatcher |
fault_address | Fault address |
error | CPU error code |
ip | Faulting instruction pointer |
void disp_run | ( | dispatcher_handle_t | handle | ) |
Run entry point.
This function is called from assembly code when the kernel enters us to give us the CPU.
disp | Dispatcher |
void disp_trap | ( | dispatcher_handle_t | handle, |
uintptr_t | irq, | ||
uintptr_t | error, | ||
lvaddr_t | ip | ||
) |
Trap entry point.
This function is called from assembly code when the kernel enters us to report a trap taken while we were enabled.
handle | Dispatcher |
irq | Trap vector |
error | CPU error code |
ip | Faulting instruction pointer |
dispatcher_handle_t disp_try_disable | ( | bool * | was_enabled | ) |
Try to disable the dispatcher.
This function disables the current dispatcher if it's enabled and returns a pointer to it.
While the dispatcher is disabled, the current thread cannot be preempted, and no incoming LMP messages can be received.
was_enabled | True, if the dispatcher was enabled |
void disp_yield_disabled | ( | dispatcher_handle_t | handle | ) |
Yield the dispatcher's CPU.
This function yields the CPU. It may only be called while disabled.
disp | Current dispatcher |