pub struct HandleMetadata {
pub handle_type: HandleType,
pub access_mode: AccessMode,
pub special_semantics: Option<SpecialSemantics>,
}
Expand description
Handle metadata for managing special semantics and ABI conversion
This metadata describes HOW a handle is being used, not WHAT the underlying KernelObject is. This enables proper ABI conversion, security policies, and resource management.
§Examples of Role-based Usage
// Same file object used in different roles
let config_file = file_obj.clone();
let log_file = file_obj.clone();
// Handle for reading configuration
let config_handle = task.handle_table.insert_with_metadata(
KernelObject::File(config_file),
HandleMetadata {
handle_type: HandleType::ConfigFile,
access_mode: AccessMode::ReadOnly,
special_semantics: Some(SpecialSemantics::CloseOnExec),
}
)?;
// Handle for writing logs
let log_handle = task.handle_table.insert_with_metadata(
KernelObject::File(log_file),
HandleMetadata {
handle_type: HandleType::LogOutput,
access_mode: AccessMode::WriteOnly,
special_semantics: Some(SpecialSemantics::Append),
}
)?;
Fields§
§handle_type: HandleType
§access_mode: AccessMode
§special_semantics: Option<SpecialSemantics>
Trait Implementations§
Source§impl Clone for HandleMetadata
impl Clone for HandleMetadata
Source§fn clone(&self) -> HandleMetadata
fn clone(&self) -> HandleMetadata
Returns a copy of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for HandleMetadata
impl Debug for HandleMetadata
Auto Trait Implementations§
impl Freeze for HandleMetadata
impl RefUnwindSafe for HandleMetadata
impl Send for HandleMetadata
impl Sync for HandleMetadata
impl Unpin for HandleMetadata
impl UnwindSafe for HandleMetadata
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)