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