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 moresource§impl Debug for UpcallError
impl Debug for UpcallError
impl Copy for UpcallError
Auto Trait Implementations§
impl Freeze for UpcallError
impl RefUnwindSafe for UpcallError
impl Send for UpcallError
impl Sync for UpcallError
impl Unpin for UpcallError
impl UnwindSafe for UpcallError
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)