Enum kernel::upcall::UpcallError
source · pub enum UpcallError {
InvalidSubscribeNum,
QueueFull,
KernelError,
}
Expand description
Errors which can occur when scheduling a process Upcall.
Scheduling a null-Upcall (which will not be delivered to a process) is deliberately not an error, given that a null-Upcall is a well-defined Upcall to be set by a process. It behaves essentially the same as if the process would set a proper Upcall, and would ignore all invocations, with the benefit that no task is inserted in the process’ task queue.
Variants§
InvalidSubscribeNum
The passed subscribe_num
exceeds the number of Upcalls
available for this process.
For a Grant
with n
upcalls,
this error is returned when
GrantKernelData::schedule_upcall
is invoked with
subscribe_num >= n
.
No Upcall has been scheduled, the call to
GrantKernelData::schedule_upcall
had no observable effects.
QueueFull
The process’ task queue is full.
This error can occur when too many tasks (for example, Upcalls) have been scheduled for a process, without that process yielding or having a chance to resume execution.
No Upcall has been scheduled, the call to
GrantKernelData::schedule_upcall
had no observable effects.
KernelError
A kernel-internal invariant has been violated.
This error should never happen. It can be returned if the
process is inactive (which should be caught by
Grant::enter
) or
process.tasks
was taken.
These cases cannot be reasonably handled.
Trait Implementations§
source§impl Clone for UpcallError
impl Clone for UpcallError
source§fn clone(&self) -> UpcallError
fn clone(&self) -> UpcallError
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more