From 6abeaedd1ea25b32ed77d0a788ce64f2e10d199b Mon Sep 17 00:00:00 2001 From: tsoutsman Date: Wed, 13 Dec 2023 21:15:37 +0000 Subject: [PATCH] Allow init to proceed without PS/2 keyboard or mouse (#1082) * If a PS/2 controller exists, but no keyboard or mouse is plugged in, `reset`ting those devices fails. * This PR handles that situation gracefully by logging an error and allowing initialization to continue without them. e06c84a3087e73f888abccdf459249f2e3655eec --- doc/app_io/trait.ImmutableWrite.html | 2 +- doc/arm_boards/index.html | 2 +- doc/async_channel/all.html | 1 - doc/async_channel/fn.new_channel.html | 14 -- doc/async_channel/fn.new_channel_with.html | 8 - doc/async_channel/index.html | 11 -- .../constant.BSS_SECTION_NAME.html | 2 +- .../constant.DATA_SECTION_NAME.html | 2 +- .../constant.EH_FRAME_SECTION_NAME.html | 2 +- ...onstant.GCC_EXCEPT_TABLE_SECTION_NAME.html | 2 +- .../constant.RODATA_SECTION_NAME.html | 2 +- .../constant.TEXT_SECTION_NAME.html | 2 +- .../constant.TLS_BSS_SECTION_NAME.html | 2 +- .../constant.TLS_DATA_SECTION_NAME.html | 2 +- doc/crate_metadata/enum.SectionType.html | 16 +- doc/crate_metadata/type.Shndx.html | 2 +- doc/crates.js | 2 +- doc/device_manager/fn.early_init.html | 2 +- doc/device_manager/fn.init.html | 2 +- doc/device_manager/index.html | 2 +- doc/environment/enum.Error.html | 4 +- doc/environment/index.html | 2 +- doc/environment/struct.Environment.html | 12 +- doc/environment/type.Result.html | 2 +- doc/implementors/core/clone/trait.Clone.js | 6 +- doc/implementors/core/cmp/trait.PartialEq.js | 2 +- doc/implementors/core/convert/trait.From.js | 2 +- .../core/default/trait.Default.js | 2 +- doc/implementors/core/fmt/trait.Debug.js | 4 +- doc/implementors/core/hash/trait.Hash.js | 2 +- doc/implementors/core/marker/trait.Copy.js | 2 +- doc/implementors/core/marker/trait.Freeze.js | 4 +- doc/implementors/core/marker/trait.Send.js | 2 +- .../core/marker/trait.StructuralPartialEq.js | 2 +- doc/implementors/core/marker/trait.Sync.js | 2 +- doc/implementors/core/marker/trait.Unpin.js | 2 +- doc/implementors/core/ops/drop/trait.Drop.js | 2 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 4 +- .../panic/unwind_safe/trait.UnwindSafe.js | 2 +- .../core2/io/traits/trait.Read.js | 2 +- doc/implementors/zerocopy/trait.FromBytes.js | 2 +- doc/ixgbe/enum.FilterProtocol.html | 2 +- doc/ixgbe/enum.LinkSpeedMbps.html | 6 +- doc/ixgbe/enum.RxBufferSizeKiB.html | 4 +- doc/ixgbe/fn.rx_poll_mq.html | 2 +- doc/ixgbe/fn.tx_send_mq.html | 2 +- doc/ixgbe/index.html | 2 +- doc/ixgbe/struct.IxgbeNic.html | 14 +- doc/pci/all.html | 2 +- doc/pci/enum.InterruptPin.html | 2 +- doc/pci/enum.PciCapability.html | 2 +- .../enum.PciConfigSpaceAccessMechanism.html | 2 +- doc/pci/fn.get_pci_buses.html | 2 +- doc/pci/fn.get_pci_device_bsf.html | 2 +- doc/pci/fn.init.html | 2 + doc/pci/fn.pci_device_iter.html | 2 +- doc/pci/index.html | 9 +- doc/pci/sidebar-items.js | 2 +- doc/pci/struct.MsixVectorEntry.html | 6 +- doc/pci/struct.MsixVectorTable.html | 6 +- doc/pci/struct.PciBus.html | 4 +- doc/pci/struct.PciDevice.html | 28 +-- doc/pci/struct.PciLocation.html | 12 +- doc/ps2/enum.DeviceToHostResponse.html | 4 +- doc/ps2/enum.HostToControllerCommand.html | 2 +- doc/ps2/enum.HostToKeyboardCommand.html | 4 +- doc/ps2/enum.HostToKeyboardCommandOrData.html | 4 +- doc/ps2/enum.HostToMouseCommand.html | 4 +- doc/ps2/enum.HostToMouseCommandOrData.html | 4 +- doc/ps2/enum.KeyboardType.html | 2 +- doc/ps2/enum.MouseId.html | 8 +- doc/ps2/enum.MousePacket.html | 4 +- doc/ps2/enum.MouseResolution.html | 4 +- doc/ps2/enum.MouseSampleRate.html | 4 +- doc/ps2/enum.PortTestResult.html | 4 +- doc/ps2/enum.ScancodeSet.html | 8 +- doc/ps2/fn.init.html | 2 +- doc/ps2/index.html | 2 +- .../struct.ControllerConfigurationByte.html | 70 +++---- doc/ps2/struct.ControllerToHostStatus.html | 20 +- doc/ps2/struct.LEDState.html | 44 ++--- doc/ps2/struct.MousePacket3.html | 10 +- doc/ps2/struct.MousePacket4.html | 34 ++-- doc/ps2/struct.MousePacketGeneric.html | 60 +++--- doc/ps2/struct.PS2Controller.html | 18 +- doc/ps2/struct.PS2Keyboard.html | 14 +- doc/ps2/struct.PS2Mouse.html | 12 +- doc/search-index.js | 10 +- doc/serial_port/struct.SerialPort.html | 10 +- doc/src-files.js | 2 +- doc/src/arm_boards/lib.rs.html | 6 + doc/src/console/lib.rs.html | 6 +- doc/src/device_manager/lib.rs.html | 50 +++-- doc/src/environment/lib.rs.html | 18 +- doc/src/ixgbe/lib.rs.html | 8 +- doc/src/pci/lib.rs.html | 182 ++++++++++++++++-- doc/src/ps2/lib.rs.html | 56 +++++- doc/src/serial_port/lib.rs.html | 4 +- .../lib.rs.html | 26 +-- doc/src/tty/channel.rs.html | 4 +- doc/src/tty/discipline.rs.html | 2 +- doc/stdio/struct.KeyEventQueueReader.html | 2 +- doc/stdio/struct.KeyEventQueueWriter.html | 2 +- doc/sync_channel/all.html | 1 + .../enum.ChannelStatus.html | 6 +- .../enum.Error.html | 6 +- doc/sync_channel/fn.new_channel.html | 14 ++ doc/sync_channel/fn.new_channel_with.html | 8 + doc/sync_channel/index.html | 11 ++ .../sidebar-items.js | 0 .../struct.Receiver.html | 26 +-- .../struct.Sender.html | 28 +-- doc/tty/struct.Master.html | 4 +- 113 files changed, 672 insertions(+), 421 deletions(-) delete mode 100644 doc/async_channel/all.html delete mode 100644 doc/async_channel/fn.new_channel.html delete mode 100644 doc/async_channel/fn.new_channel_with.html delete mode 100644 doc/async_channel/index.html create mode 100644 doc/pci/fn.init.html rename doc/src/{async_channel => sync_channel}/lib.rs.html (92%) create mode 100644 doc/sync_channel/all.html rename doc/{async_channel => sync_channel}/enum.ChannelStatus.html (54%) rename doc/{async_channel => sync_channel}/enum.Error.html (54%) create mode 100644 doc/sync_channel/fn.new_channel.html create mode 100644 doc/sync_channel/fn.new_channel_with.html create mode 100644 doc/sync_channel/index.html rename doc/{async_channel => sync_channel}/sidebar-items.js (100%) rename doc/{async_channel => sync_channel}/struct.Receiver.html (55%) rename doc/{async_channel => sync_channel}/struct.Sender.html (55%) diff --git a/doc/app_io/trait.ImmutableWrite.html b/doc/app_io/trait.ImmutableWrite.html index a7ad194735..1eedbfb5c8 100644 --- a/doc/app_io/trait.ImmutableWrite.html +++ b/doc/app_io/trait.ImmutableWrite.html @@ -4,4 +4,4 @@ // Provided method fn write_all(&self, buf: &[u8]) -> Result<()> { ... } -}

Required Methods§

source

fn write(&self, buf: &[u8]) -> Result<usize>

Provided Methods§

source

fn write_all(&self, buf: &[u8]) -> Result<()>

Implementations on Foreign Types§

source§

impl ImmutableWrite for Slave

source§

fn write(&self, buf: &[u8]) -> Result<usize>

source§

impl ImmutableWrite for StdioWriter

source§

fn write(&self, buf: &[u8]) -> Result<usize>

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn write(&self, buf: &[u8]) -> Result<usize>

Provided Methods§

source

fn write_all(&self, buf: &[u8]) -> Result<()>

Implementations on Foreign Types§

source§

impl ImmutableWrite for StdioWriter

source§

fn write(&self, buf: &[u8]) -> Result<usize>

source§

impl ImmutableWrite for Slave

source§

fn write(&self, buf: &[u8]) -> Result<usize>

Implementors§

\ No newline at end of file diff --git a/doc/arm_boards/index.html b/doc/arm_boards/index.html index ccf0b5e150..03be287e4d 100644 --- a/doc/arm_boards/index.html +++ b/doc/arm_boards/index.html @@ -1,5 +1,5 @@ arm_boards - Rust

Crate arm_boards

source ·
Expand description

Configuration and definitions for specific boards on aarch64 systems.

+
  • All Items
  • Crate arm_boards

    source ·
    Expand description

    Configuration and definitions for specific boards on aarch64 systems.

    Board NameNum CPUsInterrupt ControllerSecondary CPU Startup Method
    qemu_virt4GICv3PSCI
    diff --git a/doc/async_channel/all.html b/doc/async_channel/all.html deleted file mode 100644 index c25b8bb758..0000000000 --- a/doc/async_channel/all.html +++ /dev/null @@ -1 +0,0 @@ -List of all items in this crate
    \ No newline at end of file diff --git a/doc/async_channel/fn.new_channel.html b/doc/async_channel/fn.new_channel.html deleted file mode 100644 index e3306fb37f..0000000000 --- a/doc/async_channel/fn.new_channel.html +++ /dev/null @@ -1,14 +0,0 @@ -new_channel in async_channel - Rust

    Function async_channel::new_channel

    source ·
    pub fn new_channel<T: Send>(minimum_capacity: usize) -> (Sender<T>, Receiver<T>)
    Expand description

    Create a new channel that allows senders and receivers to -asynchronously exchange messages via an internal intermediary buffer.

    -

    This channel’s buffer has a bounded capacity of minimum size 2 messages, -and it must be a power of 2 due to the restrictions of the current MPMC queue type that is used. -The given minimum_capacity will be rounded up to the next largest power of 2, with a minimum value of 2.

    -

    When the number of pending (buffered) messages is larger than the capacity, -the channel is considered full. -Depending on whether a non-blocking or blocking send function is invoked, -future attempts to send another message will either block or return a Full error -until the channel’s buffer is drained by a receiver and space in the buffer becomes available.

    -

    For the vast majority of use cases, this function is recommended way to create -a new channel, because there is no need to specify a deadlock prevention method. -To create a channel with different deadlock prevention, see new_channel_with().

    -
    \ No newline at end of file diff --git a/doc/async_channel/fn.new_channel_with.html b/doc/async_channel/fn.new_channel_with.html deleted file mode 100644 index 4cc59d41d2..0000000000 --- a/doc/async_channel/fn.new_channel_with.html +++ /dev/null @@ -1,8 +0,0 @@ -new_channel_with in async_channel - Rust
    pub fn new_channel_with<T: Send, P: DeadlockPrevention>(
    -    minimum_capacity: usize
    -) -> (Sender<T, P>, Receiver<T, P>)
    Expand description

    Creates a new asynchronous channel with the specified deadlock prevention method.

    -

    See new_channel() for more details.

    -

    The asynchronous channel uses a wait queue internally and hence exposes a -deadlock prevention type parameter P that is [Spin] by default. -See [WaitQueue]’s documentation for more info on setting this type parameter.

    -
    \ No newline at end of file diff --git a/doc/async_channel/index.html b/doc/async_channel/index.html deleted file mode 100644 index 3d8fdf259b..0000000000 --- a/doc/async_channel/index.html +++ /dev/null @@ -1,11 +0,0 @@ -async_channel - Rust

    Crate async_channel

    source ·
    Expand description

    An asynchronous channel for Inter-Task Communication (ITC) with an internal queue for buffering messages.

    -

    This crate offers an asynchronous channel that allows multiple tasks -to exchange messages through the use of a bounded-capacity intermediate buffer. -Unlike the rendezvous channel, the sender and receiver do not need to rendezvous to send or receive data.

    -

    Only Send types can be sent or received through the channel.

    -

    This is not a zero-copy channel; to avoid copying large messages, -use a reference type like Box or another layer of indirection.

    -

    Structs

    • The receiver side of a channel.
    • The sender (transmit) side of a channel.

    Enums

    • Indicates whether channel is Connected or Disconnected
    • Error type for tracking different type of errors sender and receiver -can encounter.

    Functions

    • Create a new channel that allows senders and receivers to -asynchronously exchange messages via an internal intermediary buffer.
    • Creates a new asynchronous channel with the specified deadlock prevention method.
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.BSS_SECTION_NAME.html b/doc/crate_metadata/constant.BSS_SECTION_NAME.html index 1712c1fc76..b421a41a64 100644 --- a/doc/crate_metadata/constant.BSS_SECTION_NAME.html +++ b/doc/crate_metadata/constant.BSS_SECTION_NAME.html @@ -1 +1 @@ -BSS_SECTION_NAME in crate_metadata - Rust
    pub const BSS_SECTION_NAME: &'static str;
    \ No newline at end of file +BSS_SECTION_NAME in crate_metadata - Rust
    pub const BSS_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.DATA_SECTION_NAME.html b/doc/crate_metadata/constant.DATA_SECTION_NAME.html index 34cc40f24c..7b27584b0f 100644 --- a/doc/crate_metadata/constant.DATA_SECTION_NAME.html +++ b/doc/crate_metadata/constant.DATA_SECTION_NAME.html @@ -1 +1 @@ -DATA_SECTION_NAME in crate_metadata - Rust
    pub const DATA_SECTION_NAME: &'static str;
    \ No newline at end of file +DATA_SECTION_NAME in crate_metadata - Rust
    pub const DATA_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html b/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html index 865068acdb..f99eb53bb5 100644 --- a/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html +++ b/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html @@ -1 +1 @@ -EH_FRAME_SECTION_NAME in crate_metadata - Rust
    pub const EH_FRAME_SECTION_NAME: &'static str;
    \ No newline at end of file +EH_FRAME_SECTION_NAME in crate_metadata - Rust
    pub const EH_FRAME_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html b/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html index 87e58d747a..c7dacfe09d 100644 --- a/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html +++ b/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html @@ -1 +1 @@ -GCC_EXCEPT_TABLE_SECTION_NAME in crate_metadata - Rust
    pub const GCC_EXCEPT_TABLE_SECTION_NAME: &'static str;
    \ No newline at end of file +GCC_EXCEPT_TABLE_SECTION_NAME in crate_metadata - Rust
    pub const GCC_EXCEPT_TABLE_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.RODATA_SECTION_NAME.html b/doc/crate_metadata/constant.RODATA_SECTION_NAME.html index b7e9837444..94c3354ed9 100644 --- a/doc/crate_metadata/constant.RODATA_SECTION_NAME.html +++ b/doc/crate_metadata/constant.RODATA_SECTION_NAME.html @@ -1 +1 @@ -RODATA_SECTION_NAME in crate_metadata - Rust
    pub const RODATA_SECTION_NAME: &'static str;
    \ No newline at end of file +RODATA_SECTION_NAME in crate_metadata - Rust
    pub const RODATA_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.TEXT_SECTION_NAME.html b/doc/crate_metadata/constant.TEXT_SECTION_NAME.html index 5fc2741758..683a65d95d 100644 --- a/doc/crate_metadata/constant.TEXT_SECTION_NAME.html +++ b/doc/crate_metadata/constant.TEXT_SECTION_NAME.html @@ -1 +1 @@ -TEXT_SECTION_NAME in crate_metadata - Rust
    pub const TEXT_SECTION_NAME: &'static str;
    \ No newline at end of file +TEXT_SECTION_NAME in crate_metadata - Rust
    pub const TEXT_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html b/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html index 2b346c6a00..557b17f0f5 100644 --- a/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html +++ b/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html @@ -1 +1 @@ -TLS_BSS_SECTION_NAME in crate_metadata - Rust
    pub const TLS_BSS_SECTION_NAME: &'static str;
    \ No newline at end of file +TLS_BSS_SECTION_NAME in crate_metadata - Rust
    pub const TLS_BSS_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html b/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html index 1a7eea9f1f..4c6d1a2a33 100644 --- a/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html +++ b/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html @@ -1 +1 @@ -TLS_DATA_SECTION_NAME in crate_metadata - Rust
    pub const TLS_DATA_SECTION_NAME: &'static str;
    \ No newline at end of file +TLS_DATA_SECTION_NAME in crate_metadata - Rust
    pub const TLS_DATA_SECTION_NAME: &'static str;
    \ No newline at end of file diff --git a/doc/crate_metadata/enum.SectionType.html b/doc/crate_metadata/enum.SectionType.html index 35ee6562cd..dc7bcf65fa 100644 --- a/doc/crate_metadata/enum.SectionType.html +++ b/doc/crate_metadata/enum.SectionType.html @@ -1,4 +1,4 @@ -SectionType in crate_metadata - Rust

    Implementations§

    §

    impl SectionType

    pub const fn name(&self) -> &'static str

    Returns the const &str name of this SectionType.

    -

    pub fn is_data_or_bss(&self) -> bool

    Returns true if Data or Bss, otherwise false.

    -

    pub fn is_tls(&self) -> bool

    Returns true if TlsData or TlsBss, otherwise false.

    -

    Trait Implementations§

    §

    impl Clone for SectionType

    §

    fn clone(&self) -> SectionType

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl Debug for SectionType

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl<'de> Deserialize<'de> for SectionType

    §

    fn deserialize<__D>( +

    Implementations§

    source§

    impl SectionType

    source

    pub const fn name(&self) -> &'static str

    Returns the const &str name of this SectionType.

    +
    source

    pub fn is_data_or_bss(&self) -> bool

    Returns true if Data or Bss, otherwise false.

    +
    source

    pub fn is_tls(&self) -> bool

    Returns true if TlsData or TlsBss, otherwise false.

    +

    Trait Implementations§

    source§

    impl Clone for SectionType

    source§

    fn clone(&self) -> SectionType

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SectionType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for SectionType

    source§

    fn deserialize<__D>( __deserializer: __D ) -> Result<SectionType, <__D as Deserializer<'de>>::Error>where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl PartialEq<SectionType> for SectionType

    §

    fn eq(&self, other: &SectionType) -> bool

    This method tests for self and other values to be equal, and is used + __D: Deserializer<'de>,
    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl PartialEq<SectionType> for SectionType

    source§

    fn eq(&self, other: &SectionType) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    §

    impl Serialize for SectionType

    §

    fn serialize<__S>( +sufficient, and should not be overridden without very good reason.

    source§

    impl Serialize for SectionType

    source§

    fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl Copy for SectionType

    §

    impl StructuralPartialEq for SectionType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for SectionType

    source§

    impl StructuralPartialEq for SectionType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/crate_metadata/type.Shndx.html b/doc/crate_metadata/type.Shndx.html index 02657da92b..3781a112ea 100644 --- a/doc/crate_metadata/type.Shndx.html +++ b/doc/crate_metadata/type.Shndx.html @@ -1,4 +1,4 @@ -Shndx in crate_metadata - Rust

    Type Alias crate_metadata::Shndx

    pub type Shndx = usize;
    Expand description

    A Section Header iNDeX (SHNDX), as specified by the ELF format. +Shndx in crate_metadata - Rust

    Type Alias crate_metadata::Shndx

    source ·
    pub type Shndx = usize;
    Expand description

    A Section Header iNDeX (SHNDX), as specified by the ELF format. Even though this is typically encoded as a u16, its decoded form can exceed the max size of u16.

    \ No newline at end of file diff --git a/doc/crates.js b/doc/crates.js index 3ce3b09ea0..58befecbf4 100644 --- a/doc/crates.js +++ b/doc/crates.js @@ -1 +1 @@ -window.ALL_CRATES = ["___Theseus_Crates___","acpi","acpi_table","acpi_table_handler","ap_start","apic","app_io","arm_boards","async_channel","ata","atomic_linked_list","block_allocator","block_cache","boot_info","bootloader_modules","captain","catch_unwind","cls","cls_allocator","cls_macros","color","compositor","console","context_switch","context_switch_avx","context_switch_regular","context_switch_sse","cow_arc","cpu","crate_metadata","crate_metadata_serde","crate_name_utils","crate_swap","debug_info","debugit","deferred_interrupt_tasks","dereffer","device_manager","dfqueue","displayable","dmar","dreadnought","e1000","early_printer","early_tls","environment","event_types","exceptions_early","exceptions_full","external_unwind_info","fadt","fault_crate_swap","fault_log","first_application","font","frame_allocator","framebuffer","framebuffer_compositor","framebuffer_drawer","framebuffer_printer","fs_node","gdt","generic_timer_aarch64","gic","heap","heapfile","hpet","http_client","idle","intel_ethernet","interrupt_controller","interrupts","io","ioapic","iommu","irq_safety","ixgbe","kernel_config","keyboard","keycodes_ascii","libterm","local_storage_initializer","lockable","locked_idt","logger","madt","memfs","memory","memory_aarch64","memory_initialization","memory_structs","memory_x86_64","mlx5","mlx_ethernet","mod_mgmt","mouse","mouse_data","multicore_bringup","multiple_heaps","nano_core","net","nic_buffers","nic_initialization","nic_queues","no_drop","ota_update_client","owned_borrowed_trait","page_allocator","page_attribute_table","page_table_entry","panic_entry","panic_wrapper","path","pci","percent_encoding","physical_nic","pic","pit_clock","pit_clock_basic","pmu_x86","port_io","preemption","ps2","pte_flags","random","range_inclusive","rendezvous","root","rsdp","rsdt","rtc","scheduler","scheduler_epoch","scheduler_priority","scheduler_round_robin","sdt","serial_port","serial_port_basic","shapes","signal_handler","simd_personality","simd_test","simple_ipc","single_simd_task_optimization","slabmalloc","slabmalloc_safe","slabmalloc_unsafe","sleep","spawn","stack","stack_trace","stack_trace_frame_pointers","state_store","stdio","storage_device","storage_manager","str_ref","sync_block","sync_preemption","task","task_fs","task_struct","text_display","text_terminal","theseus_features","thread_local_macro","time","tlb_shootdown","tsc","tss","tty","uart_pl011","unwind","vfs_node","vga_buffer","virtual_nic","waet","wait_condition","wait_guard","wait_queue","waker","waker_generic","wasi_interpreter","window","window_inner","window_manager"]; \ No newline at end of file +window.ALL_CRATES = ["___Theseus_Crates___","acpi","acpi_table","acpi_table_handler","ap_start","apic","app_io","arm_boards","ata","atomic_linked_list","block_allocator","block_cache","boot_info","bootloader_modules","captain","catch_unwind","cls","cls_allocator","cls_macros","color","compositor","console","context_switch","context_switch_avx","context_switch_regular","context_switch_sse","cow_arc","cpu","crate_metadata","crate_metadata_serde","crate_name_utils","crate_swap","debug_info","debugit","deferred_interrupt_tasks","dereffer","device_manager","dfqueue","displayable","dmar","dreadnought","e1000","early_printer","early_tls","environment","event_types","exceptions_early","exceptions_full","external_unwind_info","fadt","fault_crate_swap","fault_log","first_application","font","frame_allocator","framebuffer","framebuffer_compositor","framebuffer_drawer","framebuffer_printer","fs_node","gdt","generic_timer_aarch64","gic","heap","heapfile","hpet","http_client","idle","intel_ethernet","interrupt_controller","interrupts","io","ioapic","iommu","irq_safety","ixgbe","kernel_config","keyboard","keycodes_ascii","libterm","local_storage_initializer","lockable","locked_idt","logger","madt","memfs","memory","memory_aarch64","memory_initialization","memory_structs","memory_x86_64","mlx5","mlx_ethernet","mod_mgmt","mouse","mouse_data","multicore_bringup","multiple_heaps","nano_core","net","nic_buffers","nic_initialization","nic_queues","no_drop","ota_update_client","owned_borrowed_trait","page_allocator","page_attribute_table","page_table_entry","panic_entry","panic_wrapper","path","pci","percent_encoding","physical_nic","pic","pit_clock","pit_clock_basic","pmu_x86","port_io","preemption","ps2","pte_flags","random","range_inclusive","rendezvous","root","rsdp","rsdt","rtc","scheduler","scheduler_epoch","scheduler_priority","scheduler_round_robin","sdt","serial_port","serial_port_basic","shapes","signal_handler","simd_personality","simd_test","simple_ipc","single_simd_task_optimization","slabmalloc","slabmalloc_safe","slabmalloc_unsafe","sleep","spawn","stack","stack_trace","stack_trace_frame_pointers","state_store","stdio","storage_device","storage_manager","str_ref","sync_block","sync_channel","sync_preemption","task","task_fs","task_struct","text_display","text_terminal","theseus_features","thread_local_macro","time","tlb_shootdown","tsc","tss","tty","uart_pl011","unwind","vfs_node","vga_buffer","virtual_nic","waet","wait_condition","wait_guard","wait_queue","waker","waker_generic","wasi_interpreter","window","window_inner","window_manager"]; \ No newline at end of file diff --git a/doc/device_manager/fn.early_init.html b/doc/device_manager/fn.early_init.html index b085e13401..b391f5c790 100644 --- a/doc/device_manager/fn.early_init.html +++ b/doc/device_manager/fn.early_init.html @@ -1,4 +1,4 @@ -early_init in device_manager - Rust

    Function device_manager::early_init

    source ·
    pub fn early_init(
    +early_init in device_manager - Rust

    Function device_manager::early_init

    source ·
    pub fn early_init(
         rsdp_address: Option<PhysicalAddress>,
         kernel_mmi: &mut MemoryManagementInfo
     ) -> Result<(), &'static str>
    Expand description

    Performs early-stage initialization for simple devices needed during early boot.

    diff --git a/doc/device_manager/fn.init.html b/doc/device_manager/fn.init.html index 8659b5d2ba..741c61734c 100644 --- a/doc/device_manager/fn.init.html +++ b/doc/device_manager/fn.init.html @@ -1,4 +1,4 @@ -init in device_manager - Rust

    Function device_manager::init

    source ·
    pub fn init(
    +init in device_manager - Rust

    Function device_manager::init

    source ·
    pub fn init(
         key_producer: Queue<Event>,
         mouse_producer: Queue<Event>
     ) -> Result<(), &'static str>
    Expand description

    Initializes all other devices not initialized during early_init().

    diff --git a/doc/device_manager/index.html b/doc/device_manager/index.html index 8a72c8333e..88c0e887ff 100644 --- a/doc/device_manager/index.html +++ b/doc/device_manager/index.html @@ -1,2 +1,2 @@ device_manager - Rust

    Crate device_manager

    source ·

    Functions

    • Performs early-stage initialization for simple devices needed during early boot.
    • Initializes all other devices not initialized during early_init().
    \ No newline at end of file +
  • All Items
  • Crate device_manager

    source ·

    Functions

    • Performs early-stage initialization for simple devices needed during early boot.
    • Initializes all other devices not initialized during early_init().
    \ No newline at end of file diff --git a/doc/environment/enum.Error.html b/doc/environment/enum.Error.html index 88ede1c908..8e1c2393c0 100644 --- a/doc/environment/enum.Error.html +++ b/doc/environment/enum.Error.html @@ -1,10 +1,10 @@ -Error in environment - Rust

    Enum environment::Error

    source ·
    pub enum Error {
    +Error in environment - Rust

    Enum environment::Error

    source ·
    pub enum Error {
         NotADirectory,
         NotFound,
     }
    Expand description

    The error type for environment operations.

    Variants§

    §

    NotADirectory

    A filesystem node was, unexpectedly, not a directory.

    §

    NotFound

    A filesystem node wasn’t found.

    -

    Trait Implementations§

    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/environment/index.html b/doc/environment/index.html index 60e1b5edff..78216efae3 100644 --- a/doc/environment/index.html +++ b/doc/environment/index.html @@ -1,3 +1,3 @@ environment - Rust

    Crate environment

    source ·

    Structs

    Crate environment

    source ·

    Structs

    • A structure that contains environment state for a given Task or group of Tasks.

    Enums

    • The error type for environment operations.

    Type Aliases

    \ No newline at end of file diff --git a/doc/environment/struct.Environment.html b/doc/environment/struct.Environment.html index 9553c8c54a..3de38b89ae 100644 --- a/doc/environment/struct.Environment.html +++ b/doc/environment/struct.Environment.html @@ -9,12 +9,12 @@

    Fields§

    §working_dir: DirRef

    The “current working directory”, i.e., where a task’s relative path begins upon first execution.

    -
    §variables: HashMap<String, String>

    Implementations§

    source§

    impl Environment

    source

    pub fn cwd(&self) -> String

    Returns the absolute file path of the current working directory.

    -
    source

    pub fn chdir(&mut self, path: &Path) -> Result<()>

    Changes the current working directory.

    -
    source

    pub fn get(&self, key: &str) -> Option<&String>

    Returns the value of the environment variable with the given key.

    -
    source

    pub fn set(&mut self, key: String, value: String)

    Sets an environment variable with the given key and value.

    -
    source

    pub fn unset(&mut self, key: &str)

    Unsets the environment variable with the given key.

    -

    Trait Implementations§

    source§

    impl Default for Environment

    source§

    fn default() -> Environment

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    §variables: HashMap<String, String>

    Implementations§

    source§

    impl Environment

    source

    pub fn cwd(&self) -> String

    Returns the absolute file path of the current working directory.

    +
    source

    pub fn chdir(&mut self, path: &Path) -> Result<()>

    Changes the current working directory.

    +
    source

    pub fn get(&self, key: &str) -> Option<&String>

    Returns the value of the environment variable with the given key.

    +
    source

    pub fn set(&mut self, key: String, value: String)

    Sets an environment variable with the given key and value.

    +
    source

    pub fn unset(&mut self, key: &str)

    Unsets the environment variable with the given key.

    +

    Trait Implementations§

    source§

    impl Default for Environment

    source§

    fn default() -> Environment

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/environment/type.Result.html b/doc/environment/type.Result.html index f1b0f3fddb..0915596c3a 100644 --- a/doc/environment/type.Result.html +++ b/doc/environment/type.Result.html @@ -1,4 +1,4 @@ -Result in environment - Rust

    Type Alias environment::Result

    source ·
    pub type Result<T> = Result<T, Error>;
    Expand description

    A specialized Result type for environment operations.

    +Result in environment - Rust

    Type Alias environment::Result

    source ·
    pub type Result<T> = Result<T, Error>;
    Expand description

    A specialized Result type for environment operations.

    Aliased Type§

    enum Result<T> {
         Ok(T),
         Err(Error),
    diff --git a/doc/implementors/core/clone/trait.Clone.js b/doc/implementors/core/clone/trait.Clone.js
    index c2fadc703e..e93923b7e2 100644
    --- a/doc/implementors/core/clone/trait.Clone.js
    +++ b/doc/implementors/core/clone/trait.Clone.js
    @@ -1,7 +1,6 @@
     (function() {var implementors = {
     "apic":[["impl Clone for LapicTimerDivide"],["impl Clone for InterruptChip"],["impl Clone for LapicDeliveryMode"],["impl Clone for ApicId"]],
     "app_io":[["impl Clone for IoStreams"]],
    -"async_channel":[["impl<T: Send, P: DeadlockPrevention> Clone for Sender<T, P>"],["impl Clone for ChannelStatus"],["impl<T: Send, P: DeadlockPrevention> Clone for Receiver<T, P>"]],
     "ata":[["impl Clone for AtaFirmwareVersion"],["impl Clone for AtaStatus"],["impl Clone for AtaSerialNumber"],["impl<'c> Clone for IdeControllerIter<'c>"],["impl Clone for AtaIdentifyData"],["impl Clone for AtaError"],["impl Clone for AtaModelNumber"]],
     "boot_info":[["impl Clone for FramebufferFormat"]],
     "color":[["impl Clone for Color"]],
    @@ -15,7 +14,7 @@
     "external_unwind_info":[["impl Clone for ExternalUnwindInfo"]],
     "fadt":[["impl Clone for Fadt"]],
     "fault_crate_swap":[["impl Clone for SwapRanges"]],
    -"fault_log":[["impl Clone for FaultType"],["impl Clone for FaultEntry"],["impl Clone for RecoveryAction"]],
    +"fault_log":[["impl Clone for RecoveryAction"],["impl Clone for FaultEntry"],["impl Clone for FaultType"]],
     "frame_allocator":[["impl Clone for PhysicalMemoryRegion"],["impl Clone for MemoryRegionType"]],
     "framebuffer":[["impl Clone for RGBPixel"],["impl Clone for AlphaPixel"]],
     "fs_node":[["impl Clone for FileOrDir"]],
    @@ -49,13 +48,14 @@
     "stdio":[["impl Clone for KeyEventQueueReader"],["impl Clone for KeyEventQueueWriter"],["impl Clone for StdioWriter"],["impl Clone for StdioReader"]],
     "str_ref":[["impl Clone for StrRef"]],
     "sync_block":[["impl Clone for Block"]],
    +"sync_channel":[["impl<T: Send, P: DeadlockPrevention> Clone for Sender<T, P>"],["impl<T: Send, P: DeadlockPrevention> Clone for Receiver<T, P>"],["impl Clone for ChannelStatus"]],
     "sync_preemption":[["impl Clone for DisablePreemption"]],
     "task":[["impl Clone for TaskRef"],["impl Clone for WeakTaskRef"]],
     "task_struct":[["impl Clone for RunState"]],
     "text_terminal":[["impl Clone for Unit"],["impl Clone for TerminalMode"],["impl Clone for ScreenSize"],["impl Clone for Column"],["impl Clone for ScrollAction"],["impl Clone for Row"],["impl Clone for LineIndex"],["impl Clone for UnitIndex"],["impl Clone for ScrollPosition"],["impl Clone for ShowCursor"],["impl Clone for FormatFlags"],["impl Clone for CarriageReturnSendsLineFeed"],["impl Clone for Wrap"],["impl Clone for InsertMode"],["impl Clone for BackgroundColor"],["impl Clone for ScrollbackBufferPoint"],["impl Clone for UnderlinedColor"],["impl Clone for LineFeedSendsCarriageReturn"],["impl Clone for ForegroundColor"],["impl Clone for ScreenPoint"],["impl Clone for Color"],["impl Clone for Character"],["impl Clone for Style"]],
     "thread_local_macro":[["impl Clone for AccessError"]],
     "time":[["impl Clone for Period"],["impl Clone for Instant"]],
    -"tty":[["impl Clone for Slave"],["impl Clone for Master"],["impl Clone for Event"],["impl Clone for Tty"]],
    +"tty":[["impl Clone for Master"],["impl Clone for Slave"],["impl Clone for Tty"],["impl Clone for Event"]],
     "vga_buffer":[["impl Clone for ColorCode"],["impl Clone for ScreenChar"],["impl Clone for Color"]],
     "waet":[["impl Clone for Waet"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/doc/implementors/core/cmp/trait.PartialEq.js b/doc/implementors/core/cmp/trait.PartialEq.js
    index 0976c3a5e6..7781db7022 100644
    --- a/doc/implementors/core/cmp/trait.PartialEq.js
    +++ b/doc/implementors/core/cmp/trait.PartialEq.js
    @@ -1,6 +1,5 @@
     (function() {var implementors = {
     "apic":[["impl PartialEq<ApicId> for ApicId"],["impl PartialEq<InterruptChip> for InterruptChip"]],
    -"async_channel":[["impl PartialEq<ChannelStatus> for ChannelStatus"],["impl PartialEq<Error> for Error"]],
     "ata":[["impl PartialEq<AtaError> for AtaError"],["impl PartialEq<AtaStatus> for AtaStatus"]],
     "color":[["impl PartialEq<Color> for Color"]],
     "cpu":[["impl PartialEq<CpuId> for CpuId"]],
    @@ -25,6 +24,7 @@
     "signal_handler":[["impl PartialEq<SignalContext> for SignalContext"],["impl PartialEq<Signal> for Signal"],["impl PartialEq<ErrorCode> for ErrorCode"]],
     "str_ref":[["impl PartialEq<StrRef> for StrRef"]],
     "sync_block":[["impl PartialEq<Block> for Block"]],
    +"sync_channel":[["impl PartialEq<Error> for Error"],["impl PartialEq<ChannelStatus> for ChannelStatus"]],
     "sync_preemption":[["impl PartialEq<DisablePreemption> for DisablePreemption"]],
     "task":[["impl PartialEq<TaskRef> for TaskRef"]],
     "task_struct":[["impl PartialEq<RunState> for RunState"]],
    diff --git a/doc/implementors/core/convert/trait.From.js b/doc/implementors/core/convert/trait.From.js
    index 2e5aeb6495..efd44bc220 100644
    --- a/doc/implementors/core/convert/trait.From.js
    +++ b/doc/implementors/core/convert/trait.From.js
    @@ -1,5 +1,4 @@
     (function() {var implementors = {
    -"async_channel":[["impl From<Error> for Error"]],
     "cpu":[["impl From<Option<CpuId>> for OptionalCpuId"],["impl From<ApicId> for CpuId"],["impl From<OptionalCpuId> for Option<CpuId>"],["impl From<CpuId> for ApicId"]],
     "framebuffer":[["impl From<Color> for RGBPixel"],["impl From<Color> for AlphaPixel"]],
     "io":[["impl<R> From<R> for ByteReaderWrapper<R>where\n    R: BlockReader,"],["impl From<IoError> for &'static str"],["impl<RW> From<RW> for ByteWriterWrapper<RW>where\n    RW: BlockReader + BlockWriter,"],["impl From<IoError> for String"],["impl<'io, IO, L, B> From<B> for LockableIo<'io, IO, L, B>where\n    IO: 'io + ?Sized,\n    L: for<'a> Lockable<'a, IO> + ?Sized,\n    B: Borrow<L>,"],["impl From<&'static str> for IoError"],["impl<RW> From<RW> for ByteReaderWriterWrapper<RW>where\n    RW: BlockReader + BlockWriter,"],["impl From<IoError> for Error"]],
    @@ -12,6 +11,7 @@
     "pte_flags":[["impl From<PteFlags> for PteFlagsX86_64"],["impl From<PteFlags> for PteFlagsAarch64"],["impl From<PteFlagsX86_64> for PteFlags"],["impl From<PteFlagsAarch64> for PteFlags"]],
     "signal_handler":[["impl From<u64> for ErrorCode"]],
     "str_ref":[["impl From<&str> for StrRef"]],
    +"sync_channel":[["impl From<Error> for Error"]],
     "task_struct":[["impl<'p> From<&PanicInfo<'p>> for PanicInfoOwned"],["impl<'t> From<&'t Task> for InheritedStates<'t>"]],
     "text_terminal":[["impl From<Color> for ForegroundColor"],["impl From<u8> for Color"],["impl From<Color> for BackgroundColor"],["impl From<Color> for UnderlinedColor"]],
     "time":[["impl From<Period> for u64"],["impl From<Period> for u128"],["impl From<u64> for Period"]],
    diff --git a/doc/implementors/core/default/trait.Default.js b/doc/implementors/core/default/trait.Default.js
    index 5a8e9365a6..a9cff57205 100644
    --- a/doc/implementors/core/default/trait.Default.js
    +++ b/doc/implementors/core/default/trait.Default.js
    @@ -20,6 +20,6 @@
     "task_struct":[["impl Default for PanicInfoOwned"]],
     "text_terminal":[["impl Default for Style"],["impl Default for Row"],["impl Default for ScrollPosition"],["impl Default for Line"],["impl Default for CursorStyle"],["impl Default for FormatFlags"],["impl Default for ScrollbackBufferPoint"],["impl Default for UnitIndex"],["impl Default for BackgroundColor"],["impl Default for Character"],["impl Default for ScreenSize"],["impl Default for Color"],["impl Default for Unit"],["impl Default for ForegroundColor"],["impl Default for TerminalMode"],["impl Default for ScreenPoint"],["impl Default for UnderlinedColor"],["impl Default for LineIndex"],["impl Default for Column"]],
     "time":[["impl Default for Instant"]],
    -"tty":[["impl Default for Tty"],["impl Default for LineDiscipline"]],
    +"tty":[["impl Default for LineDiscipline"],["impl Default for Tty"]],
     "vga_buffer":[["impl Default for ColorCode"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/doc/implementors/core/fmt/trait.Debug.js b/doc/implementors/core/fmt/trait.Debug.js
    index d284e2012b..706ad174c1 100644
    --- a/doc/implementors/core/fmt/trait.Debug.js
    +++ b/doc/implementors/core/fmt/trait.Debug.js
    @@ -1,7 +1,6 @@
     (function() {var implementors = {
     "acpi_table":[["impl Debug for TableLocation"]],
     "apic":[["impl Debug for InterruptChip"],["impl Debug for LapicTimerDivide"],["impl Debug for LapicDeliveryMode"],["impl Debug for LocalApic"],["impl Debug for ApicId"],["impl Debug for LapicInitError"]],
    -"async_channel":[["impl Debug for Error"],["impl Debug for ChannelStatus"]],
     "ata":[["impl Debug for AtaStatus"],["impl Debug for AtaFirmwareVersion"],["impl Debug for AtaIdentifyData"],["impl Debug for AtaModelNumber"],["impl Debug for IdeController"],["impl Debug for AtaDrive"],["impl Debug for AtaError"],["impl Debug for AtaSerialNumber"]],
     "atomic_linked_list":[["impl<K, V: Debug> Debug for AtomicMap<K, V>where\n    K: PartialEq + Debug,"],["impl<T: Debug> Debug for AtomicLinkedList<T>"]],
     "boot_info":[["impl Debug for ReservedMemoryRegion"],["impl Debug for FramebufferInfo"],["impl Debug for FramebufferFormat"]],
    @@ -20,7 +19,7 @@
     "event_types":[["impl Debug for Event"],["impl Debug for MousePositionEvent"],["impl Debug for KeyboardInputEvent"]],
     "external_unwind_info":[["impl Debug for ExternalUnwindInfo"]],
     "fadt":[["impl Debug for Fadt"]],
    -"fault_log":[["impl Debug for FaultType"],["impl Debug for RecoveryAction"],["impl Debug for FaultEntry"]],
    +"fault_log":[["impl Debug for RecoveryAction"],["impl Debug for FaultEntry"],["impl Debug for FaultType"]],
     "frame_allocator":[["impl Debug for PhysicalMemoryRegion"],["impl<const S: MemoryState, P: PageSize> Debug for Frames<S, P>"],["impl Debug for MemoryRegionType"],["impl<'f, P: Debug + PageSize> Debug for AllocatedFrame<'f, P>"]],
     "framebuffer":[["impl Debug for RGBPixel"],["impl Debug for AlphaPixel"]],
     "fs_node":[["impl Debug for FileOrDir"]],
    @@ -70,6 +69,7 @@
     "stack":[["impl Debug for Stack"]],
     "str_ref":[["impl Debug for StrRef"]],
     "sync_block":[["impl Debug for Block"]],
    +"sync_channel":[["impl Debug for ChannelStatus"],["impl Debug for Error"]],
     "sync_preemption":[["impl Debug for DisablePreemption"]],
     "task":[["impl Debug for TaskRef"],["impl Debug for WeakTaskRef"],["impl Debug for InitCurrentTaskError"],["impl Debug for JoinableTaskRef"],["impl Debug for CurrentTaskNotFound"],["impl Debug for ExitableTaskRef"]],
     "task_struct":[["impl Debug for RunState"],["impl Debug for ExitValue"],["impl Debug for KillReason"],["impl Debug for Task"],["impl Debug for PanicInfoOwned"]],
    diff --git a/doc/implementors/core/hash/trait.Hash.js b/doc/implementors/core/hash/trait.Hash.js
    index 338930a2cf..35e21206c5 100644
    --- a/doc/implementors/core/hash/trait.Hash.js
    +++ b/doc/implementors/core/hash/trait.Hash.js
    @@ -2,7 +2,7 @@
     "apic":[["impl Hash for ApicId"]],
     "cpu":[["impl Hash for CpuId"]],
     "crate_swap":[["impl Hash for SwapRequest"]],
    -"framebuffer":[["impl Hash for RGBPixel"],["impl<P: Pixel> Hash for Framebuffer<P>"],["impl Hash for AlphaPixel"]],
    +"framebuffer":[["impl<P: Pixel> Hash for Framebuffer<P>"],["impl Hash for AlphaPixel"],["impl Hash for RGBPixel"]],
     "memory":[["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>"]],
     "memory_structs":[["impl Hash for VirtualAddress"],["impl Hash for PhysicalAddress"]],
     "pci":[["impl Hash for PciLocation"]],
    diff --git a/doc/implementors/core/marker/trait.Copy.js b/doc/implementors/core/marker/trait.Copy.js
    index dee936fe0c..a6f68a24fb 100644
    --- a/doc/implementors/core/marker/trait.Copy.js
    +++ b/doc/implementors/core/marker/trait.Copy.js
    @@ -1,6 +1,5 @@
     (function() {var implementors = {
     "apic":[["impl Copy for InterruptChip"],["impl Copy for ApicId"],["impl Copy for LapicTimerDivide"],["impl Copy for LapicDeliveryMode"]],
    -"async_channel":[["impl Copy for ChannelStatus"]],
     "ata":[["impl Copy for AtaStatus"],["impl Copy for AtaSerialNumber"],["impl Copy for AtaModelNumber"],["impl Copy for AtaIdentifyData"],["impl Copy for AtaError"],["impl Copy for AtaFirmwareVersion"]],
     "boot_info":[["impl Copy for FramebufferFormat"]],
     "color":[["impl Copy for Color"]],
    @@ -34,6 +33,7 @@
     "shapes":[["impl Copy for Rectangle"],["impl Copy for Coord"]],
     "signal_handler":[["impl Copy for SignalContext"],["impl Copy for ErrorCode"],["impl Copy for Signal"]],
     "sync_block":[["impl Copy for Block"]],
    +"sync_channel":[["impl Copy for ChannelStatus"]],
     "sync_preemption":[["impl Copy for DisablePreemption"]],
     "task_struct":[["impl Copy for RunState"]],
     "text_terminal":[["impl Copy for BackgroundColor"],["impl Copy for ScreenPoint"],["impl Copy for CarriageReturnSendsLineFeed"],["impl Copy for Column"],["impl Copy for Row"],["impl Copy for ShowCursor"],["impl Copy for UnitIndex"],["impl Copy for Wrap"],["impl Copy for Style"],["impl Copy for UnderlinedColor"],["impl Copy for FormatFlags"],["impl Copy for Color"],["impl Copy for ScreenSize"],["impl Copy for LineIndex"],["impl Copy for TerminalMode"],["impl Copy for ScrollbackBufferPoint"],["impl Copy for ScrollPosition"],["impl Copy for LineFeedSendsCarriageReturn"],["impl Copy for ForegroundColor"],["impl Copy for InsertMode"]],
    diff --git a/doc/implementors/core/marker/trait.Freeze.js b/doc/implementors/core/marker/trait.Freeze.js
    index fa8968b37e..07bf176bf6 100644
    --- a/doc/implementors/core/marker/trait.Freeze.js
    +++ b/doc/implementors/core/marker/trait.Freeze.js
    @@ -2,7 +2,6 @@
     "acpi_table":[["impl Freeze for TableLocation",1,["acpi_table::TableLocation"]],["impl Freeze for AcpiTables",1,["acpi_table::AcpiTables"]]],
     "apic":[["impl Freeze for ApicId",1,["apic::ApicId"]],["impl Freeze for InterruptChip",1,["apic::InterruptChip"]],["impl Freeze for LapicDeliveryMode",1,["apic::LapicDeliveryMode"]],["impl Freeze for LapicTimerDivide",1,["apic::LapicTimerDivide"]],["impl Freeze for LapicIpiDestination",1,["apic::LapicIpiDestination"]],["impl Freeze for ApicRegisters",1,["apic::ApicRegisters"]],["impl Freeze for RegisterArray",1,["apic::RegisterArray"]],["impl Freeze for LvtLint",1,["apic::LvtLint"]],["impl Freeze for LapicInitError",1,["apic::LapicInitError"]],["impl Freeze for LocalApic",1,["apic::LocalApic"]]],
     "app_io":[["impl Freeze for IoStreams",1,["app_io::IoStreams"]]],
    -"async_channel":[["impl Freeze for ChannelStatus",1,["async_channel::ChannelStatus"]],["impl Freeze for Error",1,["async_channel::Error"]],["impl<T, P> Freeze for Sender<T, P>",1,["async_channel::Sender"]],["impl<T, P> Freeze for Receiver<T, P>",1,["async_channel::Receiver"]]],
     "ata":[["impl Freeze for AtaError",1,["ata::AtaError"]],["impl Freeze for AtaStatus",1,["ata::AtaStatus"]],["impl Freeze for AtaDeviceType",1,["ata::AtaDeviceType"]],["impl Freeze for AtaDrive",1,["ata::AtaDrive"]],["impl Freeze for IdeController",1,["ata::IdeController"]],["impl<'c> Freeze for IdeControllerIter<'c>",1,["ata::IdeControllerIter"]],["impl Freeze for AtaIdentifyData",1,["ata::AtaIdentifyData"]],["impl Freeze for AtaSerialNumber",1,["ata::AtaSerialNumber"]],["impl Freeze for AtaModelNumber",1,["ata::AtaModelNumber"]],["impl Freeze for AtaFirmwareVersion",1,["ata::AtaFirmwareVersion"]]],
     "atomic_linked_list":[["impl<T> !Freeze for AtomicLinkedList<T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedList"]],["impl<'a, T> Freeze for AtomicLinkedListIter<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIter"]],["impl<'a, T> Freeze for AtomicLinkedListIterMut<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIterMut"]],["impl<K, V> !Freeze for AtomicMap<K, V>",1,["atomic_linked_list::atomic_map::AtomicMap"]],["impl<'a, K, V> Freeze for AtomicMapIter<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIter"]],["impl<'a, K, V> Freeze for AtomicMapIterMut<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIterMut"]]],
     "block_allocator":[["impl Freeze for FixedSizeBlockAllocator",1,["block_allocator::FixedSizeBlockAllocator"]]],
    @@ -79,7 +78,7 @@
     "page_attribute_table":[["impl Freeze for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl Freeze for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl Freeze for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]],
     "page_table_entry":[["impl Freeze for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl Freeze for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl Freeze for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]],
     "path":[["impl<'a> Freeze for Components<'a>",1,["path::component::Components"]],["impl<'a> Freeze for Component<'a>",1,["path::component::Component"]],["impl Freeze for Path",1,["path::Path"]],["impl Freeze for PathBuf",1,["path::PathBuf"]]],
    -"pci":[["impl Freeze for PciCapability",1,["pci::PciCapability"]],["impl Freeze for InterruptPin",1,["pci::InterruptPin"]],["impl Freeze for PciBus",1,["pci::PciBus"]],["impl Freeze for PciLocation",1,["pci::PciLocation"]],["impl Freeze for PciDevice",1,["pci::PciDevice"]],["impl Freeze for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl Freeze for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl Freeze for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
    +"pci":[["impl Freeze for PciCapability",1,["pci::PciCapability"]],["impl Freeze for InterruptPin",1,["pci::InterruptPin"]],["impl Freeze for PciBus",1,["pci::PciBus"]],["impl Freeze for PciLocation",1,["pci::PciLocation"]],["impl !Freeze for PciDevice",1,["pci::PciDevice"]],["impl Freeze for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl Freeze for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl Freeze for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
     "percent_encoding":[["impl Freeze for SIMPLE_ENCODE_SET",1,["percent_encoding::SIMPLE_ENCODE_SET"]],["impl Freeze for QUERY_ENCODE_SET",1,["percent_encoding::QUERY_ENCODE_SET"]],["impl Freeze for DEFAULT_ENCODE_SET",1,["percent_encoding::DEFAULT_ENCODE_SET"]],["impl Freeze for PATH_SEGMENT_ENCODE_SET",1,["percent_encoding::PATH_SEGMENT_ENCODE_SET"]],["impl Freeze for USERINFO_ENCODE_SET",1,["percent_encoding::USERINFO_ENCODE_SET"]],["impl<'a, E> Freeze for PercentEncode<'a, E>where\n    E: Freeze,",1,["percent_encoding::PercentEncode"]],["impl<'a> Freeze for PercentDecode<'a>",1,["percent_encoding::PercentDecode"]]],
     "pic":[["impl Freeze for IrqStatusRegisters",1,["pic::IrqStatusRegisters"]],["impl Freeze for ChainedPics",1,["pic::ChainedPics"]]],
     "pmu_x86":[["impl Freeze for PerformanceCounters",1,["pmu_x86::stat::PerformanceCounters"]],["impl Freeze for PMUResults",1,["pmu_x86::stat::PMUResults"]],["impl Freeze for EventType",1,["pmu_x86::EventType"]],["impl Freeze for Counter",1,["pmu_x86::Counter"]],["impl Freeze for SampleResults",1,["pmu_x86::SampleResults"]]],
    @@ -111,6 +110,7 @@
     "stdio":[["impl<T> Freeze for RingBufferEof<T>",1,["stdio::RingBufferEof"]],["impl Freeze for Stdio",1,["stdio::Stdio"]],["impl Freeze for StdioReader",1,["stdio::StdioReader"]],["impl Freeze for StdioWriter",1,["stdio::StdioWriter"]],["impl<'a> Freeze for StdioReadGuard<'a>",1,["stdio::StdioReadGuard"]],["impl<'a> Freeze for StdioWriteGuard<'a>",1,["stdio::StdioWriteGuard"]],["impl Freeze for KeyEventQueue",1,["stdio::KeyEventQueue"]],["impl Freeze for KeyEventQueueReader",1,["stdio::KeyEventQueueReader"]],["impl Freeze for KeyEventQueueWriter",1,["stdio::KeyEventQueueWriter"]],["impl Freeze for KeyEventReadGuard",1,["stdio::KeyEventReadGuard"]]],
     "str_ref":[["impl Freeze for StrRef",1,["str_ref::StrRef"]]],
     "sync_block":[["impl<P = Spin> !Freeze for Condvar<P>",1,["sync_block::condvar::Condvar"]],["impl Freeze for Block",1,["sync_block::Block"]]],
    +"sync_channel":[["impl Freeze for ChannelStatus",1,["sync_channel::ChannelStatus"]],["impl Freeze for Error",1,["sync_channel::Error"]],["impl<T, P> Freeze for Sender<T, P>",1,["sync_channel::Sender"]],["impl<T, P> Freeze for Receiver<T, P>",1,["sync_channel::Receiver"]]],
     "sync_preemption":[["impl Freeze for DisablePreemption",1,["sync_preemption::DisablePreemption"]]],
     "task":[["impl<'a> Freeze for PriorityInheritanceGuard<'a>",1,["task::scheduler::PriorityInheritanceGuard"]],["impl Freeze for InitCurrentTaskError",1,["task::tls_current_task::InitCurrentTaskError"]],["impl Freeze for CurrentTaskNotFound",1,["task::tls_current_task::CurrentTaskNotFound"]],["impl Freeze for TaskRef",1,["task::TaskRef"]],["impl Freeze for WeakTaskRef",1,["task::WeakTaskRef"]],["impl Freeze for JoinableTaskRef",1,["task::JoinableTaskRef"]],["impl Freeze for ScheduleOnDrop",1,["task::ScheduleOnDrop"]],["impl Freeze for ExitableTaskRef",1,["task::ExitableTaskRef"]]],
     "task_fs":[["impl Freeze for TaskFs",1,["task_fs::TaskFs"]],["impl Freeze for TaskDir",1,["task_fs::TaskDir"]],["impl Freeze for TaskFile",1,["task_fs::TaskFile"]],["impl Freeze for MmiDir",1,["task_fs::MmiDir"]],["impl Freeze for MmiFile",1,["task_fs::MmiFile"]]],
    diff --git a/doc/implementors/core/marker/trait.Send.js b/doc/implementors/core/marker/trait.Send.js
    index 3209c2fb23..0115896bb0 100644
    --- a/doc/implementors/core/marker/trait.Send.js
    +++ b/doc/implementors/core/marker/trait.Send.js
    @@ -2,7 +2,6 @@
     "acpi_table":[["impl Send for TableLocation",1,["acpi_table::TableLocation"]],["impl Send for AcpiTables",1,["acpi_table::AcpiTables"]]],
     "apic":[["impl Send for ApicId",1,["apic::ApicId"]],["impl Send for InterruptChip",1,["apic::InterruptChip"]],["impl Send for LapicDeliveryMode",1,["apic::LapicDeliveryMode"]],["impl Send for LapicTimerDivide",1,["apic::LapicTimerDivide"]],["impl Send for LapicIpiDestination",1,["apic::LapicIpiDestination"]],["impl Send for ApicRegisters",1,["apic::ApicRegisters"]],["impl Send for RegisterArray",1,["apic::RegisterArray"]],["impl Send for LvtLint",1,["apic::LvtLint"]],["impl Send for LapicInitError",1,["apic::LapicInitError"]],["impl Send for LocalApic",1,["apic::LocalApic"]]],
     "app_io":[["impl Send for IoStreams",1,["app_io::IoStreams"]]],
    -"async_channel":[["impl Send for ChannelStatus",1,["async_channel::ChannelStatus"]],["impl Send for Error",1,["async_channel::Error"]],["impl<T, P> Send for Sender<T, P>where\n    T: Sync,",1,["async_channel::Sender"]],["impl<T, P> Send for Receiver<T, P>where\n    T: Sync,",1,["async_channel::Receiver"]]],
     "ata":[["impl Send for AtaError",1,["ata::AtaError"]],["impl Send for AtaStatus",1,["ata::AtaStatus"]],["impl Send for AtaDeviceType",1,["ata::AtaDeviceType"]],["impl Send for AtaDrive",1,["ata::AtaDrive"]],["impl Send for IdeController",1,["ata::IdeController"]],["impl<'c> Send for IdeControllerIter<'c>",1,["ata::IdeControllerIter"]],["impl Send for AtaIdentifyData",1,["ata::AtaIdentifyData"]],["impl Send for AtaSerialNumber",1,["ata::AtaSerialNumber"]],["impl Send for AtaModelNumber",1,["ata::AtaModelNumber"]],["impl Send for AtaFirmwareVersion",1,["ata::AtaFirmwareVersion"]]],
     "atomic_linked_list":[["impl<T> Send for AtomicLinkedList<T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedList"]],["impl<'a, T> Send for AtomicLinkedListIter<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIter"]],["impl<'a, T> Send for AtomicLinkedListIterMut<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIterMut"]],["impl<K, V> Send for AtomicMap<K, V>",1,["atomic_linked_list::atomic_map::AtomicMap"]],["impl<'a, K, V> Send for AtomicMapIter<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIter"]],["impl<'a, K, V> Send for AtomicMapIterMut<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIterMut"]]],
     "block_allocator":[["impl Send for FixedSizeBlockAllocator",1,["block_allocator::FixedSizeBlockAllocator"]]],
    @@ -111,6 +110,7 @@
     "stdio":[["impl<T> Send for RingBufferEof<T>where\n    T: Send,",1,["stdio::RingBufferEof"]],["impl Send for Stdio",1,["stdio::Stdio"]],["impl Send for StdioReader",1,["stdio::StdioReader"]],["impl Send for StdioWriter",1,["stdio::StdioWriter"]],["impl<'a> Send for StdioReadGuard<'a>",1,["stdio::StdioReadGuard"]],["impl<'a> Send for StdioWriteGuard<'a>",1,["stdio::StdioWriteGuard"]],["impl Send for KeyEventQueue",1,["stdio::KeyEventQueue"]],["impl Send for KeyEventQueueReader",1,["stdio::KeyEventQueueReader"]],["impl Send for KeyEventQueueWriter",1,["stdio::KeyEventQueueWriter"]],["impl !Send for KeyEventReadGuard",1,["stdio::KeyEventReadGuard"]]],
     "str_ref":[["impl Send for StrRef",1,["str_ref::StrRef"]]],
     "sync_block":[["impl<P> Send for Condvar<P>",1,["sync_block::condvar::Condvar"]],["impl Send for Block",1,["sync_block::Block"]]],
    +"sync_channel":[["impl Send for ChannelStatus",1,["sync_channel::ChannelStatus"]],["impl Send for Error",1,["sync_channel::Error"]],["impl<T, P> Send for Sender<T, P>where\n    T: Sync,",1,["sync_channel::Sender"]],["impl<T, P> Send for Receiver<T, P>where\n    T: Sync,",1,["sync_channel::Receiver"]]],
     "sync_preemption":[["impl Send for DisablePreemption",1,["sync_preemption::DisablePreemption"]]],
     "task":[["impl<'a> Send for PriorityInheritanceGuard<'a>",1,["task::scheduler::PriorityInheritanceGuard"]],["impl Send for InitCurrentTaskError",1,["task::tls_current_task::InitCurrentTaskError"]],["impl Send for CurrentTaskNotFound",1,["task::tls_current_task::CurrentTaskNotFound"]],["impl Send for TaskRef",1,["task::TaskRef"]],["impl Send for WeakTaskRef",1,["task::WeakTaskRef"]],["impl Send for JoinableTaskRef",1,["task::JoinableTaskRef"]],["impl Send for ScheduleOnDrop",1,["task::ScheduleOnDrop"]],["impl !Send for ExitableTaskRef"]],
     "task_fs":[["impl Send for TaskFs",1,["task_fs::TaskFs"]],["impl Send for TaskDir",1,["task_fs::TaskDir"]],["impl Send for TaskFile",1,["task_fs::TaskFile"]],["impl Send for MmiDir",1,["task_fs::MmiDir"]],["impl Send for MmiFile",1,["task_fs::MmiFile"]]],
    diff --git a/doc/implementors/core/marker/trait.StructuralPartialEq.js b/doc/implementors/core/marker/trait.StructuralPartialEq.js
    index bd8e445c87..f955faf324 100644
    --- a/doc/implementors/core/marker/trait.StructuralPartialEq.js
    +++ b/doc/implementors/core/marker/trait.StructuralPartialEq.js
    @@ -1,6 +1,5 @@
     (function() {var implementors = {
     "apic":[["impl StructuralPartialEq for InterruptChip"],["impl StructuralPartialEq for ApicId"]],
    -"async_channel":[["impl StructuralPartialEq for ChannelStatus"],["impl StructuralPartialEq for Error"]],
     "ata":[["impl StructuralPartialEq for AtaError"],["impl StructuralPartialEq for AtaStatus"]],
     "cpu":[["impl StructuralPartialEq for CpuId"]],
     "crate_metadata":[["impl StructuralPartialEq for RelocationEntry"],["impl StructuralPartialEq for CrateType"]],
    @@ -23,6 +22,7 @@
     "signal_handler":[["impl StructuralPartialEq for SignalContext"],["impl StructuralPartialEq for ErrorCode"],["impl StructuralPartialEq for Signal"]],
     "str_ref":[["impl StructuralPartialEq for StrRef"]],
     "sync_block":[["impl StructuralPartialEq for Block"]],
    +"sync_channel":[["impl StructuralPartialEq for ChannelStatus"],["impl StructuralPartialEq for Error"]],
     "sync_preemption":[["impl StructuralPartialEq for DisablePreemption"]],
     "task_struct":[["impl StructuralPartialEq for RunState"]],
     "text_terminal":[["impl StructuralPartialEq for Row"],["impl StructuralPartialEq for UnderlinedColor"],["impl StructuralPartialEq for ScrollAction"],["impl StructuralPartialEq for Character"],["impl StructuralPartialEq for Column"],["impl StructuralPartialEq for ShowCursor"],["impl StructuralPartialEq for LineIndex"],["impl StructuralPartialEq for ScreenSize"],["impl StructuralPartialEq for LineFeedSendsCarriageReturn"],["impl StructuralPartialEq for Style"],["impl StructuralPartialEq for Wrap"],["impl StructuralPartialEq for CarriageReturnSendsLineFeed"],["impl StructuralPartialEq for FormatFlags"],["impl StructuralPartialEq for ScrollbackBufferPoint"],["impl StructuralPartialEq for BackgroundColor"],["impl StructuralPartialEq for InsertMode"],["impl StructuralPartialEq for ForegroundColor"],["impl StructuralPartialEq for Color"],["impl StructuralPartialEq for ScrollPosition"],["impl StructuralPartialEq for UnitIndex"],["impl StructuralPartialEq for TerminalMode"],["impl StructuralPartialEq for ScreenPoint"]],
    diff --git a/doc/implementors/core/marker/trait.Sync.js b/doc/implementors/core/marker/trait.Sync.js
    index ec600332fd..a535029047 100644
    --- a/doc/implementors/core/marker/trait.Sync.js
    +++ b/doc/implementors/core/marker/trait.Sync.js
    @@ -2,7 +2,6 @@
     "acpi_table":[["impl Sync for TableLocation",1,["acpi_table::TableLocation"]],["impl Sync for AcpiTables",1,["acpi_table::AcpiTables"]]],
     "apic":[["impl Sync for ApicId",1,["apic::ApicId"]],["impl Sync for InterruptChip",1,["apic::InterruptChip"]],["impl Sync for LapicDeliveryMode",1,["apic::LapicDeliveryMode"]],["impl Sync for LapicTimerDivide",1,["apic::LapicTimerDivide"]],["impl Sync for LapicIpiDestination",1,["apic::LapicIpiDestination"]],["impl Sync for ApicRegisters",1,["apic::ApicRegisters"]],["impl Sync for RegisterArray",1,["apic::RegisterArray"]],["impl Sync for LvtLint",1,["apic::LvtLint"]],["impl Sync for LapicInitError",1,["apic::LapicInitError"]],["impl Sync for LocalApic",1,["apic::LocalApic"]]],
     "app_io":[["impl Sync for IoStreams",1,["app_io::IoStreams"]]],
    -"async_channel":[["impl Sync for ChannelStatus",1,["async_channel::ChannelStatus"]],["impl Sync for Error",1,["async_channel::Error"]],["impl<T, P> Sync for Sender<T, P>where\n    T: Sync,",1,["async_channel::Sender"]],["impl<T, P> Sync for Receiver<T, P>where\n    T: Sync,",1,["async_channel::Receiver"]]],
     "ata":[["impl Sync for AtaError",1,["ata::AtaError"]],["impl Sync for AtaStatus",1,["ata::AtaStatus"]],["impl Sync for AtaDeviceType",1,["ata::AtaDeviceType"]],["impl Sync for AtaDrive",1,["ata::AtaDrive"]],["impl Sync for IdeController",1,["ata::IdeController"]],["impl<'c> Sync for IdeControllerIter<'c>",1,["ata::IdeControllerIter"]],["impl Sync for AtaIdentifyData",1,["ata::AtaIdentifyData"]],["impl Sync for AtaSerialNumber",1,["ata::AtaSerialNumber"]],["impl Sync for AtaModelNumber",1,["ata::AtaModelNumber"]],["impl Sync for AtaFirmwareVersion",1,["ata::AtaFirmwareVersion"]]],
     "atomic_linked_list":[["impl<T> Sync for AtomicLinkedList<T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedList"]],["impl<'a, T> Sync for AtomicLinkedListIter<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIter"]],["impl<'a, T> Sync for AtomicLinkedListIterMut<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIterMut"]],["impl<K, V> Sync for AtomicMap<K, V>",1,["atomic_linked_list::atomic_map::AtomicMap"]],["impl<'a, K, V> Sync for AtomicMapIter<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIter"]],["impl<'a, K, V> Sync for AtomicMapIterMut<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIterMut"]]],
     "block_allocator":[["impl Sync for FixedSizeBlockAllocator",1,["block_allocator::FixedSizeBlockAllocator"]]],
    @@ -111,6 +110,7 @@
     "stdio":[["impl<T> Sync for RingBufferEof<T>where\n    T: Sync,",1,["stdio::RingBufferEof"]],["impl Sync for Stdio",1,["stdio::Stdio"]],["impl Sync for StdioReader",1,["stdio::StdioReader"]],["impl Sync for StdioWriter",1,["stdio::StdioWriter"]],["impl<'a> Sync for StdioReadGuard<'a>",1,["stdio::StdioReadGuard"]],["impl<'a> Sync for StdioWriteGuard<'a>",1,["stdio::StdioWriteGuard"]],["impl Sync for KeyEventQueue",1,["stdio::KeyEventQueue"]],["impl Sync for KeyEventQueueReader",1,["stdio::KeyEventQueueReader"]],["impl Sync for KeyEventQueueWriter",1,["stdio::KeyEventQueueWriter"]],["impl !Sync for KeyEventReadGuard",1,["stdio::KeyEventReadGuard"]]],
     "str_ref":[["impl Sync for StrRef",1,["str_ref::StrRef"]]],
     "sync_block":[["impl<P> Sync for Condvar<P>",1,["sync_block::condvar::Condvar"]],["impl Sync for Block",1,["sync_block::Block"]]],
    +"sync_channel":[["impl Sync for ChannelStatus",1,["sync_channel::ChannelStatus"]],["impl Sync for Error",1,["sync_channel::Error"]],["impl<T, P> Sync for Sender<T, P>where\n    T: Sync,",1,["sync_channel::Sender"]],["impl<T, P> Sync for Receiver<T, P>where\n    T: Sync,",1,["sync_channel::Receiver"]]],
     "sync_preemption":[["impl Sync for DisablePreemption",1,["sync_preemption::DisablePreemption"]]],
     "task":[["impl<'a> Sync for PriorityInheritanceGuard<'a>",1,["task::scheduler::PriorityInheritanceGuard"]],["impl Sync for InitCurrentTaskError",1,["task::tls_current_task::InitCurrentTaskError"]],["impl Sync for CurrentTaskNotFound",1,["task::tls_current_task::CurrentTaskNotFound"]],["impl Sync for TaskRef",1,["task::TaskRef"]],["impl Sync for WeakTaskRef",1,["task::WeakTaskRef"]],["impl Sync for JoinableTaskRef",1,["task::JoinableTaskRef"]],["impl Sync for ScheduleOnDrop",1,["task::ScheduleOnDrop"]],["impl !Sync for ExitableTaskRef"]],
     "task_fs":[["impl Sync for TaskFs",1,["task_fs::TaskFs"]],["impl Sync for TaskDir",1,["task_fs::TaskDir"]],["impl Sync for TaskFile",1,["task_fs::TaskFile"]],["impl Sync for MmiDir",1,["task_fs::MmiDir"]],["impl Sync for MmiFile",1,["task_fs::MmiFile"]]],
    diff --git a/doc/implementors/core/marker/trait.Unpin.js b/doc/implementors/core/marker/trait.Unpin.js
    index 8b4ca8373e..b30daf0031 100644
    --- a/doc/implementors/core/marker/trait.Unpin.js
    +++ b/doc/implementors/core/marker/trait.Unpin.js
    @@ -2,7 +2,6 @@
     "acpi_table":[["impl Unpin for TableLocation",1,["acpi_table::TableLocation"]],["impl Unpin for AcpiTables",1,["acpi_table::AcpiTables"]]],
     "apic":[["impl Unpin for ApicId",1,["apic::ApicId"]],["impl Unpin for InterruptChip",1,["apic::InterruptChip"]],["impl Unpin for LapicDeliveryMode",1,["apic::LapicDeliveryMode"]],["impl Unpin for LapicTimerDivide",1,["apic::LapicTimerDivide"]],["impl Unpin for LapicIpiDestination",1,["apic::LapicIpiDestination"]],["impl Unpin for ApicRegisters",1,["apic::ApicRegisters"]],["impl Unpin for RegisterArray",1,["apic::RegisterArray"]],["impl Unpin for LvtLint",1,["apic::LvtLint"]],["impl Unpin for LapicInitError",1,["apic::LapicInitError"]],["impl Unpin for LocalApic",1,["apic::LocalApic"]]],
     "app_io":[["impl Unpin for IoStreams",1,["app_io::IoStreams"]]],
    -"async_channel":[["impl Unpin for ChannelStatus",1,["async_channel::ChannelStatus"]],["impl Unpin for Error",1,["async_channel::Error"]],["impl<T, P> Unpin for Sender<T, P>",1,["async_channel::Sender"]],["impl<T, P> Unpin for Receiver<T, P>",1,["async_channel::Receiver"]]],
     "ata":[["impl Unpin for AtaError",1,["ata::AtaError"]],["impl Unpin for AtaStatus",1,["ata::AtaStatus"]],["impl Unpin for AtaDeviceType",1,["ata::AtaDeviceType"]],["impl Unpin for AtaDrive",1,["ata::AtaDrive"]],["impl Unpin for IdeController",1,["ata::IdeController"]],["impl<'c> Unpin for IdeControllerIter<'c>",1,["ata::IdeControllerIter"]],["impl Unpin for AtaIdentifyData",1,["ata::AtaIdentifyData"]],["impl Unpin for AtaSerialNumber",1,["ata::AtaSerialNumber"]],["impl Unpin for AtaModelNumber",1,["ata::AtaModelNumber"]],["impl Unpin for AtaFirmwareVersion",1,["ata::AtaFirmwareVersion"]]],
     "atomic_linked_list":[["impl<T> Unpin for AtomicLinkedList<T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedList"]],["impl<'a, T> Unpin for AtomicLinkedListIter<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIter"]],["impl<'a, T> Unpin for AtomicLinkedListIterMut<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIterMut"]],["impl<K, V> Unpin for AtomicMap<K, V>",1,["atomic_linked_list::atomic_map::AtomicMap"]],["impl<'a, K, V> Unpin for AtomicMapIter<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIter"]],["impl<'a, K, V> Unpin for AtomicMapIterMut<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIterMut"]]],
     "block_allocator":[["impl Unpin for FixedSizeBlockAllocator",1,["block_allocator::FixedSizeBlockAllocator"]]],
    @@ -111,6 +110,7 @@
     "stdio":[["impl<T> Unpin for RingBufferEof<T>where\n    T: Unpin,",1,["stdio::RingBufferEof"]],["impl Unpin for Stdio",1,["stdio::Stdio"]],["impl Unpin for StdioReader",1,["stdio::StdioReader"]],["impl Unpin for StdioWriter",1,["stdio::StdioWriter"]],["impl<'a> Unpin for StdioReadGuard<'a>",1,["stdio::StdioReadGuard"]],["impl<'a> Unpin for StdioWriteGuard<'a>",1,["stdio::StdioWriteGuard"]],["impl Unpin for KeyEventQueue",1,["stdio::KeyEventQueue"]],["impl Unpin for KeyEventQueueReader",1,["stdio::KeyEventQueueReader"]],["impl Unpin for KeyEventQueueWriter",1,["stdio::KeyEventQueueWriter"]],["impl Unpin for KeyEventReadGuard",1,["stdio::KeyEventReadGuard"]]],
     "str_ref":[["impl Unpin for StrRef",1,["str_ref::StrRef"]]],
     "sync_block":[["impl<P> Unpin for Condvar<P>",1,["sync_block::condvar::Condvar"]],["impl Unpin for Block",1,["sync_block::Block"]]],
    +"sync_channel":[["impl Unpin for ChannelStatus",1,["sync_channel::ChannelStatus"]],["impl Unpin for Error",1,["sync_channel::Error"]],["impl<T, P> Unpin for Sender<T, P>",1,["sync_channel::Sender"]],["impl<T, P> Unpin for Receiver<T, P>",1,["sync_channel::Receiver"]]],
     "sync_preemption":[["impl Unpin for DisablePreemption",1,["sync_preemption::DisablePreemption"]]],
     "task":[["impl<'a> Unpin for PriorityInheritanceGuard<'a>",1,["task::scheduler::PriorityInheritanceGuard"]],["impl Unpin for InitCurrentTaskError",1,["task::tls_current_task::InitCurrentTaskError"]],["impl Unpin for CurrentTaskNotFound",1,["task::tls_current_task::CurrentTaskNotFound"]],["impl Unpin for TaskRef",1,["task::TaskRef"]],["impl Unpin for WeakTaskRef",1,["task::WeakTaskRef"]],["impl Unpin for JoinableTaskRef",1,["task::JoinableTaskRef"]],["impl Unpin for ScheduleOnDrop",1,["task::ScheduleOnDrop"]],["impl Unpin for ExitableTaskRef",1,["task::ExitableTaskRef"]]],
     "task_fs":[["impl Unpin for TaskFs",1,["task_fs::TaskFs"]],["impl Unpin for TaskDir",1,["task_fs::TaskDir"]],["impl Unpin for TaskFile",1,["task_fs::TaskFile"]],["impl Unpin for MmiDir",1,["task_fs::MmiDir"]],["impl Unpin for MmiFile",1,["task_fs::MmiFile"]]],
    diff --git a/doc/implementors/core/ops/drop/trait.Drop.js b/doc/implementors/core/ops/drop/trait.Drop.js
    index 60b4672317..43484b2f01 100644
    --- a/doc/implementors/core/ops/drop/trait.Drop.js
    +++ b/doc/implementors/core/ops/drop/trait.Drop.js
    @@ -1,6 +1,5 @@
     (function() {var implementors = {
     "apic":[["impl Drop for LocalApic"]],
    -"async_channel":[["impl<T: Send, P: DeadlockPrevention> Drop for Receiver<T, P>"],["impl<T: Send, P: DeadlockPrevention> Drop for Sender<T, P>"]],
     "atomic_linked_list":[["impl<K, V> Drop for AtomicMap<K, V>where\n    K: PartialEq,"]],
     "crate_metadata":[["impl Drop for LoadedCrate"]],
     "dfqueue":[["impl<T> Drop for MpscQueue<T>"]],
    @@ -15,6 +14,7 @@
     "serial_port_basic":[["impl Drop for SerialPort"]],
     "spawn":[["impl Drop for BootstrapTaskRef"]],
     "stdio":[["impl Drop for KeyEventReadGuard"]],
    +"sync_channel":[["impl<T: Send, P: DeadlockPrevention> Drop for Sender<T, P>"],["impl<T: Send, P: DeadlockPrevention> Drop for Receiver<T, P>"]],
     "task":[["impl Drop for JoinableTaskRef"],["impl<'a> Drop for PriorityInheritanceGuard<'a>"],["impl Drop for ScheduleOnDrop"]],
     "task_struct":[["impl Drop for Task"]],
     "text_terminal":[["impl Drop for ScrollAction"]],
    diff --git a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
    index 3215a7e3b9..a05c4afb6b 100644
    --- a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
    +++ b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
    @@ -2,7 +2,6 @@
     "acpi_table":[["impl RefUnwindSafe for TableLocation",1,["acpi_table::TableLocation"]],["impl RefUnwindSafe for AcpiTables",1,["acpi_table::AcpiTables"]]],
     "apic":[["impl RefUnwindSafe for ApicId",1,["apic::ApicId"]],["impl RefUnwindSafe for InterruptChip",1,["apic::InterruptChip"]],["impl RefUnwindSafe for LapicDeliveryMode",1,["apic::LapicDeliveryMode"]],["impl RefUnwindSafe for LapicTimerDivide",1,["apic::LapicTimerDivide"]],["impl RefUnwindSafe for LapicIpiDestination",1,["apic::LapicIpiDestination"]],["impl RefUnwindSafe for ApicRegisters",1,["apic::ApicRegisters"]],["impl RefUnwindSafe for RegisterArray",1,["apic::RegisterArray"]],["impl RefUnwindSafe for LvtLint",1,["apic::LvtLint"]],["impl RefUnwindSafe for LapicInitError",1,["apic::LapicInitError"]],["impl RefUnwindSafe for LocalApic",1,["apic::LocalApic"]]],
     "app_io":[["impl !RefUnwindSafe for IoStreams",1,["app_io::IoStreams"]]],
    -"async_channel":[["impl RefUnwindSafe for ChannelStatus",1,["async_channel::ChannelStatus"]],["impl RefUnwindSafe for Error",1,["async_channel::Error"]],["impl<T, P = Spin> !RefUnwindSafe for Sender<T, P>",1,["async_channel::Sender"]],["impl<T, P = Spin> !RefUnwindSafe for Receiver<T, P>",1,["async_channel::Receiver"]]],
     "ata":[["impl RefUnwindSafe for AtaError",1,["ata::AtaError"]],["impl RefUnwindSafe for AtaStatus",1,["ata::AtaStatus"]],["impl RefUnwindSafe for AtaDeviceType",1,["ata::AtaDeviceType"]],["impl !RefUnwindSafe for AtaDrive",1,["ata::AtaDrive"]],["impl !RefUnwindSafe for IdeController",1,["ata::IdeController"]],["impl<'c> !RefUnwindSafe for IdeControllerIter<'c>",1,["ata::IdeControllerIter"]],["impl RefUnwindSafe for AtaIdentifyData",1,["ata::AtaIdentifyData"]],["impl RefUnwindSafe for AtaSerialNumber",1,["ata::AtaSerialNumber"]],["impl RefUnwindSafe for AtaModelNumber",1,["ata::AtaModelNumber"]],["impl RefUnwindSafe for AtaFirmwareVersion",1,["ata::AtaFirmwareVersion"]]],
     "atomic_linked_list":[["impl<T> RefUnwindSafe for AtomicLinkedList<T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedList"]],["impl<'a, T> RefUnwindSafe for AtomicLinkedListIter<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIter"]],["impl<'a, T> RefUnwindSafe for AtomicLinkedListIterMut<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIterMut"]],["impl<K, V> RefUnwindSafe for AtomicMap<K, V>",1,["atomic_linked_list::atomic_map::AtomicMap"]],["impl<'a, K, V> RefUnwindSafe for AtomicMapIter<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIter"]],["impl<'a, K, V> RefUnwindSafe for AtomicMapIterMut<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIterMut"]]],
     "block_allocator":[["impl RefUnwindSafe for FixedSizeBlockAllocator",1,["block_allocator::FixedSizeBlockAllocator"]]],
    @@ -79,7 +78,7 @@
     "page_attribute_table":[["impl RefUnwindSafe for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl RefUnwindSafe for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl RefUnwindSafe for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]],
     "page_table_entry":[["impl RefUnwindSafe for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl RefUnwindSafe for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl RefUnwindSafe for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]],
     "path":[["impl<'a> RefUnwindSafe for Components<'a>",1,["path::component::Components"]],["impl<'a> RefUnwindSafe for Component<'a>",1,["path::component::Component"]],["impl RefUnwindSafe for Path",1,["path::Path"]],["impl RefUnwindSafe for PathBuf",1,["path::PathBuf"]]],
    -"pci":[["impl RefUnwindSafe for PciCapability",1,["pci::PciCapability"]],["impl RefUnwindSafe for InterruptPin",1,["pci::InterruptPin"]],["impl RefUnwindSafe for PciBus",1,["pci::PciBus"]],["impl RefUnwindSafe for PciLocation",1,["pci::PciLocation"]],["impl RefUnwindSafe for PciDevice",1,["pci::PciDevice"]],["impl RefUnwindSafe for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl RefUnwindSafe for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl RefUnwindSafe for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
    +"pci":[["impl RefUnwindSafe for PciCapability",1,["pci::PciCapability"]],["impl RefUnwindSafe for InterruptPin",1,["pci::InterruptPin"]],["impl !RefUnwindSafe for PciBus",1,["pci::PciBus"]],["impl RefUnwindSafe for PciLocation",1,["pci::PciLocation"]],["impl !RefUnwindSafe for PciDevice",1,["pci::PciDevice"]],["impl RefUnwindSafe for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl RefUnwindSafe for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl RefUnwindSafe for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
     "percent_encoding":[["impl RefUnwindSafe for SIMPLE_ENCODE_SET",1,["percent_encoding::SIMPLE_ENCODE_SET"]],["impl RefUnwindSafe for QUERY_ENCODE_SET",1,["percent_encoding::QUERY_ENCODE_SET"]],["impl RefUnwindSafe for DEFAULT_ENCODE_SET",1,["percent_encoding::DEFAULT_ENCODE_SET"]],["impl RefUnwindSafe for PATH_SEGMENT_ENCODE_SET",1,["percent_encoding::PATH_SEGMENT_ENCODE_SET"]],["impl RefUnwindSafe for USERINFO_ENCODE_SET",1,["percent_encoding::USERINFO_ENCODE_SET"]],["impl<'a, E> RefUnwindSafe for PercentEncode<'a, E>where\n    E: RefUnwindSafe,",1,["percent_encoding::PercentEncode"]],["impl<'a> RefUnwindSafe for PercentDecode<'a>",1,["percent_encoding::PercentDecode"]]],
     "pic":[["impl RefUnwindSafe for IrqStatusRegisters",1,["pic::IrqStatusRegisters"]],["impl RefUnwindSafe for ChainedPics",1,["pic::ChainedPics"]]],
     "pmu_x86":[["impl RefUnwindSafe for PerformanceCounters",1,["pmu_x86::stat::PerformanceCounters"]],["impl RefUnwindSafe for PMUResults",1,["pmu_x86::stat::PMUResults"]],["impl RefUnwindSafe for EventType",1,["pmu_x86::EventType"]],["impl RefUnwindSafe for Counter",1,["pmu_x86::Counter"]],["impl RefUnwindSafe for SampleResults",1,["pmu_x86::SampleResults"]]],
    @@ -111,6 +110,7 @@
     "stdio":[["impl<T> RefUnwindSafe for RingBufferEof<T>where\n    T: RefUnwindSafe,",1,["stdio::RingBufferEof"]],["impl !RefUnwindSafe for Stdio",1,["stdio::Stdio"]],["impl !RefUnwindSafe for StdioReader",1,["stdio::StdioReader"]],["impl !RefUnwindSafe for StdioWriter",1,["stdio::StdioWriter"]],["impl<'a> !RefUnwindSafe for StdioReadGuard<'a>",1,["stdio::StdioReadGuard"]],["impl<'a> !RefUnwindSafe for StdioWriteGuard<'a>",1,["stdio::StdioWriteGuard"]],["impl !RefUnwindSafe for KeyEventQueue",1,["stdio::KeyEventQueue"]],["impl !RefUnwindSafe for KeyEventQueueReader",1,["stdio::KeyEventQueueReader"]],["impl !RefUnwindSafe for KeyEventQueueWriter",1,["stdio::KeyEventQueueWriter"]],["impl !RefUnwindSafe for KeyEventReadGuard",1,["stdio::KeyEventReadGuard"]]],
     "str_ref":[["impl RefUnwindSafe for StrRef",1,["str_ref::StrRef"]]],
     "sync_block":[["impl<P = Spin> !RefUnwindSafe for Condvar<P>",1,["sync_block::condvar::Condvar"]],["impl RefUnwindSafe for Block",1,["sync_block::Block"]]],
    +"sync_channel":[["impl RefUnwindSafe for ChannelStatus",1,["sync_channel::ChannelStatus"]],["impl RefUnwindSafe for Error",1,["sync_channel::Error"]],["impl<T, P = Spin> !RefUnwindSafe for Sender<T, P>",1,["sync_channel::Sender"]],["impl<T, P = Spin> !RefUnwindSafe for Receiver<T, P>",1,["sync_channel::Receiver"]]],
     "sync_preemption":[["impl RefUnwindSafe for DisablePreemption",1,["sync_preemption::DisablePreemption"]]],
     "task":[["impl<'a> !RefUnwindSafe for PriorityInheritanceGuard<'a>",1,["task::scheduler::PriorityInheritanceGuard"]],["impl RefUnwindSafe for InitCurrentTaskError",1,["task::tls_current_task::InitCurrentTaskError"]],["impl RefUnwindSafe for CurrentTaskNotFound",1,["task::tls_current_task::CurrentTaskNotFound"]],["impl !RefUnwindSafe for TaskRef",1,["task::TaskRef"]],["impl !RefUnwindSafe for WeakTaskRef",1,["task::WeakTaskRef"]],["impl !RefUnwindSafe for JoinableTaskRef",1,["task::JoinableTaskRef"]],["impl RefUnwindSafe for ScheduleOnDrop",1,["task::ScheduleOnDrop"]],["impl !RefUnwindSafe for ExitableTaskRef",1,["task::ExitableTaskRef"]]],
     "task_fs":[["impl RefUnwindSafe for TaskFs",1,["task_fs::TaskFs"]],["impl !RefUnwindSafe for TaskDir",1,["task_fs::TaskDir"]],["impl !RefUnwindSafe for TaskFile",1,["task_fs::TaskFile"]],["impl !RefUnwindSafe for MmiDir",1,["task_fs::MmiDir"]],["impl !RefUnwindSafe for MmiFile",1,["task_fs::MmiFile"]]],
    diff --git a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
    index 3ec742f192..73eac917ab 100644
    --- a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
    +++ b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
    @@ -2,7 +2,6 @@
     "acpi_table":[["impl UnwindSafe for TableLocation",1,["acpi_table::TableLocation"]],["impl UnwindSafe for AcpiTables",1,["acpi_table::AcpiTables"]]],
     "apic":[["impl UnwindSafe for ApicId",1,["apic::ApicId"]],["impl UnwindSafe for InterruptChip",1,["apic::InterruptChip"]],["impl UnwindSafe for LapicDeliveryMode",1,["apic::LapicDeliveryMode"]],["impl UnwindSafe for LapicTimerDivide",1,["apic::LapicTimerDivide"]],["impl UnwindSafe for LapicIpiDestination",1,["apic::LapicIpiDestination"]],["impl UnwindSafe for ApicRegisters",1,["apic::ApicRegisters"]],["impl UnwindSafe for RegisterArray",1,["apic::RegisterArray"]],["impl UnwindSafe for LvtLint",1,["apic::LvtLint"]],["impl UnwindSafe for LapicInitError",1,["apic::LapicInitError"]],["impl UnwindSafe for LocalApic",1,["apic::LocalApic"]]],
     "app_io":[["impl !UnwindSafe for IoStreams",1,["app_io::IoStreams"]]],
    -"async_channel":[["impl UnwindSafe for ChannelStatus",1,["async_channel::ChannelStatus"]],["impl UnwindSafe for Error",1,["async_channel::Error"]],["impl<T, P = Spin> !UnwindSafe for Sender<T, P>",1,["async_channel::Sender"]],["impl<T, P = Spin> !UnwindSafe for Receiver<T, P>",1,["async_channel::Receiver"]]],
     "ata":[["impl UnwindSafe for AtaError",1,["ata::AtaError"]],["impl UnwindSafe for AtaStatus",1,["ata::AtaStatus"]],["impl UnwindSafe for AtaDeviceType",1,["ata::AtaDeviceType"]],["impl !UnwindSafe for AtaDrive",1,["ata::AtaDrive"]],["impl !UnwindSafe for IdeController",1,["ata::IdeController"]],["impl<'c> !UnwindSafe for IdeControllerIter<'c>",1,["ata::IdeControllerIter"]],["impl UnwindSafe for AtaIdentifyData",1,["ata::AtaIdentifyData"]],["impl UnwindSafe for AtaSerialNumber",1,["ata::AtaSerialNumber"]],["impl UnwindSafe for AtaModelNumber",1,["ata::AtaModelNumber"]],["impl UnwindSafe for AtaFirmwareVersion",1,["ata::AtaFirmwareVersion"]]],
     "atomic_linked_list":[["impl<T> UnwindSafe for AtomicLinkedList<T>where\n    T: RefUnwindSafe,",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedList"]],["impl<'a, T> UnwindSafe for AtomicLinkedListIter<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIter"]],["impl<'a, T> UnwindSafe for AtomicLinkedListIterMut<'a, T>",1,["atomic_linked_list::atomic_linked_list::AtomicLinkedListIterMut"]],["impl<K, V> UnwindSafe for AtomicMap<K, V>where\n    K: RefUnwindSafe,\n    V: RefUnwindSafe,",1,["atomic_linked_list::atomic_map::AtomicMap"]],["impl<'a, K, V> UnwindSafe for AtomicMapIter<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIter"]],["impl<'a, K, V> UnwindSafe for AtomicMapIterMut<'a, K, V>",1,["atomic_linked_list::atomic_map::AtomicMapIterMut"]]],
     "block_allocator":[["impl !UnwindSafe for FixedSizeBlockAllocator",1,["block_allocator::FixedSizeBlockAllocator"]]],
    @@ -111,6 +110,7 @@
     "stdio":[["impl<T> UnwindSafe for RingBufferEof<T>where\n    T: UnwindSafe,",1,["stdio::RingBufferEof"]],["impl !UnwindSafe for Stdio",1,["stdio::Stdio"]],["impl !UnwindSafe for StdioReader",1,["stdio::StdioReader"]],["impl !UnwindSafe for StdioWriter",1,["stdio::StdioWriter"]],["impl<'a> !UnwindSafe for StdioReadGuard<'a>",1,["stdio::StdioReadGuard"]],["impl<'a> !UnwindSafe for StdioWriteGuard<'a>",1,["stdio::StdioWriteGuard"]],["impl !UnwindSafe for KeyEventQueue",1,["stdio::KeyEventQueue"]],["impl !UnwindSafe for KeyEventQueueReader",1,["stdio::KeyEventQueueReader"]],["impl !UnwindSafe for KeyEventQueueWriter",1,["stdio::KeyEventQueueWriter"]],["impl !UnwindSafe for KeyEventReadGuard",1,["stdio::KeyEventReadGuard"]]],
     "str_ref":[["impl UnwindSafe for StrRef",1,["str_ref::StrRef"]]],
     "sync_block":[["impl<P = Spin> !UnwindSafe for Condvar<P>",1,["sync_block::condvar::Condvar"]],["impl UnwindSafe for Block",1,["sync_block::Block"]]],
    +"sync_channel":[["impl UnwindSafe for ChannelStatus",1,["sync_channel::ChannelStatus"]],["impl UnwindSafe for Error",1,["sync_channel::Error"]],["impl<T, P = Spin> !UnwindSafe for Sender<T, P>",1,["sync_channel::Sender"]],["impl<T, P = Spin> !UnwindSafe for Receiver<T, P>",1,["sync_channel::Receiver"]]],
     "sync_preemption":[["impl UnwindSafe for DisablePreemption",1,["sync_preemption::DisablePreemption"]]],
     "task":[["impl<'a> !UnwindSafe for PriorityInheritanceGuard<'a>",1,["task::scheduler::PriorityInheritanceGuard"]],["impl UnwindSafe for InitCurrentTaskError",1,["task::tls_current_task::InitCurrentTaskError"]],["impl UnwindSafe for CurrentTaskNotFound",1,["task::tls_current_task::CurrentTaskNotFound"]],["impl !UnwindSafe for TaskRef",1,["task::TaskRef"]],["impl !UnwindSafe for WeakTaskRef",1,["task::WeakTaskRef"]],["impl !UnwindSafe for JoinableTaskRef",1,["task::JoinableTaskRef"]],["impl UnwindSafe for ScheduleOnDrop",1,["task::ScheduleOnDrop"]],["impl !UnwindSafe for ExitableTaskRef",1,["task::ExitableTaskRef"]]],
     "task_fs":[["impl UnwindSafe for TaskFs",1,["task_fs::TaskFs"]],["impl !UnwindSafe for TaskDir",1,["task_fs::TaskDir"]],["impl !UnwindSafe for TaskFile",1,["task_fs::TaskFile"]],["impl !UnwindSafe for MmiDir",1,["task_fs::MmiDir"]],["impl !UnwindSafe for MmiFile",1,["task_fs::MmiFile"]]],
    diff --git a/doc/implementors/core2/io/traits/trait.Read.js b/doc/implementors/core2/io/traits/trait.Read.js
    index f9883556b8..1b91d84f84 100644
    --- a/doc/implementors/core2/io/traits/trait.Read.js
    +++ b/doc/implementors/core2/io/traits/trait.Read.js
    @@ -2,5 +2,5 @@
     "io":[["impl<IO> Read for Reader<IO>where\n    IO: ByteReader,"],["impl<IO> Read for ReaderWriter<IO>where\n    IO: ByteReader,"],["impl<'io, IO, L, B> Read for &LockableIo<'io, IO, L, B>where\n    IO: Read + 'io + ?Sized,\n    L: for<'a> Lockable<'a, IO> + ?Sized,\n    B: Borrow<L>,"],["impl<'io, IO, L, B> Read for LockableIo<'io, IO, L, B>where\n    IO: Read + 'io + ?Sized,\n    L: for<'a> Lockable<'a, IO> + ?Sized,\n    B: Borrow<L>,"]],
     "serial_port":[["impl Read for SerialPort"]],
     "stdio":[["impl<'a> Read for StdioReadGuard<'a>"]],
    -"tty":[["impl Read for Master"],["impl Read for Slave"]]
    +"tty":[["impl Read for Slave"],["impl Read for Master"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/doc/implementors/zerocopy/trait.FromBytes.js b/doc/implementors/zerocopy/trait.FromBytes.js
    index c6f5890576..2cd71e26b4 100644
    --- a/doc/implementors/zerocopy/trait.FromBytes.js
    +++ b/doc/implementors/zerocopy/trait.FromBytes.js
    @@ -5,7 +5,7 @@
     "context_switch_sse":[["impl FromBytes for ContextSSE"]],
     "dmar":[["impl FromBytes for DmarEntryRecord"],["impl FromBytes for DmarAndd"],["impl FromBytes for DmarAtsr"],["impl FromBytes for DmarRmrr"],["impl FromBytes for DmarRhsa"],["impl FromBytes for DmarSatc"],["impl FromBytes for DeviceScopePath"]],
     "fadt":[["impl FromBytes for Fadt"]],
    -"framebuffer":[["impl FromBytes for AlphaPixel"],["impl FromBytes for RGBPixel"]],
    +"framebuffer":[["impl FromBytes for RGBPixel"],["impl FromBytes for AlphaPixel"]],
     "hpet":[["impl FromBytes for HpetAcpiTable"],["impl FromBytes for Hpet"],["impl FromBytes for HpetTimer"]],
     "intel_ethernet":[["impl FromBytes for LegacyRxDescriptor"],["impl FromBytes for AdvancedTxDescriptor"],["impl FromBytes for LegacyTxDescriptor"],["impl FromBytes for AdvancedRxDescriptor"]],
     "madt":[["impl FromBytes for MadtIntSrcOverride"],["impl FromBytes for MadtNonMaskableInterrupt"],["impl FromBytes for MadtLocalX2Apic"],["impl FromBytes for MadtLocalApic"],["impl FromBytes for MadtLocalApicAddressOverride"],["impl FromBytes for MadtIoApic"]],
    diff --git a/doc/ixgbe/enum.FilterProtocol.html b/doc/ixgbe/enum.FilterProtocol.html
    index 7bd08bd24e..3c26d47657 100644
    --- a/doc/ixgbe/enum.FilterProtocol.html
    +++ b/doc/ixgbe/enum.FilterProtocol.html
    @@ -1,4 +1,4 @@
    -FilterProtocol in ixgbe - Rust
    pub enum FilterProtocol {
    +FilterProtocol in ixgbe - Rust
    pub enum FilterProtocol {
         Tcp = 0,
         Udp = 1,
         Sctp = 2,
    diff --git a/doc/ixgbe/enum.LinkSpeedMbps.html b/doc/ixgbe/enum.LinkSpeedMbps.html
    index c5f8a161d8..944c742867 100644
    --- a/doc/ixgbe/enum.LinkSpeedMbps.html
    +++ b/doc/ixgbe/enum.LinkSpeedMbps.html
    @@ -1,12 +1,12 @@
    -LinkSpeedMbps in ixgbe - Rust

    Enum ixgbe::LinkSpeedMbps

    source ·
    pub enum LinkSpeedMbps {
    +LinkSpeedMbps in ixgbe - Rust

    Enum ixgbe::LinkSpeedMbps

    source ·
    pub enum LinkSpeedMbps {
         LS100 = 100,
         LS1000 = 1_000,
         LS10000 = 10_000,
         LSUnknown = 0,
     }
    Expand description

    Possible link speeds of the 82599 NIC

    -

    Variants§

    §

    LS100 = 100

    §

    LS1000 = 1_000

    §

    LS10000 = 10_000

    §

    LSUnknown = 0

    Trait Implementations§

    source§

    impl PartialEq<LinkSpeedMbps> for LinkSpeedMbps

    source§

    fn eq(&self, other: &LinkSpeedMbps) -> bool

    This method tests for self and other values to be equal, and is used +

    Variants§

    §

    LS100 = 100

    §

    LS1000 = 1_000

    §

    LS10000 = 10_000

    §

    LSUnknown = 0

    Trait Implementations§

    source§

    impl PartialEq<LinkSpeedMbps> for LinkSpeedMbps

    source§

    fn eq(&self, other: &LinkSpeedMbps) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for LinkSpeedMbps

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +sufficient, and should not be overridden without very good reason.

    source§

    impl StructuralPartialEq for LinkSpeedMbps

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ixgbe/enum.RxBufferSizeKiB.html b/doc/ixgbe/enum.RxBufferSizeKiB.html index 0e745c8241..938dccecf1 100644 --- a/doc/ixgbe/enum.RxBufferSizeKiB.html +++ b/doc/ixgbe/enum.RxBufferSizeKiB.html @@ -1,4 +1,4 @@ -RxBufferSizeKiB in ixgbe - Rust
    pub enum RxBufferSizeKiB {
    +RxBufferSizeKiB in ixgbe - Rust
    pub enum RxBufferSizeKiB {
     
    Show 16 variants Buffer1KiB = 1, Buffer2KiB = 2, Buffer3KiB = 3, @@ -16,7 +16,7 @@ Buffer15KiB = 15, Buffer16KiB = 16,
    }
    Expand description

    The set of receive buffer sizes that are accepted by the 82599 device.

    -

    Variants§

    §

    Buffer1KiB = 1

    §

    Buffer2KiB = 2

    §

    Buffer3KiB = 3

    §

    Buffer4KiB = 4

    §

    Buffer5KiB = 5

    §

    Buffer6KiB = 6

    §

    Buffer7KiB = 7

    §

    Buffer8KiB = 8

    §

    Buffer9KiB = 9

    §

    Buffer10KiB = 10

    §

    Buffer11KiB = 11

    §

    Buffer12KiB = 12

    §

    Buffer13KiB = 13

    §

    Buffer14KiB = 14

    §

    Buffer15KiB = 15

    §

    Buffer16KiB = 16

    Trait Implementations§

    source§

    impl Clone for RxBufferSizeKiB

    source§

    fn clone(&self) -> RxBufferSizeKiB

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Copy for RxBufferSizeKiB

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Variants§

    §

    Buffer1KiB = 1

    §

    Buffer2KiB = 2

    §

    Buffer3KiB = 3

    §

    Buffer4KiB = 4

    §

    Buffer5KiB = 5

    §

    Buffer6KiB = 6

    §

    Buffer7KiB = 7

    §

    Buffer8KiB = 8

    §

    Buffer9KiB = 9

    §

    Buffer10KiB = 10

    §

    Buffer11KiB = 11

    §

    Buffer12KiB = 12

    §

    Buffer13KiB = 13

    §

    Buffer14KiB = 14

    §

    Buffer15KiB = 15

    §

    Buffer16KiB = 16

    Trait Implementations§

    source§

    impl Clone for RxBufferSizeKiB

    source§

    fn clone(&self) -> RxBufferSizeKiB

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Copy for RxBufferSizeKiB

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ixgbe/fn.rx_poll_mq.html b/doc/ixgbe/fn.rx_poll_mq.html index b1782d7879..18a4ed39ca 100644 --- a/doc/ixgbe/fn.rx_poll_mq.html +++ b/doc/ixgbe/fn.rx_poll_mq.html @@ -1,4 +1,4 @@ -rx_poll_mq in ixgbe - Rust

    Function ixgbe::rx_poll_mq

    source ·
    pub fn rx_poll_mq(
    +rx_poll_mq in ixgbe - Rust

    Function ixgbe::rx_poll_mq

    source ·
    pub fn rx_poll_mq(
         qid: usize,
         nic_id: PciLocation
     ) -> Result<ReceivedFrame, &'static str>
    Expand description

    A helper function to poll the nic receive queues (only for testing purposes).

    diff --git a/doc/ixgbe/fn.tx_send_mq.html b/doc/ixgbe/fn.tx_send_mq.html index 36f5b18c28..17f0a8847b 100644 --- a/doc/ixgbe/fn.tx_send_mq.html +++ b/doc/ixgbe/fn.tx_send_mq.html @@ -1,4 +1,4 @@ -tx_send_mq in ixgbe - Rust

    Function ixgbe::tx_send_mq

    source ·
    pub fn tx_send_mq(
    +tx_send_mq in ixgbe - Rust

    Function ixgbe::tx_send_mq

    source ·
    pub fn tx_send_mq(
         qid: usize,
         nic_id: PciLocation,
         packet: Option<TransmitBuffer>
    diff --git a/doc/ixgbe/index.html b/doc/ixgbe/index.html
    index 98f53d6571..de6e21c2a6 100644
    --- a/doc/ixgbe/index.html
    +++ b/doc/ixgbe/index.html
    @@ -1,5 +1,5 @@
     ixgbe - Rust

    Crate ixgbe

    source ·
    Expand description

    An ixgbe driver for a 82599 10GbE Network Interface Card.

    +
  • All Items
  • Crate ixgbe

    source ·
    Expand description

    An ixgbe driver for a 82599 10GbE Network Interface Card.

    Currently we support basic send and receive, Receive Side Scaling (RSS), 5-tuple filters, and MSI interrupts. We also support language-level virtualization of the NIC so that applications can directly access their assigned transmit and receive queues. When using virtualization, we disable RSS since we use 5-tuple filters to ensure packets are routed to the correct queues. diff --git a/doc/ixgbe/struct.IxgbeNic.html b/doc/ixgbe/struct.IxgbeNic.html index b5e50fe67d..b717c58c19 100644 --- a/doc/ixgbe/struct.IxgbeNic.html +++ b/doc/ixgbe/struct.IxgbeNic.html @@ -1,5 +1,5 @@ IxgbeNic in ixgbe - Rust

    Struct ixgbe::IxgbeNic

    source ·
    pub struct IxgbeNic { /* private fields */ }
    Expand description

    A struct representing an ixgbe network interface card.

    -

    Implementations§

    source§

    impl IxgbeNic

    source

    pub fn init( +

    Implementations§

    source§

    impl IxgbeNic

    source

    pub fn init( ixgbe_pci_dev: &PciDevice, dev_id: PciLocation, enable_virtualization: bool, @@ -29,17 +29,17 @@

    Arguments
  • num_rx_descriptors: The number of descriptors in each receive queue.
  • num_tx_descriptors: The number of descriptors in each transmit queue.
  • -
    source

    pub fn device_id(&self) -> PciLocation

    Returns the device id of the PCI device.

    -
    source

    pub fn spoof_mac(&mut self, spoofed_mac_addr: [u8; 6])

    Returns value of (links, links2) registers

    -

    Returns link speed in Mb/s

    -
    source

    pub fn get_stats(&self) -> (u32, u64, u32, u64)

    Returns the Rx and Tx statistics in the form: (Good Rx packets, Good Rx bytes, Good Tx packets, Good Tx bytes). +

    source

    pub fn device_id(&self) -> PciLocation

    Returns the device id of the PCI device.

    +
    source

    pub fn spoof_mac(&mut self, spoofed_mac_addr: [u8; 6])

    Returns value of (links, links2) registers

    +

    Returns link speed in Mb/s

    +
    source

    pub fn get_stats(&self) -> (u32, u64, u32, u64)

    Returns the Rx and Tx statistics in the form: (Good Rx packets, Good Rx bytes, Good Tx packets, Good Tx bytes). A good packet is one that is >= 64 bytes including ethernet header and CRC

    -
    source

    pub fn enable_rss( +

    source

    pub fn enable_rss( regs2: &mut IntelIxgbeRegisters2, regs3: &mut IntelIxgbeRegisters3 ) -> Result<(), &'static str>

    Enable multiple receive queues with RSS. Part of queue initialization is done in the rx_init function.

    -
    source

    pub fn set_5_tuple_filter( +

    source

    pub fn set_5_tuple_filter( &mut self, source_ip: Option<[u8; 4]>, dest_ip: Option<[u8; 4]>, diff --git a/doc/pci/all.html b/doc/pci/all.html index e34dc13638..2edb52f90f 100644 --- a/doc/pci/all.html +++ b/doc/pci/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/doc/pci/enum.InterruptPin.html b/doc/pci/enum.InterruptPin.html index 59e212ed38..59c04f0cfc 100644 --- a/doc/pci/enum.InterruptPin.html +++ b/doc/pci/enum.InterruptPin.html @@ -1,4 +1,4 @@ -InterruptPin in pci - Rust

    Enum pci::InterruptPin

    source ·
    pub enum InterruptPin {
    +InterruptPin in pci - Rust

    Enum pci::InterruptPin

    source ·
    pub enum InterruptPin {
         A,
         B,
         C,
    diff --git a/doc/pci/enum.PciCapability.html b/doc/pci/enum.PciCapability.html
    index 9c074d9184..5cd66c8a59 100644
    --- a/doc/pci/enum.PciCapability.html
    +++ b/doc/pci/enum.PciCapability.html
    @@ -1,4 +1,4 @@
    -PciCapability in pci - Rust

    Enum pci::PciCapability

    source ·
    #[repr(u8)]
    pub enum PciCapability { +PciCapability in pci - Rust

    Enum pci::PciCapability

    source ·
    #[repr(u8)]
    pub enum PciCapability { Msi = 5, Msix = 17, }

    Variants§

    §

    Msi = 5

    §

    Msix = 17

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere diff --git a/doc/pci/enum.PciConfigSpaceAccessMechanism.html b/doc/pci/enum.PciConfigSpaceAccessMechanism.html index b5492b2d17..78cc7eab23 100644 --- a/doc/pci/enum.PciConfigSpaceAccessMechanism.html +++ b/doc/pci/enum.PciConfigSpaceAccessMechanism.html @@ -1,4 +1,4 @@ -PciConfigSpaceAccessMechanism in pci - Rust
    pub enum PciConfigSpaceAccessMechanism {
    +PciConfigSpaceAccessMechanism in pci - Rust
    pub enum PciConfigSpaceAccessMechanism {
         MemoryMapped = 0,
         IoPort = 1,
     }
    Expand description

    Lists the 2 possible PCI configuration space access mechanisms diff --git a/doc/pci/fn.get_pci_buses.html b/doc/pci/fn.get_pci_buses.html index 319b2dfbc9..12d7a2825c 100644 --- a/doc/pci/fn.get_pci_buses.html +++ b/doc/pci/fn.get_pci_buses.html @@ -1,3 +1,3 @@ -get_pci_buses in pci - Rust

    Function pci::get_pci_buses

    source ·
    pub fn get_pci_buses() -> Result<&'static Vec<PciBus>, &'static str>
    Expand description

    Returns a list of all PCI buses in this system. +get_pci_buses in pci - Rust

    Function pci::get_pci_buses

    source ·
    pub fn get_pci_buses() -> Result<&'static Vec<PciBus>, &'static str>
    Expand description

    Returns a list of all PCI buses in this system. If the PCI bus hasn’t been initialized, this initializes the PCI bus & scans it to enumerates devices.

    \ No newline at end of file diff --git a/doc/pci/fn.get_pci_device_bsf.html b/doc/pci/fn.get_pci_device_bsf.html index 46353db9c0..40b2c97a0b 100644 --- a/doc/pci/fn.get_pci_device_bsf.html +++ b/doc/pci/fn.get_pci_device_bsf.html @@ -1,4 +1,4 @@ -get_pci_device_bsf in pci - Rust

    Function pci::get_pci_device_bsf

    source ·
    pub fn get_pci_device_bsf(
    +get_pci_device_bsf in pci - Rust

    Function pci::get_pci_device_bsf

    source ·
    pub fn get_pci_device_bsf(
         bus: u8,
         slot: u8,
         func: u8
    diff --git a/doc/pci/fn.init.html b/doc/pci/fn.init.html
    new file mode 100644
    index 0000000000..a437cad0ad
    --- /dev/null
    +++ b/doc/pci/fn.init.html
    @@ -0,0 +1,2 @@
    +init in pci - Rust

    Function pci::init

    source ·
    pub fn init() -> Result<(), &'static str>
    Expand description

    Initializes the PCI interrupt handler

    +
    \ No newline at end of file diff --git a/doc/pci/fn.pci_device_iter.html b/doc/pci/fn.pci_device_iter.html index e0d3f0abc4..56cda6f97c 100644 --- a/doc/pci/fn.pci_device_iter.html +++ b/doc/pci/fn.pci_device_iter.html @@ -1,4 +1,4 @@ -pci_device_iter in pci - Rust

    Function pci::pci_device_iter

    source ·
    pub fn pci_device_iter(
    +pci_device_iter in pci - Rust

    Function pci::pci_device_iter

    source ·
    pub fn pci_device_iter(
     ) -> Result<impl Iterator<Item = &'static PciDevice>, &'static str>
    Expand description

    Returns an iterator that iterates over all PciDevices, in no particular guaranteed order. If the PCI bus hasn’t been initialized, this initializes the PCI bus & scans it to enumerates devices.

    \ No newline at end of file diff --git a/doc/pci/index.html b/doc/pci/index.html index 3e2c009898..b6a0555f34 100644 --- a/doc/pci/index.html +++ b/doc/pci/index.html @@ -1,12 +1,17 @@ pci - Rust

    Crate pci

    source ·
    Expand description

    PCI Configuration Space Access

    +
  • All Items
  • Crate pci

    source ·
    Expand description

    PCI Configuration Space Access

    Note: while pci currently uses port-io on x86 and mmio on aarch64, x86 may also support memory-based PCI configuration in the future; port-io is the legacy way to access the config space.

    +

    For context on the various interrupt mechanisms (MSI/MSI-X/INTx):

    +

    Structs

    • A single Message Signaled Interrupt entry.
    • A memory-mapped array of MsixVectorEntry
    • A PCI bus, which contains a list of PCI devices on that bus.
    • Contains information common to every type of PCI Device, and offers functions for reading/writing to the PCI configuration space.
    • The bus, slot, and function number of a given PCI device. This offers methods for reading and writing the PCI config space.

    Enums

    Functions

    • Returns a list of all PCI buses in this system. If the PCI bus hasn’t been initialized, this initializes the PCI bus & scans it to enumerates devices.
    • Returns a reference to the PciDevice with the given bus, slot, func identifier. -If the PCI bus hasn’t been initialized, this initializes the PCI bus & scans it to enumerates devices.
    • Returns an iterator that iterates over all PciDevices, in no particular guaranteed order. +If the PCI bus hasn’t been initialized, this initializes the PCI bus & scans it to enumerates devices.
    • Initializes the PCI interrupt handler
    • Returns an iterator that iterates over all PciDevices, in no particular guaranteed order. If the PCI bus hasn’t been initialized, this initializes the PCI bus & scans it to enumerates devices.
    \ No newline at end of file diff --git a/doc/pci/sidebar-items.js b/doc/pci/sidebar-items.js index f40c8c6238..0a5bb11674 100644 --- a/doc/pci/sidebar-items.js +++ b/doc/pci/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["InterruptPin","PciCapability","PciConfigSpaceAccessMechanism"],"fn":["get_pci_buses","get_pci_device_bsf","pci_device_iter"],"struct":["MsixVectorEntry","MsixVectorTable","PciBus","PciDevice","PciLocation"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["InterruptPin","PciCapability","PciConfigSpaceAccessMechanism"],"fn":["get_pci_buses","get_pci_device_bsf","init","pci_device_iter"],"struct":["MsixVectorEntry","MsixVectorTable","PciBus","PciDevice","PciLocation"]}; \ No newline at end of file diff --git a/doc/pci/struct.MsixVectorEntry.html b/doc/pci/struct.MsixVectorEntry.html index 460c99abc5..3fa193692f 100644 --- a/doc/pci/struct.MsixVectorEntry.html +++ b/doc/pci/struct.MsixVectorEntry.html @@ -1,9 +1,9 @@ -MsixVectorEntry in pci - Rust

    Struct pci::MsixVectorEntry

    source ·
    #[repr(C)]
    pub struct MsixVectorEntry { /* private fields */ }
    Expand description

    A single Message Signaled Interrupt entry.

    +MsixVectorEntry in pci - Rust

    Struct pci::MsixVectorEntry

    source ·
    #[repr(C)]
    pub struct MsixVectorEntry { /* private fields */ }
    Expand description

    A single Message Signaled Interrupt entry.

    This entry contains the interrupt’s IRQ vector number and the CPU to which the interrupt will be delivered.

    -

    Implementations§

    source§

    impl MsixVectorEntry

    source

    pub fn init(&mut self, cpu_id: CpuId, int_num: InterruptNumber)

    Sets interrupt destination & number for this entry and makes sure the +

    Implementations§

    source§

    impl MsixVectorEntry

    source

    pub fn init(&mut self, cpu_id: CpuId, int_num: InterruptNumber)

    Sets interrupt destination & number for this entry and makes sure the interrupt is unmasked (PCI Controller side).

    -

    Trait Implementations§

    source§

    impl FromBytes for MsixVectorEntry

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl FromBytes for MsixVectorEntry

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/pci/struct.MsixVectorTable.html b/doc/pci/struct.MsixVectorTable.html index 140665daf5..7d695a3d6b 100644 --- a/doc/pci/struct.MsixVectorTable.html +++ b/doc/pci/struct.MsixVectorTable.html @@ -1,5 +1,5 @@ -MsixVectorTable in pci - Rust

    Struct pci::MsixVectorTable

    source ·
    pub struct MsixVectorTable { /* private fields */ }
    Expand description

    A memory-mapped array of MsixVectorEntry

    -

    Implementations§

    source§

    impl MsixVectorTable

    source

    pub fn new(entries: BorrowedSliceMappedPages<MsixVectorEntry, Mutable>) -> Self

    Methods from Deref<Target = [MsixVectorEntry]>§

    source

    pub fn flatten(&self) -> &[T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &[[T; N]], and flattens it to a &[T].

    +MsixVectorTable in pci - Rust

    Struct pci::MsixVectorTable

    source ·
    pub struct MsixVectorTable { /* private fields */ }
    Expand description

    A memory-mapped array of MsixVectorEntry

    +

    Implementations§

    source§

    impl MsixVectorTable

    source

    pub fn new(entries: BorrowedSliceMappedPages<MsixVectorEntry, Mutable>) -> Self

    Methods from Deref<Target = [MsixVectorEntry]>§

    source

    pub fn flatten(&self) -> &[T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &[[T; N]], and flattens it to a &[T].

    Panics

    This panics if the length of the resulting slice would overflow a usize.

    This is only possible when flattening a slice of arrays of zero-sized @@ -2367,7 +2367,7 @@

    Examples

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.

    To lowercase the value in-place, use make_ascii_lowercase.

    -

    Trait Implementations§

    source§

    impl Deref for MsixVectorTable

    §

    type Target = [MsixVectorEntry]

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for MsixVectorTable

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Deref for MsixVectorTable

    §

    type Target = [MsixVectorEntry]

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for MsixVectorTable

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/pci/struct.PciBus.html b/doc/pci/struct.PciBus.html index df6d77ec7e..edf830e321 100644 --- a/doc/pci/struct.PciBus.html +++ b/doc/pci/struct.PciBus.html @@ -1,10 +1,10 @@ -PciBus in pci - Rust

    Struct pci::PciBus

    source ·
    pub struct PciBus {
    +PciBus in pci - Rust

    Struct pci::PciBus

    source ·
    pub struct PciBus {
         pub bus_number: u8,
         pub devices: Vec<PciDevice>,
     }
    Expand description

    A PCI bus, which contains a list of PCI devices on that bus.

    Fields§

    §bus_number: u8

    The number identifier of this PCI bus.

    §devices: Vec<PciDevice>

    The list of devices attached to this PCI bus.

    -

    Trait Implementations§

    source§

    impl Debug for PciBus

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Debug for PciBus

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for PciBus

    §

    impl Send for PciBus

    §

    impl Sync for PciBus

    §

    impl Unpin for PciBus

    §

    impl UnwindSafe for PciBus

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/pci/struct.PciDevice.html b/doc/pci/struct.PciDevice.html index 0a5a37da35..823a44dc94 100644 --- a/doc/pci/struct.PciDevice.html +++ b/doc/pci/struct.PciDevice.html @@ -1,5 +1,6 @@ -PciDevice in pci - Rust

    Struct pci::PciDevice

    source ·
    pub struct PciDevice {
    Show 16 fields +PciDevice in pci - Rust

    Struct pci::PciDevice

    source ·
    pub struct PciDevice {
    Show 17 fields pub location: PciLocation, + pub interrupt_waker: Mutex<Option<Waker>>, pub class: u8, pub subclass: u8, pub prog_if: u8, @@ -20,11 +21,12 @@

    For more, see this partial table of class, subclass, and prog_if codes,

    Fields§

    §location: PciLocation

    the bus, slot, and function number that locates this PCI device in the bus tree.

    +
    §interrupt_waker: Mutex<Option<Waker>>

    The handling task for legacy PCI interrupts

    §class: u8

    The class code, used to determine device type.

    §subclass: u8

    The subclass code, used to determine device type.

    §prog_if: u8

    The programming interface of this PCI device, also used to determine device type.

    §bars: [u32; 6]

    The six Base Address Registers (BARs)

    -
    §vendor_id: u16§device_id: u16§command: u16§status: u16§revision_id: u8§cache_line_size: u8§latency_timer: u8§header_type: u8§bist: u8§int_pin: u8§int_line: u8

    Implementations§

    source§

    impl PciDevice

    §vendor_id: u16§device_id: u16§command: u16§status: u16§revision_id: u8§cache_line_size: u8§latency_timer: u8§header_type: u8§bist: u8§int_pin: u8§int_line: u8

    Implementations§

    source§

    impl PciDevice

    source

    pub fn determine_mem_base( &self, bar_index: usize ) -> Result<PhysicalAddress, &'static str>

    Returns the base address of the memory region specified by the given BAR @@ -40,14 +42,14 @@

    Argument

    TODO: currently we assume the BAR represents a memory space (memory mapped I/O) rather than I/O space like Port I/O. Obviously, this is not always the case. Instead, we should return an enum specifying which kind of memory space the calculated base address is.

    -
    source

    pub fn determine_mem_size(&self, bar_index: usize) -> u32

    Returns the size in bytes of the memory region specified by the given BAR +

    source

    pub fn determine_mem_size(&self, bar_index: usize) -> u32

    Returns the size in bytes of the memory region specified by the given BAR (Base Address Register) for this PCI device.

    Argument
    • bar_index must be between 0 and 5 inclusively, as each PCI device can only have 6 BARs at the most.
    -
    source

    pub fn pci_enable_msi( +

    source

    pub fn pci_enable_msi( &self, core_id: u8, int_num: u8 @@ -62,10 +64,10 @@

    Arguments
    Panics

    This function panics if the MSI capability isn’t aligned to 4 bytes

    -
    source

    pub fn pci_enable_msix(&self) -> Result<(), &'static str>

    Enable MSI-X interrupts for a PCI device. +

    source

    pub fn pci_enable_msix(&self) -> Result<(), &'static str>

    Enable MSI-X interrupts for a PCI device. Only the enable bit is set and the remaining initialization steps of setting the interrupt number and core id should be completed in the device driver.

    -
    source

    pub fn pci_mem_map_msix( +

    source

    pub fn pci_mem_map_msix( &self, max_vectors: usize ) -> Result<MsixVectorTable, &'static str>

    Returns the memory mapped msix vector table

    @@ -73,7 +75,7 @@
    Panics
  • returns Err("Device not MSI-X capable") if the device doesn’t have the MSI-X capability
  • returns Err("Invalid BAR content") if the Base Address Register contains an invalid address
  • -
    source

    pub fn pci_map_bar_mem( +

    source

    pub fn pci_map_bar_mem( &self, bar_index: usize ) -> Result<MappedPages, &'static str>

    Maps device memory specified by a Base Address Register.

    @@ -81,13 +83,17 @@
    Arguments
    • bar_index: index of the Base Address Register to use
    -
    source

    pub fn pci_get_interrupt_info( +

    source

    pub fn pci_get_interrupt_info( &self ) -> Result<(Option<u8>, Option<InterruptPin>), &'static str>

    Reads and returns this PCI device’s interrupt line and interrupt pin registers.

    Returns an error if this PCI device’s interrupt pin value is invalid (greater than 4).

    -

    Methods from Deref<Target = PciLocation>§

    source

    pub fn bus(&self) -> u8

    source

    pub fn slot(&self) -> u8

    source

    pub fn function(&self) -> u8

    source

    pub fn pci_set_command_bus_master_bit(&self)

    Sets the PCI device’s bit 3 in the command portion, which is apparently needed to activate DMA (??)

    -
    source

    pub fn pci_set_interrupt_disable_bit(&self)

    Sets the PCI device’s command bit 10 to disable legacy interrupts

    -

    Trait Implementations§

    source§

    impl Debug for PciDevice

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for PciDevice

    §

    type Target = PciLocation

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &PciLocation

    Dereferences the value.
    source§

    impl DerefMut for PciDevice

    source§

    fn deref_mut(&mut self) -> &mut PciLocation

    Mutably dereferences the value.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    source

    pub fn pci_enable_interrupts(&self, enable: bool)

    Enables/Disables legacy (INTx) interrupts for this device

    +
    source

    pub fn pci_get_interrupt_status(&self, check_enabled: bool) -> bool

    Reads and returns this PCI device’s interrupt status flag.

    +
    source

    pub fn set_interrupt_waker(&'static self, waker: Waker) -> Option<Waker>

    Sets a task waker to be used when this device triggers an interrupt

    +

    Returns the previous interrupt waker for this device, if there was one.

    +

    Methods from Deref<Target = PciLocation>§

    source

    pub fn bus(&self) -> u8

    source

    pub fn slot(&self) -> u8

    source

    pub fn function(&self) -> u8

    source

    pub fn pci_set_command_bus_master_bit(&self)

    Sets the PCI device’s bit 3 in the command portion, which is apparently needed to activate DMA (??)

    +
    source

    pub fn pci_set_interrupt_disable_bit(&self, bit: bool)

    Sets the PCI device’s command bit 10 to disable legacy interrupts

    +

    Trait Implementations§

    source§

    impl Debug for PciDevice

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for PciDevice

    §

    type Target = PciLocation

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &PciLocation

    Dereferences the value.
    source§

    impl DerefMut for PciDevice

    source§

    fn deref_mut(&mut self) -> &mut PciLocation

    Mutably dereferences the value.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/pci/struct.PciLocation.html b/doc/pci/struct.PciLocation.html index 0eb5f5a355..066a42e5d3 100644 --- a/doc/pci/struct.PciLocation.html +++ b/doc/pci/struct.PciLocation.html @@ -1,12 +1,12 @@ -PciLocation in pci - Rust

    Struct pci::PciLocation

    source ·
    pub struct PciLocation { /* private fields */ }
    Expand description

    The bus, slot, and function number of a given PCI device. +PciLocation in pci - Rust

    Struct pci::PciLocation

    source ·
    pub struct PciLocation { /* private fields */ }
    Expand description

    The bus, slot, and function number of a given PCI device. This offers methods for reading and writing the PCI config space.

    -

    Implementations§

    source§

    impl PciLocation

    source

    pub fn bus(&self) -> u8

    source

    pub fn slot(&self) -> u8

    source

    pub fn function(&self) -> u8

    source

    pub fn pci_set_command_bus_master_bit(&self)

    Sets the PCI device’s bit 3 in the command portion, which is apparently needed to activate DMA (??)

    -
    source

    pub fn pci_set_interrupt_disable_bit(&self)

    Sets the PCI device’s command bit 10 to disable legacy interrupts

    -

    Trait Implementations§

    source§

    impl Clone for PciLocation

    source§

    fn clone(&self) -> PciLocation

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PciLocation

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl Display for PciLocation

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl Hash for PciLocation

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where +

    Implementations§

    source§

    impl PciLocation

    source

    pub fn bus(&self) -> u8

    source

    pub fn slot(&self) -> u8

    source

    pub fn function(&self) -> u8

    source

    pub fn pci_set_command_bus_master_bit(&self)

    Sets the PCI device’s bit 3 in the command portion, which is apparently needed to activate DMA (??)

    +
    source

    pub fn pci_set_interrupt_disable_bit(&self, bit: bool)

    Sets the PCI device’s command bit 10 to disable legacy interrupts

    +

    Trait Implementations§

    source§

    impl Clone for PciLocation

    source§

    fn clone(&self) -> PciLocation

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PciLocation

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl Display for PciLocation

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl Hash for PciLocation

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<PciLocation> for PciLocation

    source§

    fn eq(&self, other: &PciLocation) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more

    source§

    impl PartialEq<PciLocation> for PciLocation

    source§

    fn eq(&self, other: &PciLocation) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for PciLocation

    source§

    impl Eq for PciLocation

    source§

    impl StructuralEq for PciLocation

    source§

    impl StructuralPartialEq for PciLocation

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +sufficient, and should not be overridden without very good reason.

    source§

    impl Copy for PciLocation

    source§

    impl Eq for PciLocation

    source§

    impl StructuralEq for PciLocation

    source§

    impl StructuralPartialEq for PciLocation

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere diff --git a/doc/ps2/enum.DeviceToHostResponse.html b/doc/ps2/enum.DeviceToHostResponse.html index 2feacfe40f..1d29155a4c 100644 --- a/doc/ps2/enum.DeviceToHostResponse.html +++ b/doc/ps2/enum.DeviceToHostResponse.html @@ -1,4 +1,4 @@ -DeviceToHostResponse in ps2 - Rust
    #[repr(u8)]
    pub enum DeviceToHostResponse { +DeviceToHostResponse in ps2 - Rust
    #[repr(u8)]
    pub enum DeviceToHostResponse { KeyDetectionErrorOrInternalBufferOverrun1 = 0, SelfTestPassed = 170, ResponseToEcho = 238, @@ -10,7 +10,7 @@ }

    Variants§

    §

    KeyDetectionErrorOrInternalBufferOverrun1 = 0

    §

    SelfTestPassed = 170

    sent after “0xFF (reset)” command or keyboard power up

    §

    ResponseToEcho = 238

    §

    Acknowledge = 250

    §

    SelfTestFailed1 = 252

    sent after “0xFF (reset)” command or keyboard power up

    §

    SelfTestFailed2 = 253

    sent after “0xFF (reset)” command or keyboard power up

    -
    §

    ResendCommand = 254

    §

    KeyDetectionErrorOrInternalBufferOverrun2 = 255

    Trait Implementations§

    source§

    impl Debug for DeviceToHostResponse

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl TryFrom<u8> for DeviceToHostResponse

    §

    type Error = TryFromPrimitiveError<DeviceToHostResponse>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for DeviceToHostResponse

    §

    ResendCommand = 254

    §

    KeyDetectionErrorOrInternalBufferOverrun2 = 255

    Trait Implementations§

    source§

    impl Debug for DeviceToHostResponse

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl TryFrom<u8> for DeviceToHostResponse

    §

    type Error = TryFromPrimitiveError<DeviceToHostResponse>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for DeviceToHostResponse

    §

    type Primitive = u8

    source§

    const NAME: &'static str = _

    source§

    fn try_from_primitive( number: Self::Primitive ) -> Result<Self, TryFromPrimitiveError<Self>>

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/doc/ps2/enum.HostToControllerCommand.html b/doc/ps2/enum.HostToControllerCommand.html index da83d419ee..a97d4a5dfd 100644 --- a/doc/ps2/enum.HostToControllerCommand.html +++ b/doc/ps2/enum.HostToControllerCommand.html @@ -1,4 +1,4 @@ -HostToControllerCommand in ps2 - Rust
    pub enum HostToControllerCommand {
    +HostToControllerCommand in ps2 - Rust
    pub enum HostToControllerCommand {
         ReadFromInternalRAMByte0 = 32,
         WriteToInternalRAMByte0 = 96,
         DisablePort2 = 167,
    diff --git a/doc/ps2/enum.HostToKeyboardCommand.html b/doc/ps2/enum.HostToKeyboardCommand.html
    index a1b4846cf5..dff7af9e3b 100644
    --- a/doc/ps2/enum.HostToKeyboardCommand.html
    +++ b/doc/ps2/enum.HostToKeyboardCommand.html
    @@ -1,4 +1,4 @@
    -HostToKeyboardCommand in ps2 - Rust
    pub enum HostToKeyboardCommand {
    +HostToKeyboardCommand in ps2 - Rust
    pub enum HostToKeyboardCommand {
         SetLEDStatus = 237,
         ScancodeSet = 240,
         IdentifyKeyboard = 242,
    @@ -9,7 +9,7 @@
         ResetAndStartSelfTest = 255,
     }

    Variants§

    §

    SetLEDStatus = 237

    §

    ScancodeSet = 240

    §

    IdentifyKeyboard = 242

    §

    SetRepeatRateAndDelay = 243

    also called typematic

    §

    EnableScanning = 244

    §

    DisableScanning = 245

    might also restore default parameters

    -
    §

    ResendByte = 254

    §

    ResetAndStartSelfTest = 255

    Trait Implementations§

    source§

    impl Clone for HostToKeyboardCommand

    source§

    fn clone(&self) -> HostToKeyboardCommand

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToKeyboardCommand

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    §

    ResendByte = 254

    §

    ResetAndStartSelfTest = 255

    Trait Implementations§

    source§

    impl Clone for HostToKeyboardCommand

    source§

    fn clone(&self) -> HostToKeyboardCommand

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToKeyboardCommand

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.HostToKeyboardCommandOrData.html b/doc/ps2/enum.HostToKeyboardCommandOrData.html index ce2a1a69f1..be15012a46 100644 --- a/doc/ps2/enum.HostToKeyboardCommandOrData.html +++ b/doc/ps2/enum.HostToKeyboardCommandOrData.html @@ -1,8 +1,8 @@ -HostToKeyboardCommandOrData in ps2 - Rust
    pub enum HostToKeyboardCommandOrData {
    +HostToKeyboardCommandOrData in ps2 - Rust
    pub enum HostToKeyboardCommandOrData {
         KeyboardCommand(HostToKeyboardCommand),
         LEDState(LEDState),
         ScancodeSet(ScancodeSet),
    -}

    Variants§

    §

    KeyboardCommand(HostToKeyboardCommand)

    §

    LEDState(LEDState)

    §

    ScancodeSet(ScancodeSet)

    Trait Implementations§

    source§

    impl Clone for HostToKeyboardCommandOrData

    source§

    fn clone(&self) -> HostToKeyboardCommandOrData

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToKeyboardCommandOrData

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +}

    Variants§

    §

    KeyboardCommand(HostToKeyboardCommand)

    §

    LEDState(LEDState)

    §

    ScancodeSet(ScancodeSet)

    Trait Implementations§

    source§

    impl Clone for HostToKeyboardCommandOrData

    source§

    fn clone(&self) -> HostToKeyboardCommandOrData

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToKeyboardCommandOrData

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.HostToMouseCommand.html b/doc/ps2/enum.HostToMouseCommand.html index 249d776736..f0a7ca1660 100644 --- a/doc/ps2/enum.HostToMouseCommand.html +++ b/doc/ps2/enum.HostToMouseCommand.html @@ -1,4 +1,4 @@ -HostToMouseCommand in ps2 - Rust
    pub enum HostToMouseCommand {
    +HostToMouseCommand in ps2 - Rust
    pub enum HostToMouseCommand {
     
    Show 15 variants SetScaling = 230, SetResolution = 232, StatusRequest = 233, @@ -16,7 +16,7 @@ Reset = 255,
    }

    Variants§

    §

    SetScaling = 230

    either to 1 or 2

    §

    SetResolution = 232

    §

    StatusRequest = 233

    §

    SetStreamMode = 234

    §

    ReadData = 235

    §

    ResetWrapMode = 236

    §

    SetWrapMode = 238

    §

    SetRemoteMode = 240

    §

    GetDeviceID = 242

    §

    SampleRate = 243

    §

    EnableDataReporting = 244

    §

    DisableDataReporting = 245

    §

    SetDefaults = 246

    §

    ResendByte = 254

    §

    Reset = 255

    Trait Implementations§

    source§

    impl Clone for HostToMouseCommand

    source§

    fn clone(&self) -> HostToMouseCommand

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToMouseCommand

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    §

    StatusRequest = 233

    §

    SetStreamMode = 234

    §

    ReadData = 235

    §

    ResetWrapMode = 236

    §

    SetWrapMode = 238

    §

    SetRemoteMode = 240

    §

    GetDeviceID = 242

    §

    SampleRate = 243

    §

    EnableDataReporting = 244

    §

    DisableDataReporting = 245

    §

    SetDefaults = 246

    §

    ResendByte = 254

    §

    Reset = 255

    Trait Implementations§

    source§

    impl Clone for HostToMouseCommand

    source§

    fn clone(&self) -> HostToMouseCommand

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToMouseCommand

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.HostToMouseCommandOrData.html b/doc/ps2/enum.HostToMouseCommandOrData.html index af8d3077fd..7768ede2d2 100644 --- a/doc/ps2/enum.HostToMouseCommandOrData.html +++ b/doc/ps2/enum.HostToMouseCommandOrData.html @@ -1,8 +1,8 @@ -HostToMouseCommandOrData in ps2 - Rust
    pub enum HostToMouseCommandOrData {
    +HostToMouseCommandOrData in ps2 - Rust
    pub enum HostToMouseCommandOrData {
         MouseCommand(HostToMouseCommand),
         SampleRate(MouseSampleRate),
         MouseResolution(MouseResolution),
    -}

    Variants§

    §

    MouseCommand(HostToMouseCommand)

    §

    SampleRate(MouseSampleRate)

    §

    MouseResolution(MouseResolution)

    Trait Implementations§

    source§

    impl Clone for HostToMouseCommandOrData

    source§

    fn clone(&self) -> HostToMouseCommandOrData

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToMouseCommandOrData

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +}

    Variants§

    §

    MouseCommand(HostToMouseCommand)

    §

    SampleRate(MouseSampleRate)

    §

    MouseResolution(MouseResolution)

    Trait Implementations§

    source§

    impl Clone for HostToMouseCommandOrData

    source§

    fn clone(&self) -> HostToMouseCommandOrData

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HostToMouseCommandOrData

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.KeyboardType.html b/doc/ps2/enum.KeyboardType.html index 9f616e0ed1..7ad72c8a87 100644 --- a/doc/ps2/enum.KeyboardType.html +++ b/doc/ps2/enum.KeyboardType.html @@ -1,4 +1,4 @@ -KeyboardType in ps2 - Rust

    Variants§

    §

    Zero = 0

    the mouse has no scroll-movement

    §

    Three = 3

    the mouse has scroll-movement

    §

    Four = 4

    the mouse has scroll-movement, fourth and fifth buttons

    -

    Trait Implementations§

    source§

    impl Debug for MouseId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<MouseId> for MouseId

    source§

    fn eq(&self, other: &MouseId) -> bool

    This method tests for self and other values to be equal, and is used +

    Trait Implementations§

    source§

    impl Debug for MouseId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<MouseId> for MouseId

    source§

    fn eq(&self, other: &MouseId) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl TryFrom<u8> for MouseId

    §

    type Error = TryFromPrimitiveError<MouseId>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for MouseId

    §

    type Primitive = u8

    source§

    const NAME: &'static str = _

    source§

    fn try_from_primitive( +sufficient, and should not be overridden without very good reason.

    source§

    impl TryFrom<u8> for MouseId

    §

    type Error = TryFromPrimitiveError<MouseId>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for MouseId

    §

    type Primitive = u8

    source§

    const NAME: &'static str = _

    source§

    fn try_from_primitive( number: Self::Primitive -) -> Result<Self, TryFromPrimitiveError<Self>>

    source§

    impl StructuralPartialEq for MouseId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +) -> Result<Self, TryFromPrimitiveError<Self>>

    source§

    impl StructuralPartialEq for MouseId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.MousePacket.html b/doc/ps2/enum.MousePacket.html index 332236fbe1..a18d48711b 100644 --- a/doc/ps2/enum.MousePacket.html +++ b/doc/ps2/enum.MousePacket.html @@ -1,8 +1,8 @@ -MousePacket in ps2 - Rust

    Enum ps2::MousePacket

    source ·
    pub enum MousePacket {
    +MousePacket in ps2 - Rust

    Enum ps2::MousePacket

    source ·
    pub enum MousePacket {
         Zero(MousePacketGeneric),
         Three(MousePacket3),
         Four(MousePacket4),
    -}

    Variants§

    Implementations§

    source§

    impl MousePacket

    source

    pub fn button_left(&self) -> bool

    source

    pub fn button_right(&self) -> bool

    source

    pub fn button_middle(&self) -> bool

    source

    pub fn always_one(&self) -> u8

    source

    pub fn x_movement(&self) -> i16

    source

    pub fn y_movement(&self) -> i16

    source

    pub fn scroll_movement(&self) -> i8

    source

    pub fn button_4(&self) -> bool

    source

    pub fn button_5(&self) -> bool

    Trait Implementations§

    source§

    impl Debug for MousePacket

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +}

    Variants§

    Implementations§

    source§

    impl MousePacket

    source

    pub fn button_left(&self) -> bool

    source

    pub fn button_right(&self) -> bool

    source

    pub fn button_middle(&self) -> bool

    source

    pub fn always_one(&self) -> u8

    source

    pub fn x_movement(&self) -> i16

    source

    pub fn y_movement(&self) -> i16

    source

    pub fn scroll_movement(&self) -> i8

    source

    pub fn button_4(&self) -> bool

    source

    pub fn button_5(&self) -> bool

    Trait Implementations§

    source§

    impl Debug for MousePacket

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.MouseResolution.html b/doc/ps2/enum.MouseResolution.html index 393cc0b1ac..774de37110 100644 --- a/doc/ps2/enum.MouseResolution.html +++ b/doc/ps2/enum.MouseResolution.html @@ -1,9 +1,9 @@ -MouseResolution in ps2 - Rust

    Enum ps2::MouseResolution

    source ·
    pub enum MouseResolution {
    +MouseResolution in ps2 - Rust

    Enum ps2::MouseResolution

    source ·
    pub enum MouseResolution {
         Count1PerMm = 0,
         Count2PerMm = 1,
         Count4PerMm = 2,
         Count8PerMm = 3,
    -}

    Variants§

    §

    Count1PerMm = 0

    §

    Count2PerMm = 1

    §

    Count4PerMm = 2

    §

    Count8PerMm = 3

    Trait Implementations§

    source§

    impl Clone for MouseResolution

    source§

    fn clone(&self) -> MouseResolution

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MouseResolution

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +}

    Variants§

    §

    Count1PerMm = 0

    §

    Count2PerMm = 1

    §

    Count4PerMm = 2

    §

    Count8PerMm = 3

    Trait Implementations§

    source§

    impl Clone for MouseResolution

    source§

    fn clone(&self) -> MouseResolution

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MouseResolution

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.MouseSampleRate.html b/doc/ps2/enum.MouseSampleRate.html index d8699e8da4..0e6d9e8ebe 100644 --- a/doc/ps2/enum.MouseSampleRate.html +++ b/doc/ps2/enum.MouseSampleRate.html @@ -1,4 +1,4 @@ -MouseSampleRate in ps2 - Rust

    Enum ps2::MouseSampleRate

    source ·
    pub enum MouseSampleRate {
    +MouseSampleRate in ps2 - Rust

    Enum ps2::MouseSampleRate

    source ·
    pub enum MouseSampleRate {
         _10 = 10,
         _20 = 20,
         _40 = 40,
    @@ -6,7 +6,7 @@
         _80 = 80,
         _100 = 100,
         _200 = 200,
    -}

    Variants§

    §

    _10 = 10

    §

    _20 = 20

    §

    _40 = 40

    §

    _60 = 60

    §

    _80 = 80

    §

    _100 = 100

    §

    _200 = 200

    Trait Implementations§

    source§

    impl Clone for MouseSampleRate

    source§

    fn clone(&self) -> MouseSampleRate

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MouseSampleRate

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +}

    Variants§

    §

    _10 = 10

    §

    _20 = 20

    §

    _40 = 40

    §

    _60 = 60

    §

    _80 = 80

    §

    _100 = 100

    §

    _200 = 200

    Trait Implementations§

    source§

    impl Clone for MouseSampleRate

    source§

    fn clone(&self) -> MouseSampleRate

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MouseSampleRate

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/enum.PortTestResult.html b/doc/ps2/enum.PortTestResult.html index 9028e89c93..7cd71f884c 100644 --- a/doc/ps2/enum.PortTestResult.html +++ b/doc/ps2/enum.PortTestResult.html @@ -1,10 +1,10 @@ -PortTestResult in ps2 - Rust

    Enum ps2::PortTestResult

    source ·
    #[repr(u8)]
    pub enum PortTestResult { +PortTestResult in ps2 - Rust

    Enum ps2::PortTestResult

    source ·
    #[repr(u8)]
    pub enum PortTestResult { Passed = 0, ClockLineStuckLow = 1, ClockLineStuckHigh = 2, DataLineStuckLow = 3, DataLineStuckHigh = 4, -}

    Variants§

    §

    Passed = 0

    §

    ClockLineStuckLow = 1

    §

    ClockLineStuckHigh = 2

    §

    DataLineStuckLow = 3

    §

    DataLineStuckHigh = 4

    Trait Implementations§

    source§

    impl TryFrom<u8> for PortTestResult

    §

    type Error = TryFromPrimitiveError<PortTestResult>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for PortTestResult

    §

    type Primitive = u8

    source§

    const NAME: &'static str = _

    source§

    fn try_from_primitive( +}

    Variants§

    §

    Passed = 0

    §

    ClockLineStuckLow = 1

    §

    ClockLineStuckHigh = 2

    §

    DataLineStuckLow = 3

    §

    DataLineStuckHigh = 4

    Trait Implementations§

    source§

    impl TryFrom<u8> for PortTestResult

    §

    type Error = TryFromPrimitiveError<PortTestResult>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for PortTestResult

    §

    type Primitive = u8

    source§

    const NAME: &'static str = _

    source§

    fn try_from_primitive( number: Self::Primitive ) -> Result<Self, TryFromPrimitiveError<Self>>

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/doc/ps2/enum.ScancodeSet.html b/doc/ps2/enum.ScancodeSet.html index 8308e4df3a..fc02739e2e 100644 --- a/doc/ps2/enum.ScancodeSet.html +++ b/doc/ps2/enum.ScancodeSet.html @@ -1,13 +1,13 @@ -ScancodeSet in ps2 - Rust

    Enum ps2::ScancodeSet

    source ·
    #[repr(u8)]
    pub enum ScancodeSet { +ScancodeSet in ps2 - Rust

    Enum ps2::ScancodeSet

    source ·
    #[repr(u8)]
    pub enum ScancodeSet { Get = 0, Set1 = 1, Set2 = 2, Set3 = 3, -}

    Variants§

    §

    Get = 0

    §

    Set1 = 1

    §

    Set2 = 2

    §

    Set3 = 3

    Trait Implementations§

    source§

    impl Clone for ScancodeSet

    source§

    fn clone(&self) -> ScancodeSet

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ScancodeSet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<ScancodeSet> for ScancodeSet

    source§

    fn eq(&self, other: &ScancodeSet) -> bool

    This method tests for self and other values to be equal, and is used +}

    Variants§

    §

    Get = 0

    §

    Set1 = 1

    §

    Set2 = 2

    §

    Set3 = 3

    Trait Implementations§

    source§

    impl Clone for ScancodeSet

    source§

    fn clone(&self) -> ScancodeSet

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ScancodeSet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<ScancodeSet> for ScancodeSet

    source§

    fn eq(&self, other: &ScancodeSet) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl TryFrom<u8> for ScancodeSet

    §

    type Error = TryFromPrimitiveError<ScancodeSet>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for ScancodeSet

    §

    type Primitive = u8

    source§

    const NAME: &'static str = _

    source§

    fn try_from_primitive( +sufficient, and should not be overridden without very good reason.

    source§

    impl TryFrom<u8> for ScancodeSet

    §

    type Error = TryFromPrimitiveError<ScancodeSet>

    The type returned in the event of a conversion error.
    source§

    fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

    Performs the conversion.
    source§

    impl TryFromPrimitive for ScancodeSet

    §

    type Primitive = u8

    source§

    const NAME: &'static str = _

    source§

    fn try_from_primitive( number: Self::Primitive -) -> Result<Self, TryFromPrimitiveError<Self>>

    source§

    impl Copy for ScancodeSet

    source§

    impl StructuralPartialEq for ScancodeSet

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +) -> Result<Self, TryFromPrimitiveError<Self>>

    source§

    impl Copy for ScancodeSet

    source§

    impl StructuralPartialEq for ScancodeSet

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/fn.init.html b/doc/ps2/fn.init.html index 37ab8003b7..471cb44049 100644 --- a/doc/ps2/fn.init.html +++ b/doc/ps2/fn.init.html @@ -1,3 +1,3 @@ -init in ps2 - Rust

    Function ps2::init

    source ·
    pub fn init() -> Result<&'static PS2Controller, &'static str>
    Expand description

    Initializes the PS/2 controller, and the first and second PS/2 ports (if they exist).

    +init in ps2 - Rust

    Function ps2::init

    source ·
    pub fn init() -> Result<&'static PS2Controller, &'static str>
    Expand description

    Initializes the PS/2 controller, and the first and second PS/2 ports (if they exist).

    We roughly follow the procedure from the OS dev wiki.

    \ No newline at end of file diff --git a/doc/ps2/index.html b/doc/ps2/index.html index d266d701c6..808123f849 100644 --- a/doc/ps2/index.html +++ b/doc/ps2/index.html @@ -1,5 +1,5 @@ ps2 - Rust

    Crate ps2

    source ·
    Expand description

    Driver for the PS/2 interface, which supports legacy keyboard and mouse devices.

    +
  • All Items
  • Crate ps2

    source ·
    Expand description

    Driver for the PS/2 interface, which supports legacy keyboard and mouse devices.

    The init() function sets up the single system-wide PS2Controller, which can then be used to obtain a reference to a PS2Keyboard or PS2Mouse.

    Structs

    source

    pub fn set_port1_interrupt_enabled( &mut self, new_val: <bool as Specifier>::InOut )

    Sets the value of port1_interrupt_enabled to the given value.

    #Panics

    If the given value is out of bounds for port1_interrupt_enabled. interrupt on ControllerToHostStatus output_buffer_full

    -
    source

    pub fn set_port1_interrupt_enabled_checked( +

    source

    pub fn set_port1_interrupt_enabled_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of port1_interrupt_enabled to the given value.

    #Errors

    If the given value is out of bounds for port1_interrupt_enabled. interrupt on ControllerToHostStatus output_buffer_full

    -
    source

    pub fn port2_interrupt_enabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port2_interrupt_enabled. +

    source

    pub fn port2_interrupt_enabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port2_interrupt_enabled. interrupt on ControllerToHostStatus mouse_output_buffer_full

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn port2_interrupt_enabled_or_err( +

    source

    pub fn port2_interrupt_enabled_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of port2_interrupt_enabled.

    #Errors

    If the returned value contains an invalid bit pattern for port2_interrupt_enabled. interrupt on ControllerToHostStatus mouse_output_buffer_full

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn with_port2_interrupt_enabled( +

    source

    pub fn with_port2_interrupt_enabled( self, new_val: <bool as Specifier>::InOut ) -> Self

    Returns a copy of the bitfield with the value of port2_interrupt_enabled set to the given value.

    @@ -62,7 +62,7 @@
    Layout

    If the given value is out of bounds for port2_interrupt_enabled. interrupt on ControllerToHostStatus mouse_output_buffer_full

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn with_port2_interrupt_enabled_checked( +

    source

    pub fn with_port2_interrupt_enabled_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of port2_interrupt_enabled set to the given value.

    @@ -70,7 +70,7 @@
    Layout

    If the given value is out of bounds for port2_interrupt_enabled. interrupt on ControllerToHostStatus mouse_output_buffer_full

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn set_port2_interrupt_enabled( +

    source

    pub fn set_port2_interrupt_enabled( &mut self, new_val: <bool as Specifier>::InOut )

    Sets the value of port2_interrupt_enabled to the given value.

    @@ -78,7 +78,7 @@
    Layout

    If the given value is out of bounds for port2_interrupt_enabled. interrupt on ControllerToHostStatus mouse_output_buffer_full

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn set_port2_interrupt_enabled_checked( +

    source

    pub fn set_port2_interrupt_enabled_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of port2_interrupt_enabled to the given value.

    @@ -86,50 +86,50 @@
    Layout

    If the given value is out of bounds for port2_interrupt_enabled. interrupt on ControllerToHostStatus mouse_output_buffer_full

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn port1_clock_disabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port1_clock_disabled. +

    source

    pub fn port1_clock_disabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port1_clock_disabled. disables the keyboard

    -
    source

    pub fn port1_clock_disabled_or_err( +

    source

    pub fn port1_clock_disabled_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of port1_clock_disabled.

    #Errors

    If the returned value contains an invalid bit pattern for port1_clock_disabled. disables the keyboard

    -
    source

    pub fn with_port1_clock_disabled( +

    source

    pub fn with_port1_clock_disabled( self, new_val: <bool as Specifier>::InOut ) -> Self

    Returns a copy of the bitfield with the value of port1_clock_disabled set to the given value.

    #Panics

    If the given value is out of bounds for port1_clock_disabled. disables the keyboard

    -
    source

    pub fn with_port1_clock_disabled_checked( +

    source

    pub fn with_port1_clock_disabled_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of port1_clock_disabled set to the given value.

    #Errors

    If the given value is out of bounds for port1_clock_disabled. disables the keyboard

    -
    source

    pub fn set_port1_clock_disabled(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of port1_clock_disabled to the given value.

    +
    source

    pub fn set_port1_clock_disabled(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of port1_clock_disabled to the given value.

    #Panics

    If the given value is out of bounds for port1_clock_disabled. disables the keyboard

    -
    source

    pub fn set_port1_clock_disabled_checked( +

    source

    pub fn set_port1_clock_disabled_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of port1_clock_disabled to the given value.

    #Errors

    If the given value is out of bounds for port1_clock_disabled. disables the keyboard

    -
    source

    pub fn port2_clock_disabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port2_clock_disabled. +

    source

    pub fn port2_clock_disabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port2_clock_disabled. disables the auxilary device (mouse)

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn port2_clock_disabled_or_err( +

    source

    pub fn port2_clock_disabled_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of port2_clock_disabled.

    #Errors

    If the returned value contains an invalid bit pattern for port2_clock_disabled. disables the auxilary device (mouse)

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn with_port2_clock_disabled( +

    source

    pub fn with_port2_clock_disabled( self, new_val: <bool as Specifier>::InOut ) -> Self

    Returns a copy of the bitfield with the value of port2_clock_disabled set to the given value.

    @@ -137,7 +137,7 @@
    Layout

    If the given value is out of bounds for port2_clock_disabled. disables the auxilary device (mouse)

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn with_port2_clock_disabled_checked( +

    source

    pub fn with_port2_clock_disabled_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of port2_clock_disabled set to the given value.

    @@ -145,12 +145,12 @@
    Layout

    If the given value is out of bounds for port2_clock_disabled. disables the auxilary device (mouse)

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn set_port2_clock_disabled(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of port2_clock_disabled to the given value.

    +
    source

    pub fn set_port2_clock_disabled(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of port2_clock_disabled to the given value.

    #Panics

    If the given value is out of bounds for port2_clock_disabled. disables the auxilary device (mouse)

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn set_port2_clock_disabled_checked( +

    source

    pub fn set_port2_clock_disabled_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of port2_clock_disabled to the given value.

    @@ -158,43 +158,43 @@
    Layout

    If the given value is out of bounds for port2_clock_disabled. disables the auxilary device (mouse)

    Note: only if 2 PS/2 ports supported

    -
    source

    pub fn port1_scancode_translation_enabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port1_scancode_translation_enabled. +

    source

    pub fn port1_scancode_translation_enabled(&self) -> <bool as Specifier>::InOut

    Returns the value of port1_scancode_translation_enabled. whether IBM scancode translation is enabled (0=AT, 1=PC)

    -
    source

    pub fn port1_scancode_translation_enabled_or_err( +

    source

    pub fn port1_scancode_translation_enabled_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of port1_scancode_translation_enabled.

    #Errors

    If the returned value contains an invalid bit pattern for port1_scancode_translation_enabled. whether IBM scancode translation is enabled (0=AT, 1=PC)

    -
    source

    pub fn with_port1_scancode_translation_enabled( +

    source

    pub fn with_port1_scancode_translation_enabled( self, new_val: <bool as Specifier>::InOut ) -> Self

    Returns a copy of the bitfield with the value of port1_scancode_translation_enabled set to the given value.

    #Panics

    If the given value is out of bounds for port1_scancode_translation_enabled. whether IBM scancode translation is enabled (0=AT, 1=PC)

    -
    source

    pub fn with_port1_scancode_translation_enabled_checked( +

    source

    pub fn with_port1_scancode_translation_enabled_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of port1_scancode_translation_enabled set to the given value.

    #Errors

    If the given value is out of bounds for port1_scancode_translation_enabled. whether IBM scancode translation is enabled (0=AT, 1=PC)

    -
    source

    pub fn set_port1_scancode_translation_enabled( +

    source

    pub fn set_port1_scancode_translation_enabled( &mut self, new_val: <bool as Specifier>::InOut )

    Sets the value of port1_scancode_translation_enabled to the given value.

    #Panics

    If the given value is out of bounds for port1_scancode_translation_enabled. whether IBM scancode translation is enabled (0=AT, 1=PC)

    -
    source

    pub fn set_port1_scancode_translation_enabled_checked( +

    source

    pub fn set_port1_scancode_translation_enabled_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of port1_scancode_translation_enabled to the given value.

    #Errors

    If the given value is out of bounds for port1_scancode_translation_enabled. whether IBM scancode translation is enabled (0=AT, 1=PC)

    -

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for ControllerConfigurationByte

    §

    type CheckType = [(); 1]

    source§

    impl Clone for ControllerConfigurationByte

    source§

    fn clone(&self) -> ControllerConfigurationByte

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ControllerConfigurationByte

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for ControllerConfigurationByte

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for ControllerConfigurationByte

    §

    type CheckType = [(); 1]

    source§

    impl Clone for ControllerConfigurationByte

    source§

    fn clone(&self) -> ControllerConfigurationByte

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ControllerConfigurationByte

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for ControllerConfigurationByte

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/struct.ControllerToHostStatus.html b/doc/ps2/struct.ControllerToHostStatus.html index 66f3bbceb3..c6c2b13b5c 100644 --- a/doc/ps2/struct.ControllerToHostStatus.html +++ b/doc/ps2/struct.ControllerToHostStatus.html @@ -1,46 +1,46 @@ -ControllerToHostStatus in ps2 - Rust
    pub struct ControllerToHostStatus { /* private fields */ }

    Implementations§

    source§

    impl ControllerToHostStatus

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    -
    source§

    impl ControllerToHostStatus

    source

    pub const fn into_bytes(self) -> [u8; 1]

    Returns the underlying bits.

    +ControllerToHostStatus in ps2 - Rust
    pub struct ControllerToHostStatus { /* private fields */ }

    Implementations§

    source§

    impl ControllerToHostStatus

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    +
    source§

    impl ControllerToHostStatus

    source

    pub const fn into_bytes(self) -> [u8; 1]

    Returns the underlying bits.

    Layout

    The returned byte array is layed out in the same way as described here.

    -
    source

    pub const fn from_bytes(bytes: [u8; 1]) -> Self

    Converts the given bytes directly into the bitfield struct.

    -
    source§

    impl ControllerToHostStatus

    source

    pub fn mouse_output_buffer_full(&self) -> <bool as Specifier>::InOut

    Returns the value of mouse_output_buffer_full. +

    source

    pub const fn from_bytes(bytes: [u8; 1]) -> Self

    Converts the given bytes directly into the bitfield struct.

    +
    source§

    impl ControllerToHostStatus

    source

    pub fn mouse_output_buffer_full(&self) -> <bool as Specifier>::InOut

    Returns the value of mouse_output_buffer_full. Similar to output_buffer_full, except for mouse

    -
    source

    pub fn mouse_output_buffer_full_or_err( +

    source

    pub fn mouse_output_buffer_full_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of mouse_output_buffer_full.

    #Errors

    If the returned value contains an invalid bit pattern for mouse_output_buffer_full. Similar to output_buffer_full, except for mouse

    -
    source

    pub fn with_mouse_output_buffer_full( +

    source

    pub fn with_mouse_output_buffer_full( self, new_val: <bool as Specifier>::InOut ) -> Self

    Returns a copy of the bitfield with the value of mouse_output_buffer_full set to the given value.

    #Panics

    If the given value is out of bounds for mouse_output_buffer_full. Similar to output_buffer_full, except for mouse

    -
    source

    pub fn with_mouse_output_buffer_full_checked( +

    source

    pub fn with_mouse_output_buffer_full_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of mouse_output_buffer_full set to the given value.

    #Errors

    If the given value is out of bounds for mouse_output_buffer_full. Similar to output_buffer_full, except for mouse

    -
    source

    pub fn set_mouse_output_buffer_full( +

    source

    pub fn set_mouse_output_buffer_full( &mut self, new_val: <bool as Specifier>::InOut )

    Sets the value of mouse_output_buffer_full to the given value.

    #Panics

    If the given value is out of bounds for mouse_output_buffer_full. Similar to output_buffer_full, except for mouse

    -
    source

    pub fn set_mouse_output_buffer_full_checked( +

    source

    pub fn set_mouse_output_buffer_full_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of mouse_output_buffer_full to the given value.

    #Errors

    If the given value is out of bounds for mouse_output_buffer_full. Similar to output_buffer_full, except for mouse

    -

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for ControllerToHostStatus

    §

    type CheckType = [(); 1]

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for ControllerToHostStatus

    §

    type CheckType = [(); 1]

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/struct.LEDState.html b/doc/ps2/struct.LEDState.html index ffcea1f02d..2fcc40102e 100644 --- a/doc/ps2/struct.LEDState.html +++ b/doc/ps2/struct.LEDState.html @@ -1,82 +1,82 @@ -LEDState in ps2 - Rust

    Struct ps2::LEDState

    source ·
    pub struct LEDState { /* private fields */ }

    Implementations§

    source§

    impl LEDState

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    -
    source§

    impl LEDState

    source

    pub const fn into_bytes(self) -> [u8; 1]

    Returns the underlying bits.

    +LEDState in ps2 - Rust

    Struct ps2::LEDState

    source ·
    pub struct LEDState { /* private fields */ }

    Implementations§

    source§

    impl LEDState

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    +
    source§

    impl LEDState

    source

    pub const fn into_bytes(self) -> [u8; 1]

    Returns the underlying bits.

    Layout

    The returned byte array is layed out in the same way as described here.

    -
    source

    pub const fn from_bytes(bytes: [u8; 1]) -> Self

    Converts the given bytes directly into the bitfield struct.

    -
    source§

    impl LEDState

    source

    pub fn scroll_lock(&self) -> <bool as Specifier>::InOut

    Returns the value of scroll_lock.

    -
    source

    pub fn scroll_lock_or_err( +

    source

    pub const fn from_bytes(bytes: [u8; 1]) -> Self

    Converts the given bytes directly into the bitfield struct.

    +
    source§

    impl LEDState

    source

    pub fn scroll_lock(&self) -> <bool as Specifier>::InOut

    Returns the value of scroll_lock.

    +
    source

    pub fn scroll_lock_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of scroll_lock.

    #Errors

    If the returned value contains an invalid bit pattern for scroll_lock.

    -
    source

    pub fn with_scroll_lock(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of scroll_lock set to the given value.

    +
    source

    pub fn with_scroll_lock(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of scroll_lock set to the given value.

    #Panics

    If the given value is out of bounds for scroll_lock.

    -
    source

    pub fn with_scroll_lock_checked( +

    source

    pub fn with_scroll_lock_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of scroll_lock set to the given value.

    #Errors

    If the given value is out of bounds for scroll_lock.

    -
    source

    pub fn set_scroll_lock(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of scroll_lock to the given value.

    +
    source

    pub fn set_scroll_lock(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of scroll_lock to the given value.

    #Panics

    If the given value is out of bounds for scroll_lock.

    -
    source

    pub fn set_scroll_lock_checked( +

    source

    pub fn set_scroll_lock_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of scroll_lock to the given value.

    #Errors

    If the given value is out of bounds for scroll_lock.

    -
    source

    pub fn number_lock(&self) -> <bool as Specifier>::InOut

    Returns the value of number_lock.

    -
    source

    pub fn number_lock_or_err( +

    source

    pub fn number_lock(&self) -> <bool as Specifier>::InOut

    Returns the value of number_lock.

    +
    source

    pub fn number_lock_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of number_lock.

    #Errors

    If the returned value contains an invalid bit pattern for number_lock.

    -
    source

    pub fn with_number_lock(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of number_lock set to the given value.

    +
    source

    pub fn with_number_lock(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of number_lock set to the given value.

    #Panics

    If the given value is out of bounds for number_lock.

    -
    source

    pub fn with_number_lock_checked( +

    source

    pub fn with_number_lock_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of number_lock set to the given value.

    #Errors

    If the given value is out of bounds for number_lock.

    -
    source

    pub fn set_number_lock(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of number_lock to the given value.

    +
    source

    pub fn set_number_lock(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of number_lock to the given value.

    #Panics

    If the given value is out of bounds for number_lock.

    -
    source

    pub fn set_number_lock_checked( +

    source

    pub fn set_number_lock_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of number_lock to the given value.

    #Errors

    If the given value is out of bounds for number_lock.

    -
    source

    pub fn caps_lock(&self) -> <bool as Specifier>::InOut

    Returns the value of caps_lock.

    -
    source

    pub fn caps_lock_or_err( +

    source

    pub fn caps_lock(&self) -> <bool as Specifier>::InOut

    Returns the value of caps_lock.

    +
    source

    pub fn caps_lock_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of caps_lock.

    #Errors

    If the returned value contains an invalid bit pattern for caps_lock.

    -
    source

    pub fn with_caps_lock(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of caps_lock set to the given value.

    +
    source

    pub fn with_caps_lock(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of caps_lock set to the given value.

    #Panics

    If the given value is out of bounds for caps_lock.

    -
    source

    pub fn with_caps_lock_checked( +

    source

    pub fn with_caps_lock_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of caps_lock set to the given value.

    #Errors

    If the given value is out of bounds for caps_lock.

    -
    source

    pub fn set_caps_lock(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of caps_lock to the given value.

    +
    source

    pub fn set_caps_lock(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of caps_lock to the given value.

    #Panics

    If the given value is out of bounds for caps_lock.

    -
    source

    pub fn set_caps_lock_checked( +

    source

    pub fn set_caps_lock_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of caps_lock to the given value.

    #Errors

    If the given value is out of bounds for caps_lock.

    -

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for LEDState

    §

    type CheckType = [(); 1]

    source§

    impl Clone for LEDState

    source§

    fn clone(&self) -> LEDState

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LEDState

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for LEDState

    §

    type CheckType = [(); 1]

    source§

    impl Clone for LEDState

    source§

    fn clone(&self) -> LEDState

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LEDState

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/struct.MousePacket3.html b/doc/ps2/struct.MousePacket3.html index 35205740a7..5ad4f86e1f 100644 --- a/doc/ps2/struct.MousePacket3.html +++ b/doc/ps2/struct.MousePacket3.html @@ -1,11 +1,11 @@ -MousePacket3 in ps2 - Rust

    Struct ps2::MousePacket3

    source ·
    pub struct MousePacket3 { /* private fields */ }

    Implementations§

    source§

    impl MousePacket3

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    -
    source§

    impl MousePacket3

    source

    pub const fn into_bytes(self) -> [u8; 4]

    Returns the underlying bits.

    +MousePacket3 in ps2 - Rust

    Struct ps2::MousePacket3

    source ·
    pub struct MousePacket3 { /* private fields */ }

    Implementations§

    source§

    impl MousePacket3

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    +
    source§

    impl MousePacket3

    source

    pub const fn into_bytes(self) -> [u8; 4]

    Returns the underlying bits.

    Layout

    The returned byte array is layed out in the same way as described here.

    -
    source

    pub const fn from_bytes(bytes: [u8; 4]) -> Self

    Converts the given bytes directly into the bitfield struct.

    -
    source§

    impl MousePacket3

    source

    pub fn scroll_movement(&self) -> i8

    often called z_movement, renamed to disambiguate

    -

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for MousePacket3

    §

    type CheckType = [(); 1]

    source§

    impl Debug for MousePacket3

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    source

    pub const fn from_bytes(bytes: [u8; 4]) -> Self

    Converts the given bytes directly into the bitfield struct.

    +
    source§

    impl MousePacket3

    source

    pub fn scroll_movement(&self) -> i8

    often called z_movement, renamed to disambiguate

    +

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for MousePacket3

    §

    type CheckType = [(); 1]

    source§

    impl Debug for MousePacket3

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/struct.MousePacket4.html b/doc/ps2/struct.MousePacket4.html index fa9ee50e4b..838e3b2992 100644 --- a/doc/ps2/struct.MousePacket4.html +++ b/doc/ps2/struct.MousePacket4.html @@ -1,59 +1,59 @@ -MousePacket4 in ps2 - Rust

    Struct ps2::MousePacket4

    source ·
    pub struct MousePacket4 { /* private fields */ }

    Implementations§

    source§

    impl MousePacket4

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    -
    source§

    impl MousePacket4

    source

    pub const fn into_bytes(self) -> [u8; 4]

    Returns the underlying bits.

    +MousePacket4 in ps2 - Rust

    Struct ps2::MousePacket4

    source ·
    pub struct MousePacket4 { /* private fields */ }

    Implementations§

    source§

    impl MousePacket4

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    +
    source§

    impl MousePacket4

    source

    pub const fn into_bytes(self) -> [u8; 4]

    Returns the underlying bits.

    Layout

    The returned byte array is layed out in the same way as described here.

    -
    source

    pub const fn from_bytes(bytes: [u8; 4]) -> Self

    Converts the given bytes directly into the bitfield struct.

    -
    source§

    impl MousePacket4

    source

    pub fn button_4(&self) -> <bool as Specifier>::InOut

    Returns the value of button_4.

    -
    source

    pub fn button_4_or_err( +

    source

    pub const fn from_bytes(bytes: [u8; 4]) -> Self

    Converts the given bytes directly into the bitfield struct.

    +
    source§

    impl MousePacket4

    source

    pub fn button_4(&self) -> <bool as Specifier>::InOut

    Returns the value of button_4.

    +
    source

    pub fn button_4_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of button_4.

    #Errors

    If the returned value contains an invalid bit pattern for button_4.

    -
    source

    pub fn with_button_4(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_4 set to the given value.

    +
    source

    pub fn with_button_4(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_4 set to the given value.

    #Panics

    If the given value is out of bounds for button_4.

    -
    source

    pub fn with_button_4_checked( +

    source

    pub fn with_button_4_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of button_4 set to the given value.

    #Errors

    If the given value is out of bounds for button_4.

    -
    source

    pub fn set_button_4(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_4 to the given value.

    +
    source

    pub fn set_button_4(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_4 to the given value.

    #Panics

    If the given value is out of bounds for button_4.

    -
    source

    pub fn set_button_4_checked( +

    source

    pub fn set_button_4_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of button_4 to the given value.

    #Errors

    If the given value is out of bounds for button_4.

    -
    source

    pub fn button_5(&self) -> <bool as Specifier>::InOut

    Returns the value of button_5.

    -
    source

    pub fn button_5_or_err( +

    source

    pub fn button_5(&self) -> <bool as Specifier>::InOut

    Returns the value of button_5.

    +
    source

    pub fn button_5_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of button_5.

    #Errors

    If the returned value contains an invalid bit pattern for button_5.

    -
    source

    pub fn with_button_5(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_5 set to the given value.

    +
    source

    pub fn with_button_5(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_5 set to the given value.

    #Panics

    If the given value is out of bounds for button_5.

    -
    source

    pub fn with_button_5_checked( +

    source

    pub fn with_button_5_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of button_5 set to the given value.

    #Errors

    If the given value is out of bounds for button_5.

    -
    source

    pub fn set_button_5(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_5 to the given value.

    +
    source

    pub fn set_button_5(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_5 to the given value.

    #Panics

    If the given value is out of bounds for button_5.

    -
    source

    pub fn set_button_5_checked( +

    source

    pub fn set_button_5_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of button_5 to the given value.

    #Errors

    If the given value is out of bounds for button_5.

    -
    source§

    impl MousePacket4

    source

    pub fn scroll_movement(&self) -> i8

    often called z_movement, renamed to disambiguate

    -

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for MousePacket4

    §

    type CheckType = [(); 1]

    source§

    impl Debug for MousePacket4

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    source§

    impl MousePacket4

    source

    pub fn scroll_movement(&self) -> i8

    often called z_movement, renamed to disambiguate

    +

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for MousePacket4

    §

    type CheckType = [(); 1]

    source§

    impl Debug for MousePacket4

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/ps2/struct.MousePacketGeneric.html b/doc/ps2/struct.MousePacketGeneric.html index 251918a557..cc13f8e956 100644 --- a/doc/ps2/struct.MousePacketGeneric.html +++ b/doc/ps2/struct.MousePacketGeneric.html @@ -1,110 +1,110 @@ -MousePacketGeneric in ps2 - Rust

    Struct ps2::MousePacketGeneric

    source ·
    pub struct MousePacketGeneric { /* private fields */ }

    Implementations§

    source§

    impl MousePacketGeneric

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    -
    source§

    impl MousePacketGeneric

    source

    pub const fn into_bytes(self) -> [u8; 3]

    Returns the underlying bits.

    +MousePacketGeneric in ps2 - Rust

    Struct ps2::MousePacketGeneric

    source ·
    pub struct MousePacketGeneric { /* private fields */ }

    Implementations§

    source§

    impl MousePacketGeneric

    source

    pub const fn new() -> Self

    Returns an instance with zero initialized data.

    +
    source§

    impl MousePacketGeneric

    source

    pub const fn into_bytes(self) -> [u8; 3]

    Returns the underlying bits.

    Layout

    The returned byte array is layed out in the same way as described here.

    -
    source

    pub const fn from_bytes(bytes: [u8; 3]) -> Self

    Converts the given bytes directly into the bitfield struct.

    -
    source§

    impl MousePacketGeneric

    source

    pub fn button_left(&self) -> <bool as Specifier>::InOut

    Returns the value of button_left.

    -
    source

    pub fn button_left_or_err( +

    source

    pub const fn from_bytes(bytes: [u8; 3]) -> Self

    Converts the given bytes directly into the bitfield struct.

    +
    source§

    impl MousePacketGeneric

    source

    pub fn button_left(&self) -> <bool as Specifier>::InOut

    Returns the value of button_left.

    +
    source

    pub fn button_left_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of button_left.

    #Errors

    If the returned value contains an invalid bit pattern for button_left.

    -
    source

    pub fn with_button_left(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_left set to the given value.

    +
    source

    pub fn with_button_left(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_left set to the given value.

    #Panics

    If the given value is out of bounds for button_left.

    -
    source

    pub fn with_button_left_checked( +

    source

    pub fn with_button_left_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of button_left set to the given value.

    #Errors

    If the given value is out of bounds for button_left.

    -
    source

    pub fn set_button_left(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_left to the given value.

    +
    source

    pub fn set_button_left(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_left to the given value.

    #Panics

    If the given value is out of bounds for button_left.

    -
    source

    pub fn set_button_left_checked( +

    source

    pub fn set_button_left_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of button_left to the given value.

    #Errors

    If the given value is out of bounds for button_left.

    -
    source

    pub fn button_right(&self) -> <bool as Specifier>::InOut

    Returns the value of button_right.

    -
    source

    pub fn button_right_or_err( +

    source

    pub fn button_right(&self) -> <bool as Specifier>::InOut

    Returns the value of button_right.

    +
    source

    pub fn button_right_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of button_right.

    #Errors

    If the returned value contains an invalid bit pattern for button_right.

    -
    source

    pub fn with_button_right(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_right set to the given value.

    +
    source

    pub fn with_button_right(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_right set to the given value.

    #Panics

    If the given value is out of bounds for button_right.

    -
    source

    pub fn with_button_right_checked( +

    source

    pub fn with_button_right_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of button_right set to the given value.

    #Errors

    If the given value is out of bounds for button_right.

    -
    source

    pub fn set_button_right(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_right to the given value.

    +
    source

    pub fn set_button_right(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_right to the given value.

    #Panics

    If the given value is out of bounds for button_right.

    -
    source

    pub fn set_button_right_checked( +

    source

    pub fn set_button_right_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of button_right to the given value.

    #Errors

    If the given value is out of bounds for button_right.

    -
    source

    pub fn button_middle(&self) -> <bool as Specifier>::InOut

    Returns the value of button_middle.

    -
    source

    pub fn button_middle_or_err( +

    source

    pub fn button_middle(&self) -> <bool as Specifier>::InOut

    Returns the value of button_middle.

    +
    source

    pub fn button_middle_or_err( &self ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

    Returns the value of button_middle.

    #Errors

    If the returned value contains an invalid bit pattern for button_middle.

    -
    source

    pub fn with_button_middle(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_middle set to the given value.

    +
    source

    pub fn with_button_middle(self, new_val: <bool as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of button_middle set to the given value.

    #Panics

    If the given value is out of bounds for button_middle.

    -
    source

    pub fn with_button_middle_checked( +

    source

    pub fn with_button_middle_checked( self, new_val: <bool as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of button_middle set to the given value.

    #Errors

    If the given value is out of bounds for button_middle.

    -
    source

    pub fn set_button_middle(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_middle to the given value.

    +
    source

    pub fn set_button_middle(&mut self, new_val: <bool as Specifier>::InOut)

    Sets the value of button_middle to the given value.

    #Panics

    If the given value is out of bounds for button_middle.

    -
    source

    pub fn set_button_middle_checked( +

    source

    pub fn set_button_middle_checked( &mut self, new_val: <bool as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of button_middle to the given value.

    #Errors

    If the given value is out of bounds for button_middle.

    -
    source

    pub fn always_one(&self) -> <B1 as Specifier>::InOut

    Returns the value of always_one.

    -
    source

    pub fn always_one_or_err( +

    source

    pub fn always_one(&self) -> <B1 as Specifier>::InOut

    Returns the value of always_one.

    +
    source

    pub fn always_one_or_err( &self ) -> Result<<B1 as Specifier>::InOut, InvalidBitPattern<<B1 as Specifier>::Bytes>>

    Returns the value of always_one.

    #Errors

    If the returned value contains an invalid bit pattern for always_one.

    -
    source

    pub fn with_always_one(self, new_val: <B1 as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of always_one set to the given value.

    +
    source

    pub fn with_always_one(self, new_val: <B1 as Specifier>::InOut) -> Self

    Returns a copy of the bitfield with the value of always_one set to the given value.

    #Panics

    If the given value is out of bounds for always_one.

    -
    source

    pub fn with_always_one_checked( +

    source

    pub fn with_always_one_checked( self, new_val: <B1 as Specifier>::InOut ) -> Result<Self, OutOfBounds>

    Returns a copy of the bitfield with the value of always_one set to the given value.

    #Errors

    If the given value is out of bounds for always_one.

    -
    source

    pub fn set_always_one(&mut self, new_val: <B1 as Specifier>::InOut)

    Sets the value of always_one to the given value.

    +
    source

    pub fn set_always_one(&mut self, new_val: <B1 as Specifier>::InOut)

    Sets the value of always_one to the given value.

    #Panics

    If the given value is out of bounds for always_one.

    -
    source

    pub fn set_always_one_checked( +

    source

    pub fn set_always_one_checked( &mut self, new_val: <B1 as Specifier>::InOut ) -> Result<(), OutOfBounds>

    Sets the value of always_one to the given value.

    #Errors

    If the given value is out of bounds for always_one.

    -
    source§

    impl MousePacketGeneric

    source

    pub fn x_movement(&self) -> i16

    x_1st_to_8th_bit and x_9th_bit should not be accessed directly, because they’re part of one signed 9-bit number

    +
    source§

    impl MousePacketGeneric

    source

    pub fn x_movement(&self) -> i16

    x_1st_to_8th_bit and x_9th_bit should not be accessed directly, because they’re part of one signed 9-bit number

    Note: This handles overflow as well, although it might not happen on newer systems https://forum.osdev.org/viewtopic.php?f=1&t=31176

    -
    source

    pub fn y_movement(&self) -> i16

    y_1st_to_8th_bit and y_9th_bit should not be accessed directly, because they’re part of one signed 9-bit number

    +
    source

    pub fn y_movement(&self) -> i16

    y_1st_to_8th_bit and y_9th_bit should not be accessed directly, because they’re part of one signed 9-bit number

    Note: This handles overflow as well, although it might not happen on newer systems https://forum.osdev.org/viewtopic.php?f=1&t=31176

    -

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for MousePacketGeneric

    §

    type CheckType = [(); 1]

    source§

    impl CheckSpecifierHasAtMost128Bits for MousePacketGeneric

    §

    type CheckType = [(); 1]

    source§

    impl Debug for MousePacketGeneric

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Specifier for MousePacketGeneric

    source§

    const BITS: usize = 24usize

    The amount of bits used by the specifier.
    §

    type Bytes = <[(); 24] as SpecifierBytes>::Bytes

    The base type of the specifier. Read more
    §

    type InOut = MousePacketGeneric

    The interface type of the specifier. Read more
    source§

    fn into_bytes(value: Self::InOut) -> Result<Self::Bytes, OutOfBounds>

    Converts some bytes into the in-out type. Read more
    source§

    fn from_bytes( +

    Trait Implementations§

    source§

    impl CheckFillsUnalignedBits for MousePacketGeneric

    §

    type CheckType = [(); 1]

    source§

    impl CheckSpecifierHasAtMost128Bits for MousePacketGeneric

    §

    type CheckType = [(); 1]

    source§

    impl Debug for MousePacketGeneric

    source§

    fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Specifier for MousePacketGeneric

    source§

    const BITS: usize = 24usize

    The amount of bits used by the specifier.
    §

    type Bytes = <[(); 24] as SpecifierBytes>::Bytes

    The base type of the specifier. Read more
    §

    type InOut = MousePacketGeneric

    The interface type of the specifier. Read more
    source§

    fn into_bytes(value: Self::InOut) -> Result<Self::Bytes, OutOfBounds>

    Converts some bytes into the in-out type. Read more
    source§

    fn from_bytes( bytes: Self::Bytes ) -> Result<Self::InOut, InvalidBitPattern<Self::Bytes>>

    Converts the given bytes into the in-out type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/doc/ps2/struct.PS2Controller.html b/doc/ps2/struct.PS2Controller.html index 50bccd71f8..dc437c0e8a 100644 --- a/doc/ps2/struct.PS2Controller.html +++ b/doc/ps2/struct.PS2Controller.html @@ -1,18 +1,18 @@ -PS2Controller in ps2 - Rust

    Struct ps2::PS2Controller

    source ·
    pub struct PS2Controller { /* private fields */ }
    Expand description

    An initialized PS/2 controller that can be used to communicate with +PS2Controller in ps2 - Rust

    Struct ps2::PS2Controller

    source ·
    pub struct PS2Controller { /* private fields */ }
    Expand description

    An initialized PS/2 controller that can be used to communicate with legacy PS/2 keyboard and mouse devices.

    -

    Implementations§

    source§

    impl PS2Controller

    source

    pub fn keyboard_ref(&self) -> PS2Keyboard<'_>

    Returns a reference to the keyboard attached to this PS/2 controller.

    +

    Implementations§

    source§

    impl PS2Controller

    source

    pub fn keyboard_ref(&self) -> Option<PS2Keyboard<'_>>

    Returns a reference to the keyboard attached to this PS/2 controller.

    The keyboard only uses the data port.

    -
    source

    pub fn mouse_ref(&self) -> PS2Mouse<'_>

    Returns a reference to the mouse attached to this PS/2 controller.

    +
    source

    pub fn mouse_ref(&self) -> Option<PS2Mouse<'_>>

    Returns a reference to the mouse attached to this PS/2 controller.

    The mouse uses both the data port and the command/status port.

    -
    source

    pub fn write_command(&self, value: HostToControllerCommand)

    Writes a command to the PS/2 command port.

    +
    source

    pub fn write_command(&self, value: HostToControllerCommand)

    Writes a command to the PS/2 command port.

    Usage Note

    Devices attached to the controller should be disabled before writing a command that returns data, otherwise the output buffer may get overwritten.

    -
    source

    pub fn read_config(&self) -> ControllerConfigurationByte

    Reads and returns the current config value from the PS/2 controller.

    -
    source

    pub fn write_config(&self, value: ControllerConfigurationByte)

    Writes the given config value to the PS/2 controller.

    -
    source

    pub fn status_register(&self) -> ControllerToHostStatus

    Reads the PS/2 status port.

    -
    source

    pub fn flush_output_buffer(&self)

    Clean the data port output buffer, skipping the ControllerToHostStatus output_buffer_full check

    -
    source

    pub fn test(&self) -> Result<(), &'static str>

    source

    pub fn test_port1(&self) -> Result<(), &'static str>

    source

    pub fn test_port2(&self) -> Result<(), &'static str>

    source

    pub fn read_controller_test_result(&self) -> Result<(), &'static str>

    must only be called after writing the TestController command +

    source

    pub fn read_config(&self) -> ControllerConfigurationByte

    Reads and returns the current config value from the PS/2 controller.

    +
    source

    pub fn write_config(&self, value: ControllerConfigurationByte)

    Writes the given config value to the PS/2 controller.

    +
    source

    pub fn status_register(&self) -> ControllerToHostStatus

    Reads the PS/2 status port.

    +
    source

    pub fn flush_output_buffer(&self)

    Clean the data port output buffer, skipping the ControllerToHostStatus output_buffer_full check

    +
    source

    pub fn test(&self) -> Result<(), &'static str>

    source

    pub fn test_port1(&self) -> Result<(), &'static str>

    source

    pub fn test_port2(&self) -> Result<(), &'static str>

    source

    pub fn read_controller_test_result(&self) -> Result<(), &'static str>

    must only be called after writing the TestController command otherwise would read bogus data

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/doc/ps2/struct.PS2Keyboard.html b/doc/ps2/struct.PS2Keyboard.html index b54c71a9f2..03c496f5d3 100644 --- a/doc/ps2/struct.PS2Keyboard.html +++ b/doc/ps2/struct.PS2Keyboard.html @@ -1,8 +1,8 @@ -PS2Keyboard in ps2 - Rust

    Struct ps2::PS2Keyboard

    source ·
    pub struct PS2Keyboard<'c> { /* private fields */ }
    Expand description

    A reference to the PS/2 Keyboard connected to the PS/2 Controller.

    -

    Implementations§

    source§

    impl<'c> PS2Keyboard<'c>

    source

    pub fn new(controller: &'c PS2Controller) -> Self

    Create a new reference to the keyboard connected to the given PS2 controller.

    -
    source

    pub fn reset(&self) -> Result<(), &'static str>

    Reset the keyboard.

    -
    source

    pub fn set_keyboard_led(&self, value: LEDState) -> Result<(), &'static str>

    Set the status LEDs on the keyboard.

    -
    source

    pub fn set_keyboard_scancode_set( +PS2Keyboard in ps2 - Rust

    Struct ps2::PS2Keyboard

    source ·
    pub struct PS2Keyboard<'c> { /* private fields */ }
    Expand description

    A reference to the PS/2 Keyboard connected to the PS/2 Controller.

    +

    Implementations§

    source§

    impl<'c> PS2Keyboard<'c>

    source

    pub fn new(controller: &'c PS2Controller) -> Self

    Create a new reference to the keyboard connected to the given PS2 controller.

    +
    source

    pub fn reset(&self) -> Result<(), &'static str>

    Reset the keyboard.

    +
    source

    pub fn set_keyboard_led(&self, value: LEDState) -> Result<(), &'static str>

    Set the status LEDs on the keyboard.

    +
    source

    pub fn set_keyboard_scancode_set( &self, value: ScancodeSet ) -> Result<(), &'static str>

    Set the active scancode set currently used by the keyboard.

    @@ -10,12 +10,12 @@ else set Set1, if Get == 1, return else set Set3, if Get == 3, return else Err

    -
    source

    pub fn keyboard_detect(&self) -> Result<KeyboardType, &'static str>

    Detect the KeyboardType.

    +
    source

    pub fn keyboard_detect(&self) -> Result<KeyboardType, &'static str>

    Detect the KeyboardType.

    Note: On the identify command, KeyboardType::AncientATKeyboard usually returns no bytes at all, but PS2Controller::read_data always returns a byte. This means PS2Controller::read_data would presumably return 0x00 here, even though the value is already reserved for the device type “Standard PS/2 mouse”. As we only care about detecting keyboard types here, it should work.

    -
    source

    pub fn read_scancode(&self) -> u8

    Reads a raw scancode value from the PS/2 controller’s data port.

    +
    source

    pub fn read_scancode(&self) -> u8

    Reads a raw scancode value from the PS/2 controller’s data port.

    Auto Trait Implementations§

    §

    impl<'c> !RefUnwindSafe for PS2Keyboard<'c>

    §

    impl<'c> Send for PS2Keyboard<'c>

    §

    impl<'c> Sync for PS2Keyboard<'c>

    §

    impl<'c> Unpin for PS2Keyboard<'c>

    §

    impl<'c> !UnwindSafe for PS2Keyboard<'c>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere diff --git a/doc/ps2/struct.PS2Mouse.html b/doc/ps2/struct.PS2Mouse.html index 1a896d455e..4ca3ec5d08 100644 --- a/doc/ps2/struct.PS2Mouse.html +++ b/doc/ps2/struct.PS2Mouse.html @@ -1,10 +1,10 @@ -PS2Mouse in ps2 - Rust

    Struct ps2::PS2Mouse

    source ·
    pub struct PS2Mouse<'c> { /* private fields */ }
    Expand description

    A reference to the PS/2 Mouse connected to the PS/2 Controller.

    -

    Implementations§

    source§

    impl<'c> PS2Mouse<'c>

    source

    pub fn new(controller: &'c PS2Controller) -> Self

    Create a new reference to the mouse connected to the given PS2 controller.

    +PS2Mouse in ps2 - Rust

    Struct ps2::PS2Mouse

    source ·
    pub struct PS2Mouse<'c> { /* private fields */ }
    Expand description

    A reference to the PS/2 Mouse connected to the PS/2 Controller.

    +

    Implementations§

    source§

    impl<'c> PS2Mouse<'c>

    source

    pub fn new(controller: &'c PS2Controller) -> Self

    Create a new reference to the mouse connected to the given PS2 controller.

    The default mouse id of PS/2 is zero.

    -
    source

    pub fn reset(&self) -> Result<(), &'static str>

    Reset the mouse.

    -
    source

    pub fn set_mouse_id(&mut self) -> Result<(), &'static str>

    set self.id to the highest possible MouseId by magic sequence

    -
    source

    pub fn read_mouse_packet(&self) -> MousePacket

    read the correct MousePacket according to MouseId

    -
    source

    pub fn is_output_buffer_full(&self) -> bool

    Returns true if there is content in the PS/2 Mouse’s output buffer +

    source

    pub fn reset(&self) -> Result<(), &'static str>

    Reset the mouse.

    +
    source

    pub fn set_mouse_id(&mut self) -> Result<(), &'static str>

    set self.id to the highest possible MouseId by magic sequence

    +
    source

    pub fn read_mouse_packet(&self) -> MousePacket

    read the correct MousePacket according to MouseId

    +
    source

    pub fn is_output_buffer_full(&self) -> bool

    Returns true if there is content in the PS/2 Mouse’s output buffer that can be read from.

    This also checks the status register’s output_buffer_full bit. Otherwise mouse_id would read ACK (0xFA) instead of mouse id.

    diff --git a/doc/search-index.js b/doc/search-index.js index 2dfea3497f..1d251fabb0 100644 --- a/doc/search-index.js +++ b/doc/search-index.js @@ -7,7 +7,6 @@ var searchIndex = JSON.parse('{\ "apic":{"doc":"","t":"NRNNNDDNNNNNNNNNNHNENREEEEDENNNNNNNNNDNNNLMLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFMLLLMLLLMLLLLLLLLLLLLLLLLLLLLLLLFFFLLMFLMMMLLLLLLLLLLFLMMMMMMMMMMLLMLMLLLLMMMMMLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMM","n":["APIC","APIC_SPURIOUS_INTERRUPT_IRQ","All","AllButMe","AlreadyExisted","ApicId","ApicRegisters","By1","By128","By16","By2","By32","By4","By64","By8","ExtInt","Fixed","INTERRUPT_CHIP","Init","InterruptChip","InvalidNmiLint","LOCAL_APIC_LVT_IRQ","LapicDeliveryMode","LapicInitError","LapicIpiDestination","LapicTimerDivide","LocalApic","LvtLint","Me","MemoryMappingError","Nmi","NotAP","NotBSP","One","PIC","Pin0","Pin1","RegisterArray","Smi","UnexpectedApicID","X2APIC","apic_id","arbitration_priority","as_icr_value","bootstrap_cpu","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear_error","clear_pmi_mask","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cpu_count","current_cpu","destination_format","drop","enable_lvt_timer","eoi","eoi","eq","eq","error","error_status","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","get_irr","get_isr","get_lapics","get_my_apic","has_x2apic","hash","icr","in_service_registers","init","init","interrupt_command_high","interrupt_command_low","interrupt_request_registers","into","into","into","into","into","into","into","into","into","into","is_bootstrap_cpu","is_bootstrap_cpu","lapic_id","lapic_version","logical_destination","lvt_cmci","lvt_error","lvt_lint0","lvt_lint1","lvt_perf_monitor","lvt_thermal","lvt_timer","partial_cmp","processor_id","processor_priority","read_apic_id","remote_read","send_ipi","send_nmi_ipi","set_icr","set_nmi","spurious_interrupt_vector","task_priority","timer_current_count","timer_divide","timer_initial_count","to_owned","to_owned","to_owned","to_owned","to_string","trigger_mode_registers","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","version","actual","expected"],"q":[[0,"apic"],[196,"apic::LapicInitError"],[198,"core::option"],[199,"core::cmp"],[200,"core::fmt"],[201,"core::fmt"],[202,"atomic_linked_list::atomic_map"],[203,"core::hash"],[204,"memory::paging"],[205,"core::result"],[206,"alloc::string"],[207,"core::any"]],"d":["","The IRQ number reserved for spurious APIC interrupts (as …","Send IPI to all APICs, including myself","Send IPI to all APICs except for myself","The Local APIC already existed (BUG), given by the …","A unique identifier for a Local APIC, i.e., a CPU on …","A structure that offers access to APIC/xAPIC through its …","","","","","","","","","Causes the CPU to respond to the interrupts as if it …","Delivers the interrupt (as normal) to the IRQ specified in …","The interrupt chip that is currently configured on this …","Delivers an INIT request to the CPU; the vector field …","","Invalid NMI local interrupt pin value; given by the …","The IRQ number reserved for Local APIC timer interrupts in …","The delivery mode used when an interrupt is sent to a CPU …","The possible errors that can occur in LocalApic::init().","The possible destination shorthand values for IPI ICR.","The possible values for the Local APIC Timer Divide …","This structure represents a single Local APIC in the …","The Local APIC’s vector table local interrupt pins.","Send IPI to my own (the current) APIC ","An error occurred while mapping the Local APIC’s MMIO …","Delivers an NMI interrupt to the CPU; the vector field is …","This CPU wasn’t an AP, as expected.","This CPU wasn’t the BSP, as expected.","Send IPI to a specific APIC ","","","","","Delivers an SMI interrupt to the CPU; the vector field …","The actual APIC ID did not match the provided expected …","","Returns the ID of this Local APIC (fast).","","Convert the enum to a bitmask value to be used in the …","Returns the APIC ID of the bootstrap CPU (if known), which …","","","","","","","","","","","","","","","","","","","","","Clears/resets this lapic’s error register.","Clears the interrupt mask bit in the apic performance …","","","","","","","","","","Returns the number of CPUs (SMP cores) that exist and are …","Returns the ID of the currently executing CPU.","","","Enable (unmask) or disable (mask) the LVT timer interrupt …","Send an End Of Interrupt (EOI) signal to this local APIC, …","","","","Returns the value of this lapic’s error register.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the values of the 8 request registers for this …","Returns the values of the 8 in-service registers for this …","Returns a reference to the list of LocalApics, one per CPU …","Returns a reference to the LocalApic for the currently …","Returns true if the machine has support for x2apic","","Reads the current value of this lapic’s Interrupt …","","Determines whether this system contains an xapic or x2apic …","Creates and initializes a new LocalApic for the current …","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the currently executing CPU is the …","Returns true if this CPU core was the BootStrap Processor …","This Local APIC’s ID.","","","","","","","","","","","Returns the “processor ID” of this local APIC, which …","","Reads the hardware-provided ID of this Local APIC from its …","","Send an IPI to the cores specified by the given destination","Send a NMI IPI to the cores specified by the given …","Writes value to this lapic’s Interrupt Control Register.","Set the NonMaskableInterrupt redirect for this LocalApic.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the inner raw value read from the Local APIC ID …","Returns the version of this lapic.","",""],"i":[7,0,3,3,15,0,0,9,9,9,9,9,9,9,9,8,8,0,8,0,15,0,0,0,0,0,0,0,3,15,8,15,15,3,7,24,24,0,8,15,7,1,27,3,0,3,24,1,2,7,8,9,27,28,15,3,24,1,2,7,8,9,27,28,15,1,1,2,7,8,9,2,7,8,9,2,0,0,27,1,1,1,27,2,7,1,27,1,2,2,2,2,2,2,7,8,9,15,3,24,1,2,7,8,9,27,28,15,1,1,0,0,0,2,1,27,0,1,27,27,27,3,24,1,2,7,8,9,27,28,15,0,1,27,27,27,27,27,27,27,27,27,27,2,1,27,1,27,1,1,1,1,27,27,27,27,27,2,7,8,9,2,27,3,24,1,2,2,7,8,9,27,28,15,3,24,1,2,7,8,9,27,28,15,3,24,1,2,7,8,9,27,28,15,2,1,29,29],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],0,[3,4],[[],[[5,[2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,6],[1,6],[2,2],[7,7],[8,8],[9,9],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[2,2],10],[[],11],[[],2],0,[1,6],[[1,12],6],[1,6],0,[[2,2],12],[[7,7],12],[1,11],0,[[1,13],14],[[2,13],14],[[2,13],14],[[2,13],14],[[2,13],14],[[2,13],14],[[2,13],14],[[7,13],14],[[8,13],14],[[9,13],14],[[15,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[1,[[16,[11]]]],[1,[[16,[11]]]],[[],[[18,[2,[17,[1]]]]]],[[],[[5,[[17,[1]]]]]],[[],12],[[2,-1],6,19],[1,4],0,[[],6],[[20,11,[5,[11]],12,21,22],[[23,[6,15]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],12],[1,12],0,0,0,0,0,0,0,0,0,0,[[2,2],[[5,[10]]]],[1,11],0,[1,2],0,[[1,21,3],6],[[1,3],6],[[1,4],6],[[1,24,22],6],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,25,[]],0,[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[11,[[23,[2]]]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,[[23,[-2]]],[],[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[2,11],[1,11],0,0],"c":[],"p":[[3,"LocalApic",0],[3,"ApicId",0],[4,"LapicIpiDestination",0],[15,"u64"],[4,"Option",198],[15,"tuple"],[4,"InterruptChip",0],[4,"LapicDeliveryMode",0],[4,"LapicTimerDivide",0],[4,"Ordering",199],[15,"u32"],[15,"bool"],[3,"Formatter",200],[6,"Result",200],[4,"LapicInitError",0],[15,"array"],[6,"IrqSafeRwLock",201],[3,"AtomicMap",202],[8,"Hasher",203],[3,"PageTable",204],[15,"u8"],[15,"u16"],[4,"Result",205],[4,"LvtLint",0],[3,"String",206],[3,"TypeId",207],[3,"ApicRegisters",0],[3,"RegisterArray",0],[13,"UnexpectedApicID",196]],"b":[[88,"impl-LowerHex-for-ApicId"],[89,"impl-UpperHex-for-ApicId"],[90,"impl-Octal-for-ApicId"],[91,"impl-Debug-for-ApicId"],[92,"impl-Binary-for-ApicId"],[93,"impl-Display-for-ApicId"]],"a":{"cores":[76],"lapic":[26],"lint":[27],"lint0":[27],"lint1":[27],"lvt":[27],"numcpus":[76]}},\ "app_io":{"doc":"A simple library that handles stdio queues for …","t":"IIDLLLLMLFLFOFOKFFMFMFMFLLLLKL","n":["ImmutableRead","ImmutableWrite","IoStreams","borrow","borrow_mut","clone","clone_into","discipline","from","insert_child_streams","into","line_discipline","print","print_to_stdout_args","println","read","remove_child_streams","stderr","stderr","stdin","stdin","stdout","stdout","streams","to_owned","try_from","try_into","type_id","write","write_all"],"q":[[0,"app_io"],[30,"core::option"],[31,"tty::discipline"],[32,"alloc::sync"],[33,"core::result"],[34,"core::fmt"],[35,"core2::io::error"],[36,"core::any"]],"d":["","","Stores the stdio queues and line discipline. The stored …","","","","","","Returns the argument unchanged.","Shells call this function to store queue stdio streams for …","Calls U::from(self).","Returns the application’s line discipline.","The main printing macro, which simply writes to the …","Converts the given core::fmt::Arguments to a String and …","Calls print!() with an extra newline (‘\\\\n’) appended …","","Shells call this function to remove queues and pointer to …","Applications call this function to acquire a writer to its …","The writer to stderr.","Applications call this function to acquire a reader to its …","The reader to stdin.","Applications call this function to acquire a writer to its …","The writer to stdout.","","","","","","",""],"i":[0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,14,0,0,1,0,1,0,1,0,1,1,1,1,13,13],"f":[0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[[-1,-2],2,[],[]],0,[-1,-1,[]],[[3,1],[[4,[1]]]],[-1,-2,[],[]],[[],[[8,[[6,[5]],7]]]],0,[9,2],0,[[-1,[11,[10]]],[[12,[3]]],[]],[3,[[4,[1]]]],[[],[[8,[[6,[13]],7]]]],0,[[],[[8,[[6,[14]],7]]]],0,[[],[[8,[[6,[13]],7]]]],0,[[],[[8,[1,7]]]],[-1,-2,[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,15,[]],[[-1,[11,[10]]],[[12,[3]]],[]],[[-1,[11,[10]]],[[12,[2]]],[]]],"c":[],"p":[[3,"IoStreams",0],[15,"tuple"],[15,"usize"],[4,"Option",30],[3,"LineDiscipline",31],[3,"Arc",32],[15,"str"],[4,"Result",33],[3,"Arguments",34],[15,"u8"],[15,"slice"],[6,"Result",35],[8,"ImmutableWrite",0],[8,"ImmutableRead",0],[3,"TypeId",36]],"b":[]},\ "arm_boards":{"doc":"Configuration and definitions for specific boards on …","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]},\ -"async_channel":{"doc":"An asynchronous channel for Inter-Task Communication (ITC) …","t":"NENEDNDNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["ChannelDisconnected","ChannelStatus","Connected","Error","Receiver","ReceiverDisconnected","Sender","SenderDisconnected","WouldBlock","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","drop","drop","eq","eq","fmt","fmt","from","from","from","from","into","into","into","into","is_disconnected","is_disconnected","new_channel","new_channel_with","receive","receive_buf","receiver","send","send_all","send_buf","sender","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_receive","try_receive_buf","try_send","try_send_buf","type_id","type_id","type_id","type_id"],"q":[[0,"async_channel"],[67,"core::marker"],[68,"sync"],[69,"core::fmt"],[70,"core::fmt"],[71,"core::marker"]],"d":["Occurs when one end of channel is dropped","Indicates whether channel is Connected or Disconnected","Channel is working. Initially channel is created with …","Error type for tracking different type of errors sender …","The receiver side of a channel.","Set to Disconnected when Receiver end is dropped.","The sender (transmit) side of a channel.","Set to Disconnected when Sender end is dropped.","Occurs when a “try” operation would need to block to …","","","","","","","","","Clones this Sender, returning another Sender connected to …","Clones this Receiver, returning another Receiver connected …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the channel is disconnected.","Returns true if the channel is disconnected.","Create a new channel that allows senders and receivers to …","Creates a new asynchronous channel with the specified …","Receive a message, blocking until a message is available …","Receives objects placing them in a buffer and returning …","Obtain a Receiver endpoint connected to the same channel …","Send a message, blocking until space in the channel’s …","Attempts to send an entire slice of objects through the …","Sends a slice of objects through the channel, returning …","Obtain a Sender endpoint connected to the same channel as …","","","","","","","","","","","","Tries to receive a message, only succeeding if a message …","Receives objects placing them in a buffer and returning …","Tries to send the message, only succeeding if buffer space …","Sends a slice of objects through the channel, returning …","","","",""],"i":[8,0,5,0,0,5,0,5,8,1,4,5,8,1,4,5,8,1,4,5,1,4,5,1,4,5,8,5,8,1,4,5,8,1,4,5,8,1,4,0,0,4,4,1,1,1,1,4,1,4,5,1,4,5,8,1,4,5,8,4,4,1,1,1,4,5,8],"f":[0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1,-2]]],[[1,[-1,-2]]],2,3],[[[4,[-1,-2]]],[[4,[-1,-2]]],2,3],[5,5],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[[1,[-1,-2]]],6,2,3],[[[4,[-1,-2]]],6,2,3],[[5,5],7],[[8,8],7],[[5,9],10],[[8,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1,-2]]],7,2,3],[[[4,[-1,-2]]],7,2,3],[11,[[6,[[1,[-1]],[4,[-1]]]]],2],[11,[[6,[[1,[-1,-2]],[4,[-1,-2]]]]],2,3],[[[4,[-1,-2]]],[[12,[-1,8]]],2,3],[[[4,[-1,-2]],[13,[-1]]],[[12,[11,8]]],2,3],[[[1,[-1,-2]]],[[4,[-1,-2]]],2,3],[[[1,[-1,-2]],-1],[[12,[6,8]]],2,3],[[[1,[-1,-2]],[13,[-1]]],[[12,[6,8]]],[14,2],3],[[[1,[-1,-2]],[13,[-1]]],[[12,[11,8]]],[14,2],3],[[[4,[-1,-2]]],[[1,[-1,-2]]],2,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[[[4,[-1,-2]]],[[12,[-1,8]]],2,3],[[[4,[-1,-2]],[13,[-1]]],[[12,[11,8]]],2,3],[[[1,[-1,-2]],-1],[[12,[6,[6,[-1,8]]]]],2,3],[[[1,[-1,-2]],[13,[-1]]],[[12,[11,8]]],[14,2],3],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]]],"c":[],"p":[[3,"Sender",0],[8,"Send",67],[8,"DeadlockPrevention",68],[3,"Receiver",0],[4,"ChannelStatus",0],[15,"tuple"],[15,"bool"],[4,"Error",0],[3,"Formatter",69],[6,"Result",69],[15,"usize"],[4,"Result",70],[15,"slice"],[8,"Copy",67],[3,"TypeId",71]],"b":[]},\ "ata":{"doc":"Basic driver for accessing ATA drives (IDE) as a storage …","t":"SEDGDDDDDDSSSSSSSSSSSDDSSNNNNSSMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLMMMMLLLLMMMMMMMLLLLLLLMLLMLLMLLMMLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLMMLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMLLMMMLLMMMMMMMMMMMMMLLMMLLMMMMMMMMMMMLLMLMMMMMMLLLLLLLLLLLLLLLLLLMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLMMMMMLLMMM","n":["ADDRESS_MARK_NOT_FOUND","AtaDeviceType","AtaDrive","AtaDriveRef","AtaError","AtaFirmwareVersion","AtaIdentifyData","AtaModelNumber","AtaSerialNumber","AtaStatus","BAD_BLOCK","BUSY","COMMAND_ABORTED","CORRECTED_DATA","DATA_REQUEST_READY","DRIVE_READY","DRIVE_SEEK_COMPLETE","DRIVE_WRITE_FAULT","ERROR","ID_MARK_NOT_FOUND","INDEX","IdeController","IdeControllerIter","MEDIA_CHANGED","MEDIA_CHANGE_REQUEST","Pata","PataPi","Sata","SataPi","TRACK_0_NOT_FOUND","UNCORRECTABLE_DATA","additional_product_id","additional_supported","advanced_pio_modes","all","all","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","bitand","bitand","bitand_assign","bitand_assign","bitor","bitor","bitor_assign","bitor_assign","bits","bits","bits","bits","bitxor","bitxor","bitxor_assign","bitxor_assign","block_alignment","block_size","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capabilities","cfa_power_mode1","checksum","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","command_set_active","command_set_active_ext","command_set_support","command_set_support_ext","complement","complement","contains","contains","current_acoustic_value","current_apm_level","current_media_serial_number","current_multi_sector_setting","current_sector_capacity","current_sectors_per_track","data_set_management_feature","default","default","default","default","devices","difference","difference","dsm_cap","empty","empty","enhanced_security_erase_unit","eq","eq","ext_command_supported","extend","extend","extended_num_of_user_addressable_sectors","firmware_version","flush","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","free_fall_control_sensitivity","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_truncate","from_bits_truncate","from_iter","from_iter","from_name","from_name","general_configuration","hardware_reset_result","insert","insert","inter_seek_delay","intersection","intersection","intersects","intersects","into","into","into","into","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_iter","into_iter","into_iter","is_all","is_all","is_empty","is_empty","is_master","iter","iter","iter","iter_names","iter_names","len","major_revision","master_password_id","max_48_bit_lba","max_blocks_per_download_microcode","max_blocks_per_transfer","min_blocks_per_download_microcode","minimum_mw_transfer_cycle_time","minimum_pio_cycle_time","minimum_pio_cycle_time_io_ready","minor_revision","model_number","msn_support","multiword_dma_active","multiword_dma_support","new","next","nominal_form_factor","nominal_media_rotation_rate","normal_security_erase_unit","not","not","num_current_cylinders","num_current_heads","num_cylinders","num_heads","num_sectors_per_track","nv_cache_capabilities","nv_cache_size_lsw","nv_cache_size_msw","nv_cache_time_to_spin_up_in_seconds","physical_logical_sector_size","primary_master","primary_slave","queue_depth","read_blocks","read_pio","recommended_acoustic_value","recommended_mw_transfer_cycle_time","remove","remove","reserved_for_expanded_support_and_active","reserved_for_tlc_technical_report","reserved_for_world_wide_name_128","sct_command_transport","secondary_master","secondary_slave","security_status","serial_ata_capabilities","serial_ata_features_enabled","serial_ata_features_supported","serial_number","set","set","signature","size_in_blocks","specific_configuration","stream_min_request_size","streaming_access_latency_dma_pio","streaming_perf_granularity","streaming_transfer_time","streaming_transfer_time_dma","sub","sub","sub_assign","sub_assign","symmetric_difference","symmetric_difference","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","toggle","toggle","translation_fields_valid","transport_major_version","transport_minor_version","trusted_computing","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","ultra_dma_active","ultra_dma_support","union","union","user_addressable_sectors","vendor_unique1","vendor_unique2","words_per_logical_sector","world_wide_name","write_blocks","write_pio","write_read_verify_sector_count_mode","write_read_verify_sector_count_mode_2_only","write_read_verify_sector_count_mode_3_only"],"q":[[0,"ata"],[377,"core::any"],[378,"core::iter::traits::iterator"],[379,"alloc::boxed"],[380,"core::iter::traits::collect"],[381,"io"],[382,"core::result"],[383,"core::fmt"],[384,"core::fmt"],[385,"alloc::alloc"],[386,"alloc::sync"],[387,"alloc::rc"],[388,"bitflags::iter"],[389,"bitflags::iter"],[390,"alloc::string"],[391,"core::any"]],"d":["","The possible types of drive devices that can be attached …","A single ATA drive, either a master or a slave, which …","","The possible error values found in an ATA drive’s error …","An ATA drive’s firmware version is an 8-byte string.","Information that describes an ATA drive, obtained from …","An ATA drive’s model number is a 40-byte string.","An ATA drive’s serial number is a 20-byte string.","The possible status values found in an ATA drive’s …","","When set, the drive’s port values are still changing, so …","","","When cleared, the drive is ready for data to be …","When set, the drive is on. When cleared, the drive is …","","","","","","A single IDE controller has two buses with up to two …","Provides an iterator over all AtaDrives in an IdeController…","","","A parallel ATA (PATA) drive, like a hard drive. This is …","A parallel ATA (PATA) drive that uses the packet interface,","A serial ATA (SATA) drive that is operating in legacy IDE …","A serial ATA (SATA) drive that that is operating in legacy …","","","","","","Get a flags value with all known bits set.","Get a flags value with all known bits set.","","","","","","","","","","","","","","","","","","","","","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","","Get the underlying bits value.","","Get the underlying bits value.","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","Whether all set bits in a source flags value are also set …","Whether all set bits in a source flags value are also set …","","","","","","","","","","","","","The intersection of a source flags value with the …","The intersection of a source flags value with the …","","Get a flags value with all bits unset.","Get a flags value with all bits unset.","","","","MultiSectorSettingValid : 1; ReservedByte59 : 3; …","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from a bits value.","Convert from a bits value.","","Convert from a bits value exactly.","Convert from a bits value exactly.","","Convert from a bits value, unsetting any unknown bits.","Convert from a bits value, unsetting any unknown bits.","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","Get a flags value with the bits of a flag with the given …","Get a flags value with the bits of a flag with the given …","","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","Whether any set bits in a source flags value are also set …","Whether any set bits in a source flags value are also set …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether all known bits in this flags value are set.","Whether all known bits in this flags value are set.","Whether all bits in this flags value are unset.","Whether all bits in this flags value are unset.","Returns true if this drive is the master, or false if it …","Yield a set of contained flags values.","Yield a set of contained flags values.","Returns an Iterator over all of the AtaDrives that exist …","Yield a set of contained named flags values.","Yield a set of contained named flags values.","","","","Number of sectors in the drive, if using 48-bit LBA. This …","","Maximum number of blocks per transfer. Sometimes referred …","","","","","","","","","","Creates a new instance of an IDE controller based on the …","","","","","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","","","","","","","","","","[0:3] Physical sector size (in logical sectors)","","","only the first 5 bits are used, others are reserved","","Reads data from this drive starting at the given …","","","The intersection of a source flags value with the …","The intersection of a source flags value with the …","","","","","","","","","","","","Call insert when value is true or remove when value is …","Call insert when value is true or remove when value is …","","","","","","","","","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","","","","","","","","","","","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","A bitmask of translation fields valid and free fall …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","Number of sectors in the drive, if using 28-bit LBA. This …","","","","","","Writes data from the provided buffer to this drive, …","","",""],"i":[1,0,0,0,0,0,0,0,0,0,1,2,1,2,2,2,2,2,2,1,2,0,0,1,1,33,33,33,33,1,1,9,9,9,1,2,33,1,2,6,14,8,9,10,11,12,33,1,2,6,14,8,9,10,11,12,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,9,6,33,1,2,6,14,8,9,10,11,12,33,1,2,6,14,8,9,10,11,12,9,9,9,1,2,8,9,10,11,12,1,2,8,9,10,11,12,9,9,9,9,1,2,1,2,9,9,9,9,9,9,9,9,10,11,12,14,1,2,9,1,2,9,1,2,9,1,2,9,9,6,1,1,1,1,1,2,2,2,2,2,6,14,9,10,10,11,11,12,12,9,33,1,2,6,14,8,9,10,11,12,1,2,1,1,2,2,1,2,1,2,1,2,9,9,1,2,9,1,2,1,2,33,1,2,6,14,8,9,10,11,12,33,1,2,6,14,8,9,10,11,12,33,1,2,6,14,8,9,10,11,12,33,1,2,6,14,8,9,10,11,12,1,2,8,1,2,1,2,6,1,2,14,1,2,6,9,9,9,9,9,9,9,9,9,9,9,9,9,9,14,8,9,9,9,1,2,9,9,9,9,9,9,9,9,9,9,14,14,9,6,6,9,9,1,2,9,9,9,9,14,14,9,9,9,9,9,1,2,9,6,9,9,9,9,9,9,1,2,1,2,1,2,1,2,8,9,10,11,12,10,11,12,1,2,9,9,9,9,33,1,2,6,14,8,9,10,11,12,33,1,2,6,14,8,9,10,11,12,33,1,2,6,14,8,9,10,11,12,9,9,1,2,9,9,9,9,9,6,6,9,9,9],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],1],[[],2],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[-1,3,[]],[[1,1],1],[[2,2],2],[[1,1],4],[[2,2],4],[[1,1],1],[[2,2],2],[[1,1],4],[[2,2],4],[1,5],[1,5],[2,5],[2,5],[[1,1],1],[[2,2],2],[[1,1],4],[[2,2],4],0,[6,7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[1,1],[2,2],[8,8],[9,9],[10,10],[11,11],[12,12],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],0,0,0,0,[1,1],[2,2],[[1,1],13],[[2,2],13],0,0,0,0,0,0,0,[[],9],[[],10],[[],11],[[],12],[14,[[16,[15]]]],[[1,1],1],[[2,2],2],0,[[],1],[[],2],0,[[1,1],13],[[2,2],13],0,[[1,-1],4,17],[[2,-1],4,17],0,0,[6,[[19,[4,18]]]],[[1,20],21],[[1,20],21],[[1,20],21],[[1,20],21],[[1,20],21],[[2,20],21],[[2,20],21],[[2,20],21],[[2,20],21],[[2,20],21],[[6,20],21],[[14,20],21],[[9,20],21],[[10,20],21],[[10,20],21],[[11,20],21],[[11,20],21],[[12,20],21],[[12,20],21],0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[5,[[22,[1]]]],[5,[[22,[2]]]],[5,1],[5,1],[5,2],[5,2],[5,1],[5,2],[-1,1,17],[-1,2,17],[23,[[22,[1]]]],[23,[[22,[2]]]],0,0,[[1,1],4],[[2,2],4],0,[[1,1],1],[[2,2],2],[[1,1],13],[[2,2],13],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[16,[-1,24]]],[[16,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[25,[-1,24]]],[[25,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[[[26,[-1,24]]],[[26,[3,24]]],[]],[1],[2],[-1,-2,[],[]],[1,13],[2,13],[1,13],[2,13],[6,13],[1,[[27,[1]]]],[2,[[27,[2]]]],[14,8],[1,[[28,[1]]]],[2,[[28,[2]]]],[6,7],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[29,[[19,[14,23]]]],[8,22],0,0,0,[1,1],[2,2],0,0,0,0,0,0,0,0,0,0,0,0,0,[[6,[30,[5]],7],[[19,[7,18]]]],[[6,[30,[5]],7],[[19,[7,23]]]],0,0,[[1,1],4],[[2,2],4],0,0,0,0,0,0,0,0,0,0,0,[[1,1,13],4],[[2,2,13],4],0,[6,7],0,0,0,0,0,0,[[1,1],1],[[2,2],2],[[1,1],4],[[2,2],4],[[1,1],1],[[2,2],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[[1,1],4],[[2,2],4],0,0,0,0,[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],0,0,[[1,1],1],[[2,2],2],0,0,0,0,0,[[6,[30,[5]],7],[[19,[7,18]]]],[[6,[30,[5]],7],[[19,[7,23]]]],0,0,0],"c":[],"p":[[3,"AtaError",0],[3,"AtaStatus",0],[8,"Any",377],[15,"tuple"],[15,"u8"],[3,"AtaDrive",0],[15,"usize"],[3,"IdeControllerIter",0],[3,"AtaIdentifyData",0],[3,"AtaSerialNumber",0],[3,"AtaModelNumber",0],[3,"AtaFirmwareVersion",0],[15,"bool"],[3,"IdeController",0],[8,"Iterator",378],[3,"Box",379],[8,"IntoIterator",380],[4,"IoError",381],[4,"Result",382],[3,"Formatter",383],[6,"Result",383],[4,"Option",384],[15,"str"],[3,"Global",385],[3,"Arc",386],[3,"Rc",387],[3,"Iter",388],[3,"IterNames",388],[3,"PciDevice",389],[15,"slice"],[3,"String",390],[3,"TypeId",377],[4,"AtaDeviceType",0]],"b":[[64,"impl-Flags-for-AtaError"],[65,"impl-AtaError"],[66,"impl-Flags-for-AtaStatus"],[67,"impl-AtaStatus"],[145,"impl-Octal-for-AtaError"],[146,"impl-Debug-for-AtaError"],[147,"impl-LowerHex-for-AtaError"],[148,"impl-UpperHex-for-AtaError"],[149,"impl-Binary-for-AtaError"],[150,"impl-UpperHex-for-AtaStatus"],[151,"impl-Binary-for-AtaStatus"],[152,"impl-Octal-for-AtaStatus"],[153,"impl-Debug-for-AtaStatus"],[154,"impl-LowerHex-for-AtaStatus"],[158,"impl-Debug-for-AtaSerialNumber"],[159,"impl-Display-for-AtaSerialNumber"],[160,"impl-Debug-for-AtaModelNumber"],[161,"impl-Display-for-AtaModelNumber"],[162,"impl-Debug-for-AtaFirmwareVersion"],[163,"impl-Display-for-AtaFirmwareVersion"],[177,"impl-Flags-for-AtaError"],[178,"impl-AtaError"],[179,"impl-AtaStatus"],[180,"impl-Flags-for-AtaStatus"]]},\ "atomic_linked_list":{"doc":"","t":"AADDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["atomic_linked_list","atomic_map","AtomicLinkedList","AtomicLinkedListIter","AtomicLinkedListIterMut","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","from","from","from","into","into","into","into_iter","into_iter","iter","iter_mut","new","next","next","push_front","push_front_timeout","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","AtomicMap","AtomicMapIter","AtomicMapIterMut","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","drop","fmt","from","from","from","get","get_mut","insert","insert_timeout","into","into","into","into_iter","into_iter","iter","new","next","next","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"atomic_linked_list"],[2,"atomic_linked_list::atomic_linked_list"],[36,"atomic_linked_list::atomic_map"],[72,"core::fmt"],[73,"core::fmt"],[74,"core::result"],[75,"core::any"],[76,"core::cmp"]],"d":["A basic atomic linked list. A generic, singly-linked list …","A basic map structure which is backed by an atomic linked …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","returns a forward iterator through this linked list. ","returns a forward iterator through this linked list, …","Create a new empty AtomicLinkedList.","","","add a new element to the front of the list.","add a new element to the front of the list, but will abort …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns a reference to the value matching the given key, …","Returns a mutable reference to the value matching the …","Adds a new key-value pair to the map. If the given key is …","Adds a new key-value pair to the map. If the given key is …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns a forward iterator through this map. ","Create a new empty AtomicMap.","","","","","","","","","","",""],"i":[0,0,0,0,0,5,6,1,5,6,1,1,5,6,1,5,6,1,5,6,1,1,1,5,6,1,1,5,6,1,5,6,1,5,6,1,0,0,0,14,15,12,14,15,12,12,12,14,15,12,12,12,12,12,14,15,12,14,15,12,12,14,15,14,15,12,14,15,12,14,15,12],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]],2],3,4],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],[[5,[-1]]],[]],[[[1,[-1]]],[[6,[-1]]],[]],[[],[[1,[-1]]],[]],[[[5,[-1]]],[[7,[-1]]],[]],[[[6,[-1]]],[[7,[-1]]],[]],[[[1,[-1]],-1],[[9,[8,-1]]],[]],[[[1,[-1]],-1,10],[[9,[8,-1]]],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[12,[-1,-2]]],8,13,[]],[[[12,[-1,-2]],2],3,[13,4],4],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[12,[-1,-2]],-1],[[7,[-2]]],13,[]],[[[12,[-1,-2]],-1],[[7,[-2]]],13,[]],[[[12,[-1,-2]],-1,-2],[[7,[-2]]],13,[]],[[[12,[-1,-2]],-1,-2,10],[[9,[[7,[-2]],-2]]],13,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[12,[-1,-2]]],[[14,[-1,-2]]],13,[]],[[],[[12,[-1,-2]]],13,[]],[[[14,[-1,-2]]],[[7,[[8,[-1,-2]]]]],13,[]],[[[15,[-1,-2]]],[[7,[[8,[-1,-2]]]]],13,[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]]],"c":[],"p":[[3,"AtomicLinkedList",2],[3,"Formatter",72],[6,"Result",72],[8,"Debug",72],[3,"AtomicLinkedListIter",2],[3,"AtomicLinkedListIterMut",2],[4,"Option",73],[15,"tuple"],[4,"Result",74],[15,"u64"],[3,"TypeId",75],[3,"AtomicMap",36],[8,"PartialEq",76],[3,"AtomicMapIter",36],[3,"AtomicMapIterMut",36]],"b":[]},\ "block_allocator":{"doc":"","t":"DLLLLLLLLLLL","n":["FixedSizeBlockAllocator","allocate","borrow","borrow_mut","deallocate","from","init","into","new","try_from","try_into","type_id"],"q":[[0,"block_allocator"],[12,"core::alloc::layout"],[13,"core::result"],[14,"core::any"]],"d":["","Allocates a chunk of the given size with the given …","","","Frees the given allocation. ptr must be a pointer returned …","Returns the argument unchanged.","Initialize the allocator with the given heap bounds.","Calls U::from(self).","Creates an empty FixedSizeBlockAllocator.","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[1,2],3],[-1,-2,[],[]],[-1,-2,[],[]],[[1,3,2],4],[-1,-1,[]],[[1,5,5],4],[-1,-2,[],[]],[[],1],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]]],"c":[],"p":[[3,"FixedSizeBlockAllocator",0],[3,"Layout",12],[15,"u8"],[15,"tuple"],[15,"usize"],[4,"Result",13],[3,"TypeId",14]],"b":[]},\ @@ -112,7 +111,7 @@ var searchIndex = JSON.parse('{\ "panic_entry":{"doc":"Provides the default entry points and lang items for …","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]},\ "panic_wrapper":{"doc":"Provides types and simple routines for handling panics. …","t":"F","n":["panic_wrapper"],"q":[[0,"panic_wrapper"],[1,"core::panic::panic_info"],[2,"core::result"]],"d":["Performs the standard panic handling routine, which …"],"i":[0],"f":[[1,[[4,[2,3]]]]],"c":[],"p":[[3,"PanicInfo",1],[15,"tuple"],[15,"str"],[4,"Result",2]],"b":[]},\ "path":{"doc":"File system paths.","t":"EDNNNDDNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Component","Components","CurDir","Normal","ParentDir","Path","PathBuf","RootDir","as_mut","as_mut","as_path","as_ref","as_ref","as_ref","as_ref","as_ref","as_ref","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","components","default","deref","deref_mut","eq","eq","eq","eq","extension","file_name","file_stem","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_iter","get","get_absolute","get_dir","get_file","into","into","into","into_iter","is_absolute","join","new","new","next","next_back","parent","partial_cmp","partial_cmp","partial_cmp","pop","push","relative","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","type_id"],"q":[[0,"path"],[94,"core::cmp"],[95,"core::option"],[96,"core::fmt"],[97,"core::fmt"],[98,"core::convert"],[99,"alloc::string"],[100,"core::iter::traits::collect"],[101,"fs_node"],[102,"fs_node"],[103,"core::any"]],"d":["","An iterator over the components of a path.","","","","A slice of a path.","An owned, mutable path.","","","","Extracts a slice corresponding to the portion of the path …","","","","","","","","","","","","","","","","","","","","","","","","Produces an iterator over the Components of the path.","","","","","","","","Extracts the extension (without the leading dot) of …","Returns the final component of the Path, if there is one.","Extracts the stem (non-extension) portion of self.file_name…","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the file or directory at the given path.","Returns the file or directory at the given absolute path.","Returns the directory at the given path.","Returns the file at the given path.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns true if the path starts with the root.","Creates an owned PathBuf with path adjoined to self.","Wraps a string slice as a path slice.","Allocates an empty PathBuf.","","","Returns the path without its final component, if there is …","","","","Truncates self to self.parent.","Extends self with path.","Construct a relative path from a provided base directory …","","","","","","","","","","","","","","","",""],"i":[0,0,4,4,4,0,0,4,1,1,3,4,4,1,1,5,5,3,4,1,5,5,3,4,1,5,3,4,5,3,4,5,1,5,1,5,5,5,3,4,1,5,1,1,1,3,4,1,1,5,5,3,4,5,5,5,5,1,1,1,1,3,4,5,3,1,1,1,5,3,3,1,3,1,5,5,5,1,3,4,1,5,1,5,3,4,5,3,4,5,3,4,1,5],"f":[0,0,0,0,0,0,0,0,[1,1],[1,2],[3,1],[4,2],[4,1],[1,2],[1,1],[5,1],[5,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[5,1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,3],[4,4],[5,5],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[1,1],7],[[5,5],7],[1,3],[[],5],[5],[5],[[3,3],8],[[4,4],8],[[1,1],8],[[5,5],8],[1,[[9,[2]]]],[1,[[9,[2]]]],[1,[[9,[2]]]],[[3,10],11],[[4,10],11],[[1,10],11],[[1,10],11],[[5,10],11],[[5,10],11],[-1,-1,[]],[-1,-1,[]],[-1,5,[12,[13,[2]]]],[-1,-1,[]],[14,5],[-1,5,15],[[1,16],[[9,[17]]]],[1,[[9,[17]]]],[[1,16],[[9,[16]]]],[[1,16],[[9,[18]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,8],[[1,-1],5,[[13,[1]]]],[-1,1,[[13,[2]],12]],[[],5],[3,9],[3,9],[1,[[9,[1]]]],[[3,3],[[9,[7]]]],[[1,1],[[9,[7]]]],[[5,5],[[9,[7]]]],[5,8],[[5,-1],6,[[13,[1]]]],[[1,-1],[[9,[5]]],[[13,[1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[1],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[-1,20,[]]],"c":[],"p":[[3,"Path",0],[15,"str"],[3,"Components",0],[4,"Component",0],[3,"PathBuf",0],[15,"tuple"],[4,"Ordering",94],[15,"bool"],[4,"Option",95],[3,"Formatter",96],[6,"Result",96],[8,"Sized",97],[8,"AsRef",98],[3,"String",99],[8,"IntoIterator",100],[6,"DirRef",101],[4,"FileOrDir",101],[6,"FileRef",101],[4,"Result",102],[3,"TypeId",103]],"b":[[8,"impl-AsMut%3CPath%3E-for-Path"],[9,"impl-AsMut%3Cstr%3E-for-Path"],[11,"impl-AsRef%3Cstr%3E-for-Component%3C\'a%3E"],[12,"impl-AsRef%3CPath%3E-for-Component%3C\'a%3E"],[13,"impl-AsRef%3Cstr%3E-for-Path"],[14,"impl-AsRef%3CPath%3E-for-Path"],[15,"impl-AsRef%3CPath%3E-for-PathBuf"],[16,"impl-AsRef%3Cstr%3E-for-PathBuf"],[47,"impl-Debug-for-Path"],[48,"impl-Display-for-Path"],[49,"impl-Debug-for-PathBuf"],[50,"impl-Display-for-PathBuf"],[53,"impl-From%3C%26T%3E-for-PathBuf"],[55,"impl-From%3CString%3E-for-PathBuf"]]},\ -"pci":{"doc":"PCI Configuration Space Access","t":"NNNNENNNNDDDEEDDMMLLLLLLLLLLLLLLLLLMMMLLMLLLLLLMMLLLLLLLLLLLLLLLFFLMLMMLLLLLLLLMMLFLLLLLLLMMLMMLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["A","B","C","D","InterruptPin","IoPort","MemoryMapped","Msi","Msix","MsixVectorEntry","MsixVectorTable","PciBus","PciCapability","PciConfigSpaceAccessMechanism","PciDevice","PciLocation","bars","bist","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bus","bus_number","cache_line_size","class","clone","clone_into","command","deref","deref","deref_mut","deref_mut","determine_mem_base","determine_mem_size","device_id","devices","eq","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","function","get_hash","get_pci_buses","get_pci_device_bsf","hash","header_type","init","int_line","int_pin","into","into","into","into","into","into","into","into","latency_timer","location","new","pci_device_iter","pci_enable_msi","pci_enable_msix","pci_get_interrupt_info","pci_map_bar_mem","pci_mem_map_msix","pci_set_command_bus_master_bit","pci_set_interrupt_disable_bit","prog_if","revision_id","slot","status","subclass","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vendor_id"],"q":[[0,"pci"],[122,"memory_structs"],[123,"core::result"],[124,"core::fmt"],[125,"core::fmt"],[126,"core::marker"],[127,"core::hash"],[128,"core::option"],[129,"core::hash"],[130,"interrupts::arch"],[131,"memory::paging::mapper"],[132,"memory::paging::mapper"],[133,"memory::paging::mapper"],[134,"core::any"]],"d":["","","","","","","","","","A single Message Signaled Interrupt entry.","A memory-mapped array of MsixVectorEntry","A PCI bus, which contains a list of PCI devices on that …","","Lists the 2 possible PCI configuration space access …","Contains information common to every type of PCI Device, …","The bus, slot, and function number of a given PCI device. …","The six Base Address Registers (BARs)","","","","","","","","","","","","","","","","","","","The number identifier of this PCI bus.","","The class code, used to determine device type.","","","","","","","","Returns the base address of the memory region specified by …","Returns the size in bytes of the memory region specified …","","The list of devices attached to this PCI bus.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns a list of all PCI buses in this system. If the PCI …","Returns a reference to the PciDevice with the given bus, …","","","Sets interrupt destination & number for this entry and …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","the bus, slot, and function number that locates this PCI …","","Returns an iterator that iterates over all PciDevices, in …","Enable MSI interrupts for a PCI device. We assume the …","Enable MSI-X interrupts for a PCI device. Only the enable …","Reads and returns this PCI device’s interrupt line and …","Maps device memory specified by a Base Address Register.","Returns the memory mapped msix vector table","Sets the PCI device’s bit 3 in the command portion, …","Sets the PCI device’s command bit 10 to disable legacy …","The programming interface of this PCI device, also used to …","","","","The subclass code, used to determine device type.","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[29,29,29,29,0,33,33,34,34,0,0,0,0,0,0,0,5,5,34,29,33,4,12,1,5,23,34,29,33,4,12,1,5,23,1,12,5,5,1,1,5,4,5,4,5,5,5,5,12,1,12,1,1,5,34,29,33,4,12,1,5,23,1,1,0,0,1,5,23,5,5,34,29,33,4,12,1,5,23,5,5,4,0,5,5,5,5,5,1,1,5,5,1,5,5,1,1,34,29,33,4,12,1,5,23,34,29,33,4,12,1,5,23,34,29,33,4,12,1,5,23,5],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],0,0,0,[1,1],[[-1,-2],3,[],[]],0,[4],[5,1],[4],[5,1],[[5,6],[[9,[7,8]]]],[[5,6],10],0,0,[[1,1],11],[[12,13],14],[[1,13],[[9,[3,15]]]],[[1,13],[[9,[3,15]]]],[[5,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[1,2],[[-1,-2],16,[17,18],19],[[],[[9,[[20,[12]],8]]]],[[2,2,2],[[9,[[21,[5]],8]]]],[[1,-1],3,22],0,[[23,24,25],3],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[[27,[23,26]]],4],[[],[[9,[[0,[28]],8]]]],[[5,2,2],[[9,[3,8]]]],[5,[[9,[3,8]]]],[5,[[9,[[3,[[21,[2]],[21,[29]]]],8]]]],[[5,6],[[9,[30,8]]]],[[5,6],[[9,[4,8]]]],[1,3],[1,3],0,0,[1,2],0,0,[-1,-2,[],[]],[-1,31,[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],[-1,32,[]],0],"c":[],"p":[[3,"PciLocation",0],[15,"u8"],[15,"tuple"],[3,"MsixVectorTable",0],[3,"PciDevice",0],[15,"usize"],[3,"PhysicalAddress",122],[15,"str"],[4,"Result",123],[15,"u32"],[15,"bool"],[3,"PciBus",0],[3,"Formatter",124],[6,"Result",124],[3,"Error",124],[15,"u64"],[8,"Hash",125],[8,"Sized",126],[8,"BuildHasher",125],[3,"Vec",127],[4,"Option",128],[8,"Hasher",125],[3,"MsixVectorEntry",0],[3,"CpuId",129],[6,"InterruptNumber",130],[3,"Mutable",131],[3,"BorrowedSliceMappedPages",131],[8,"Iterator",132],[4,"InterruptPin",0],[3,"MappedPages",131],[3,"String",133],[3,"TypeId",134],[4,"PciConfigSpaceAccessMechanism",0],[4,"PciCapability",0]],"b":[[51,"impl-Display-for-PciLocation"],[52,"impl-Debug-for-PciLocation"]]},\ +"pci":{"doc":"PCI Configuration Space Access","t":"NNNNENNNNDDDEEDDMMLLLLLLLLLLLLLLLLLMMMLLMLLLLLLMMLLLLLLLLLLLLLLLFFLMFLMMMLLLLLLLLMMLFLLLLLLLLLMMLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["A","B","C","D","InterruptPin","IoPort","MemoryMapped","Msi","Msix","MsixVectorEntry","MsixVectorTable","PciBus","PciCapability","PciConfigSpaceAccessMechanism","PciDevice","PciLocation","bars","bist","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bus","bus_number","cache_line_size","class","clone","clone_into","command","deref","deref","deref_mut","deref_mut","determine_mem_base","determine_mem_size","device_id","devices","eq","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","function","get_hash","get_pci_buses","get_pci_device_bsf","hash","header_type","init","init","int_line","int_pin","interrupt_waker","into","into","into","into","into","into","into","into","latency_timer","location","new","pci_device_iter","pci_enable_interrupts","pci_enable_msi","pci_enable_msix","pci_get_interrupt_info","pci_get_interrupt_status","pci_map_bar_mem","pci_mem_map_msix","pci_set_command_bus_master_bit","pci_set_interrupt_disable_bit","prog_if","revision_id","set_interrupt_waker","slot","status","subclass","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vendor_id"],"q":[[0,"pci"],[127,"memory_structs"],[128,"core::result"],[129,"core::fmt"],[130,"core::fmt"],[131,"core::marker"],[132,"core::hash"],[133,"core::option"],[134,"core::hash"],[135,"interrupts::arch"],[136,"memory::paging::mapper"],[137,"memory::paging::mapper"],[138,"memory::paging::mapper"],[139,"alloc::string"],[140,"core::any"]],"d":["","","","","","","","","","A single Message Signaled Interrupt entry.","A memory-mapped array of MsixVectorEntry","A PCI bus, which contains a list of PCI devices on that …","","Lists the 2 possible PCI configuration space access …","Contains information common to every type of PCI Device, …","The bus, slot, and function number of a given PCI device. …","The six Base Address Registers (BARs)","","","","","","","","","","","","","","","","","","","The number identifier of this PCI bus.","","The class code, used to determine device type.","","","","","","","","Returns the base address of the memory region specified by …","Returns the size in bytes of the memory region specified …","","The list of devices attached to this PCI bus.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns a list of all PCI buses in this system. If the PCI …","Returns a reference to the PciDevice with the given bus, …","","","Initializes the PCI interrupt handler","Sets interrupt destination & number for this entry and …","","","The handling task for legacy PCI interrupts","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","the bus, slot, and function number that locates this PCI …","","Returns an iterator that iterates over all PciDevices, in …","Enables/Disables legacy (INTx) interrupts for this device","Enable MSI interrupts for a PCI device. We assume the …","Enable MSI-X interrupts for a PCI device. Only the enable …","Reads and returns this PCI device’s interrupt line and …","Reads and returns this PCI device’s interrupt status …","Maps device memory specified by a Base Address Register.","Returns the memory mapped msix vector table","Sets the PCI device’s bit 3 in the command portion, …","Sets the PCI device’s command bit 10 to disable legacy …","The programming interface of this PCI device, also used to …","","Sets a task waker to be used when this device triggers an …","","","The subclass code, used to determine device type.","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[29,29,29,29,0,34,34,35,35,0,0,0,0,0,0,0,5,5,35,29,34,4,12,1,5,23,35,29,34,4,12,1,5,23,1,12,5,5,1,1,5,4,5,4,5,5,5,5,12,1,12,1,1,5,35,29,34,4,12,1,5,23,1,1,0,0,1,5,0,23,5,5,5,35,29,34,4,12,1,5,23,5,5,4,0,5,5,5,5,5,5,5,1,1,5,5,5,1,5,5,1,1,35,29,34,4,12,1,5,23,35,29,34,4,12,1,5,23,35,29,34,4,12,1,5,23,5],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],0,0,0,[1,1],[[-1,-2],3,[],[]],0,[4],[5,1],[4],[5,1],[[5,6],[[9,[7,8]]]],[[5,6],10],0,0,[[1,1],11],[[12,13],14],[[1,13],[[9,[3,15]]]],[[1,13],[[9,[3,15]]]],[[5,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[1,2],[[-1,-2],16,[17,18],19],[[],[[9,[[20,[12]],8]]]],[[2,2,2],[[9,[[21,[5]],8]]]],[[1,-1],3,22],0,[[],[[9,[3,8]]]],[[23,24,25],3],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[[27,[23,26]]],4],[[],[[9,[[0,[28]],8]]]],[[5,11],3],[[5,2,2],[[9,[3,8]]]],[5,[[9,[3,8]]]],[5,[[9,[[3,[[21,[2]],[21,[29]]]],8]]]],[[5,11],11],[[5,6],[[9,[30,8]]]],[[5,6],[[9,[4,8]]]],[1,3],[[1,11],3],0,0,[[5,31],[[21,[31]]]],[1,2],0,0,[-1,-2,[],[]],[-1,32,[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],0],"c":[],"p":[[3,"PciLocation",0],[15,"u8"],[15,"tuple"],[3,"MsixVectorTable",0],[3,"PciDevice",0],[15,"usize"],[3,"PhysicalAddress",127],[15,"str"],[4,"Result",128],[15,"u32"],[15,"bool"],[3,"PciBus",0],[3,"Formatter",129],[6,"Result",129],[3,"Error",129],[15,"u64"],[8,"Hash",130],[8,"Sized",131],[8,"BuildHasher",130],[3,"Vec",132],[4,"Option",133],[8,"Hasher",130],[3,"MsixVectorEntry",0],[3,"CpuId",134],[6,"InterruptNumber",135],[3,"Mutable",136],[3,"BorrowedSliceMappedPages",136],[8,"Iterator",137],[4,"InterruptPin",0],[3,"MappedPages",136],[3,"Waker",138],[3,"String",139],[3,"TypeId",140],[4,"PciConfigSpaceAccessMechanism",0],[4,"PciCapability",0]],"b":[[51,"impl-Display-for-PciLocation"],[52,"impl-Debug-for-PciLocation"]]},\ "percent_encoding":{"doc":"URLs use special chacters to indicate the parts of the …","t":"DIDDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLOLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLF","n":["DEFAULT_ENCODE_SET","EncodeSet","PATH_SEGMENT_ENCODE_SET","PercentDecode","PercentEncode","QUERY_ENCODE_SET","SIMPLE_ENCODE_SET","USERINFO_ENCODE_SET","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contains","contains","contains","contains","contains","contains","decode_utf8","decode_utf8_lossy","define_encode_set","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","if_any","into","into","into","into","into","into","into","into_iter","into_iter","next","next","percent_decode","percent_encode","percent_encode_byte","size_hint","size_hint","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","utf8_percent_encode"],"q":[[0,"percent_encoding"],[107,"core::clone"],[108,"alloc::borrow"],[109,"core::str::error"],[110,"core::result"],[111,"core::fmt"],[112,"core::fmt"],[113,"core::option"],[114,"alloc::string"],[115,"core::any"]],"d":["This encode set is used for path components.","Represents a set of characters / bytes that should be …","This encode set is used for on ‘/’-separated path …","The return type of percent_decode().","The return type of percent_encode() and …","This encode set is used in the URL parser for query …","This encode set is used for the path of cannot-be-a-base …","This encode set is used for username and password.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Called with UTF-8 bytes rather than code points. Should …","","","","","","Decode the result of percent-decoding as UTF-8.","Decode the result of percent-decoding as UTF-8, lossily.","Define a new struct that implements the EncodeSet trait, …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","If the percent-decoding is different from the input, …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","Percent-decode the given bytes.","Percent-encode the given bytes with the given encode set.","Return the percent-encoding of the given bytes.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Percent-encode the UTF-8 encoding of the given string."],"i":[0,0,0,0,0,0,0,0,1,2,3,4,5,6,9,1,2,3,4,5,6,9,1,2,3,4,5,6,9,1,2,3,4,5,6,9,8,1,2,3,4,5,9,9,0,1,2,3,4,5,6,6,9,1,2,3,4,5,6,9,9,1,2,3,4,5,6,9,6,9,6,9,0,0,0,6,9,1,2,3,4,5,6,9,6,1,2,3,4,5,6,9,1,2,3,4,5,6,9,1,2,3,4,5,6,9,0],"f":[0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[3,3],[4,4],[5,5],[[[6,[-1]]],[[6,[-1]]],[7,8]],[9,9],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,11],12,[]],[[1,11],12],[[2,11],12],[[3,11],12],[[4,11],12],[[5,11],12],[9,[[16,[[14,[13]],15]]]],[9,[[14,[13]]]],0,[[1,17],18],[[2,17],18],[[3,17],18],[[4,17],18],[[5,17],18],[[[6,[-1]],17],18,[19,8]],[[[6,[-1]],17],18,8],[[9,17],18],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[9,[[21,[[20,[11]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[6,[-1]]],[[21,[13]]],8],[9,[[21,[11]]]],[[[22,[11]]],9],[[[22,[11]],-1],[[6,[-1]]],8],[11,13],[[[6,[-1]]],[[10,[23,[21,[23]]]]],8],[9,[[10,[23,[21,[23]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,24,[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[13,-1],[[6,[-1]]],8]],"c":[],"p":[[3,"SIMPLE_ENCODE_SET",0],[3,"QUERY_ENCODE_SET",0],[3,"DEFAULT_ENCODE_SET",0],[3,"PATH_SEGMENT_ENCODE_SET",0],[3,"USERINFO_ENCODE_SET",0],[3,"PercentEncode",0],[8,"Clone",107],[8,"EncodeSet",0],[3,"PercentDecode",0],[15,"tuple"],[15,"u8"],[15,"bool"],[15,"str"],[4,"Cow",108],[3,"Utf8Error",109],[4,"Result",110],[3,"Formatter",111],[6,"Result",111],[8,"Debug",111],[3,"Vec",112],[4,"Option",113],[15,"slice"],[15,"usize"],[3,"String",114],[3,"TypeId",115]],"b":[[50,"impl-Debug-for-PercentEncode%3C\'a,+E%3E"],[51,"impl-Display-for-PercentEncode%3C\'a,+E%3E"]]},\ "physical_nic":{"doc":"Defines a trait PhysicalNic that must be implemented by …","t":"IKK","n":["PhysicalNic","return_rx_queues","return_tx_queues"],"q":[[0,"physical_nic"],[3,"nic_queues"],[4,"alloc::vec"],[5,"nic_queues"]],"d":["This trait must be implemented by any NIC driver that …","Returns the RxQueues owned by a virtual NIC back to the …","Returns the TxQueues owned by a virtual NIC back to the …"],"i":[0,5,5],"f":[0,[[-1,[2,[[1,[-2,-3]]]]],3,[],[],[]],[[-1,[2,[[4,[-2,-3]]]]],3,[],[],[]]],"c":[],"p":[[3,"RxQueue",3],[3,"Vec",4],[15,"tuple"],[3,"TxQueue",3],[8,"PhysicalNic",0]],"b":[]},\ "pic":{"doc":"Support for the x86 PIC (8259 Programmable Interrupt …","t":"DRDRLLLLLLLLLLLLMMLLMMLLLLLL","n":["ChainedPics","IRQ_BASE_OFFSET","IrqStatusRegisters","PIC_SPURIOUS_INTERRUPT_IRQ","borrow","borrow","borrow_mut","borrow_mut","fmt","fmt","from","from","init","into","into","mask_irqs","master_irr","master_isr","notify_end_of_interrupt","read_isr_irr","slave_irr","slave_isr","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"pic"],[28,"core::fmt"],[29,"core::fmt"],[30,"core::any"]],"d":["A pair of chained PIC chips, which represents the standard …","The offset added to the first IRQ: 0x20.","The set of status registers for both PIC chips.","The IRQ number reserved for spurious PIC interrupts (as …","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Create a new interface for the standard PIC1 and PIC2 …","Calls U::from(self).","Calls U::from(self).","Each mask is a bitwise mask for each IRQ line, with the …","","","Figure out which (if any) PICs in our chain need to know …","Reads the ISR and IRR registers of both the master and …","","","","","","","",""],"i":[0,0,0,0,1,5,1,5,1,1,1,5,5,1,5,5,1,1,5,5,1,1,1,5,1,5,1,5],"f":[0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,2],3],[[1,2],3],[-1,-1,[]],[-1,-1,[]],[[4,4],5],[-1,-2,[],[]],[-1,-2,[],[]],[[5,4,4],6],0,0,[[5,4],6],[5,1],0,0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]]],"c":[],"p":[[3,"IrqStatusRegisters",0],[3,"Formatter",28],[6,"Result",28],[15,"u8"],[3,"ChainedPics",0],[15,"tuple"],[4,"Result",29],[3,"TypeId",30]],"b":[[8,"impl-Display-for-IrqStatusRegisters"],[9,"impl-Debug-for-IrqStatusRegisters"]]},\ @@ -121,7 +120,7 @@ var searchIndex = JSON.parse('{\ "pmu_x86":{"doc":"Support for the Performance Monitoring Unit ","t":"NNDENNNDNNLLLLLLLLLFLLLLFFMLLLLFFFLFAMLLLLLLLLLDDLLLLLLLLLLLLLLLLLL","n":["BranchInstructionsRetired","BranchMissesRetired","Counter","EventType","InstructionsRetired","LastLevelCacheMisses","LastLevelCacheReferences","SampleResults","UnhaltedCoreCycles","UnhaltedReferenceCycles","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","diff","drop","end","find_function_names_from_samples","from","from","from","get_count_since_start","handle_sample","init","instruction_pointers","into","into","into","new","print_samples","reset_pmu","retrieve_samples","start","start_samples","stat","task_ids","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","PMUResults","PerformanceCounters","borrow","borrow","borrow_mut","borrow_mut","end","fmt","from","from","into","into","new","start","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"pmu_x86"],[47,"pmu_x86::stat"],[67,"core::result"],[68,"x86_64::structures::idt"],[69,"core::option"],[70,"core::any"],[71,"core::fmt"],[72,"core::fmt"]],"d":["This event counts branch instructions at retirement. It …","This event counts mispredicted branch instructions at …","A logical counter object to correspond to a physical PMC","Used to select the event type to count. Event types are …","This event counts the number of instructions at …","This event counts each cache miss condition for references …","This event counts requests originating from the core that …","Stores the instruction pointers and corresponding task IDs …","This event counts core clock cycles when the clock signal …","This event counts reference clock cycles at a fixed …","","","","","","","lightweight function with no checks to get the counter …","","Stops counting, releases the counter, and returns the …","Finds the corresponding function for each instruction …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Allows user to get count since start without …","This function is designed to be invoked from an interrupt …","Initialization function that enables the PMU if one is …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Creates a Counter object and assigns a physical counter …","Simple function to print values from SampleResults in a …","Frees all counters and make them available to be used. …","Returns the samples that were stored during sampling in …","Starts the count.","Start interrupt process in order to take samples using the …","This module implements the equivalent of “perf stat”. …","","","","","","","","","","","","","","","","","Stop the counters and return the counter values. The …","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Initialize seven performance monitoring counters. They …","Start running all the counters ","","","","","",""],"i":[9,9,0,0,9,9,9,0,9,9,9,1,6,9,1,6,1,1,1,0,9,1,6,1,0,0,6,9,1,6,1,0,0,0,1,0,0,6,9,1,6,9,1,6,9,1,6,0,0,14,15,14,15,14,15,14,15,14,15,14,14,14,15,14,15,14,15],"f":[0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[1,3],[1,[[5,[2,4]]]],[6,[[5,[3,4]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[1,[[5,[2,4]]]],[7,[[5,[8,4]]]],[[],[[5,[3,4]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[9,[[5,[1,4]]]],[6,3],[[],[[5,[3,4]]]],[[],[[5,[6,4]]]],[1,[[5,[3,4]]]],[[9,10,[12,[11]],10],[[5,[3,4]]]],0,0,[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[14,[[5,[15,4]]]],[[15,16],17],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[5,[14,4]]]],[14,[[5,[3,4]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,13,[]],[-1,13,[]]],"c":[],"p":[[3,"Counter",0],[15,"u64"],[15,"tuple"],[15,"str"],[4,"Result",67],[3,"SampleResults",0],[3,"InterruptStackFrame",68],[15,"bool"],[4,"EventType",0],[15,"u32"],[15,"usize"],[4,"Option",69],[3,"TypeId",70],[3,"PerformanceCounters",47],[3,"PMUResults",47],[3,"Formatter",71],[6,"Result",71]],"b":[]},\ "port_io":{"doc":"CPU-level input/output instructions, including inb, outb, …","t":"DIIDDLLLLLLLLLLLLFFLLLFLLLFFFLLLKKLLLLLLLLLLLLL","n":["Port","PortIn","PortOut","PortReadOnly","PortWriteOnly","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","from","from","from","inb","inl","into","into","into","inw","new","new","new","outb","outl","outw","port_address","port_address","port_address","port_in","port_out","read","read","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","write","write"],"q":[[0,"port_io"],[47,"core::fmt"],[48,"core::fmt"],[49,"core::any"]],"d":["A readable and writable I/O port over an arbitrary type …","This trait is defined for any type which can be read from …","This trait is defined for any type which can be read from …","A read-only I/O port over an arbitrary type supporting the …","A write-only I/O port over an arbitrary type supporting …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Read a u8-sized value from port.","Read a u32-sized value from port.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Read a u16-sized value from port.","Create a new I/O port.","Create a new read-only I/O port.","Create a new read-only I/O port.","Write a u8-sized value to port.","Write a u32-sized value to port.","Write a u8-sized value to port.","Returns the address of this port.","Returns the address of this port.","Returns the address of this port.","Read a value from the specified port.","Write a value to the specified port.","Read data of size T from the port.","Read data of size T from the port.","","","","","","","","","","Write data of size T to the port. This is unsafe because …","Write data of size T to the port. This is unsafe because …"],"i":[0,0,0,0,0,1,7,8,1,7,8,1,7,8,1,7,8,0,0,1,7,8,0,1,7,8,0,0,0,1,7,8,5,6,1,7,1,7,8,1,7,8,1,7,8,1,8],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]],2],3,[4,5,6]],[[[7,[-1]],2],3,[4,5]],[[[8,[-1]],2],3,[4,6]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[9,10],[9,11],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[9,9],[9,[[1,[-1]]],[5,6]],[9,[[7,[-1]]],5],[9,[[8,[-1]]],6],[[10,9],12],[[11,9],12],[[9,9],12],[[[1,[-1]]],9,[5,6]],[[[7,[-1]]],9,5],[[[8,[-1]]],9,6],[9,-1,[]],[[9,-1],12,[]],[[[1,[-1]]],-1,[5,6]],[[[7,[-1]]],-1,5],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[[[1,[-1]],-1],12,[5,6]],[[[8,[-1]],-1],12,6]],"c":[],"p":[[3,"Port",0],[3,"Formatter",47],[6,"Result",47],[8,"Debug",47],[8,"PortIn",0],[8,"PortOut",0],[3,"PortReadOnly",0],[3,"PortWriteOnly",0],[15,"u16"],[15,"u8"],[15,"u32"],[15,"tuple"],[4,"Result",48],[3,"TypeId",49]],"b":[]},\ "preemption":{"doc":"Manages preemption on a per-CPU basis.","t":"DLLLLLLFLFLLLL","n":["PreemptionGuard","borrow","borrow_mut","cpu_id","drop","fmt","from","hold_preemption","into","preemption_enabled","preemption_was_enabled","try_from","try_into","type_id"],"q":[[0,"preemption"],[14,"cpu"],[15,"core::fmt"],[16,"core::fmt"],[17,"core::any"]],"d":["A guard type that ensures preemption is disabled as long …","","","Returns the ID of the CPU on which this guard was created.","","","Returns the argument unchanged.","Prevents preemption (preemptive task switching) from …","Calls U::from(self).","Returns true if preemption is currently enabled on this …","Returns whether preemption was originally enabled when …","","",""],"i":[0,1,1,1,1,1,1,0,1,0,1,1,1,1],"f":[0,[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[1,3],[[1,4],5],[-1,-1,[]],[[],1],[-1,-2,[],[]],[[],6],[1,6],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]]],"c":[],"p":[[3,"PreemptionGuard",0],[3,"CpuId",14],[15,"tuple"],[3,"Formatter",15],[6,"Result",15],[15,"bool"],[4,"Result",16],[3,"TypeId",17]],"b":[]},\ -"ps2":{"doc":"Driver for the PS/2 interface, which supports legacy …","t":"NNNNDDNNNNNNENNNNNNNNNNNNEEEEENNNNEDNNNNEEDDDENEDDDNENNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Acknowledge","AncientATKeyboard","ClockLineStuckHigh","ClockLineStuckLow","ControllerConfigurationByte","ControllerToHostStatus","Count1PerMm","Count2PerMm","Count4PerMm","Count8PerMm","DataLineStuckHigh","DataLineStuckLow","DeviceToHostResponse","DisableDataReporting","DisablePort1","DisablePort2","DisableScanning","EnableDataReporting","EnablePort1","EnablePort2","EnableScanning","Four","Four","Get","GetDeviceID","HostToControllerCommand","HostToKeyboardCommand","HostToKeyboardCommandOrData","HostToMouseCommand","HostToMouseCommandOrData","IdentifyKeyboard","KeyDetectionErrorOrInternalBufferOverrun1","KeyDetectionErrorOrInternalBufferOverrun2","KeyboardCommand","KeyboardType","LEDState","LEDState","MF2Keyboard","MF2KeyboardWithPSControllerTranslator","MouseCommand","MouseId","MousePacket","MousePacket3","MousePacket4","MousePacketGeneric","MouseResolution","MouseResolution","MouseSampleRate","PS2Controller","PS2Keyboard","PS2Mouse","Passed","PortTestResult","ReadData","ReadFromInternalRAMByte0","ResendByte","ResendByte","ResendCommand","Reset","ResetAndStartSelfTest","ResetWrapMode","ResponseToEcho","SampleRate","SampleRate","ScancodeSet","ScancodeSet","ScancodeSet","SelfTestFailed1","SelfTestFailed2","SelfTestPassed","Set1","Set2","Set3","SetDefaults","SetLEDStatus","SetRemoteMode","SetRepeatRateAndDelay","SetResolution","SetScaling","SetStreamMode","SetWrapMode","StatusRequest","TestController","TestPort1","TestPort2","Three","Three","WriteByteToPort2InputBuffer","WriteToInternalRAMByte0","Zero","Zero","_10","_100","_20","_200","_40","_60","_80","always_one","always_one","always_one_or_err","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","button_4","button_4","button_4_or_err","button_5","button_5","button_5_or_err","button_left","button_left","button_left_or_err","button_middle","button_middle","button_middle_or_err","button_right","button_right","button_right_or_err","caps_lock","caps_lock_or_err","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","eq","eq","flush_output_buffer","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","init","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_bytes","into_bytes","into_bytes","into_bytes","into_bytes","into_bytes","into_bytes","is_output_buffer_full","keyboard_detect","keyboard_ref","mouse_output_buffer_full","mouse_output_buffer_full_or_err","mouse_ref","new","new","new","new","new","new","new","new","number_lock","number_lock_or_err","port1_clock_disabled","port1_clock_disabled_or_err","port1_interrupt_enabled","port1_interrupt_enabled_or_err","port1_scancode_translation_enabled","port1_scancode_translation_enabled_or_err","port2_clock_disabled","port2_clock_disabled_or_err","port2_interrupt_enabled","port2_interrupt_enabled_or_err","read_config","read_controller_test_result","read_mouse_packet","read_scancode","reset","reset","scroll_lock","scroll_lock_or_err","scroll_movement","scroll_movement","scroll_movement","set_always_one","set_always_one_checked","set_button_4","set_button_4_checked","set_button_5","set_button_5_checked","set_button_left","set_button_left_checked","set_button_middle","set_button_middle_checked","set_button_right","set_button_right_checked","set_caps_lock","set_caps_lock_checked","set_keyboard_led","set_keyboard_scancode_set","set_mouse_id","set_mouse_output_buffer_full","set_mouse_output_buffer_full_checked","set_number_lock","set_number_lock_checked","set_port1_clock_disabled","set_port1_clock_disabled_checked","set_port1_interrupt_enabled","set_port1_interrupt_enabled_checked","set_port1_scancode_translation_enabled","set_port1_scancode_translation_enabled_checked","set_port2_clock_disabled","set_port2_clock_disabled_checked","set_port2_interrupt_enabled","set_port2_interrupt_enabled_checked","set_scroll_lock","set_scroll_lock_checked","status_register","test","test_port1","test_port2","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","with_always_one","with_always_one_checked","with_button_4","with_button_4_checked","with_button_5","with_button_5_checked","with_button_left","with_button_left_checked","with_button_middle","with_button_middle_checked","with_button_right","with_button_right_checked","with_caps_lock","with_caps_lock_checked","with_mouse_output_buffer_full","with_mouse_output_buffer_full_checked","with_number_lock","with_number_lock_checked","with_port1_clock_disabled","with_port1_clock_disabled_checked","with_port1_interrupt_enabled","with_port1_interrupt_enabled_checked","with_port1_scancode_translation_enabled","with_port1_scancode_translation_enabled_checked","with_port2_clock_disabled","with_port2_clock_disabled_checked","with_port2_interrupt_enabled","with_port2_interrupt_enabled_checked","with_scroll_lock","with_scroll_lock_checked","write_command","write_config","x_movement","x_movement","y_movement","y_movement"],"q":[[0,"ps2"],[450,"modular_bitfield::error"],[451,"core::result"],[452,"core::fmt"],[453,"core::fmt"],[454,"core::any"]],"d":["","","","","Configuration values used to enable or disable features of …","","","","","","","","","","sets ControllerConfigurationByte port1_clock_disabled","sets ControllerConfigurationByte port2_clock_disabled","might also restore default parameters","","clears ControllerConfigurationByte port1_clock_disabled","clears ControllerConfigurationByte port2_clock_disabled","","","the mouse has scroll-movement, fourth and fifth buttons","","","Commands that can be sent to the PS/2 Controller.","","","","","","","","","","","","","","","See MousePacket and its enum variants for further …","","","","","","","","An initialized PS/2 controller that can be used to …","A reference to the PS/2 Keyboard connected to the PS/2 …","A reference to the PS/2 Mouse connected to the PS/2 …","","","","returns ControllerConfigurationByte","","","","","","","","","","","","","sent after “0xFF (reset)” command or keyboard power up","sent after “0xFF (reset)” command or keyboard power up","sent after “0xFF (reset)” command or keyboard power up","","","","","","","also called typematic","set MouseResolution","either to 1 or 2","","","","see PS2Controller::test","returns PortTestResult","returns PortTestResult","","the mouse has scroll-movement","sends next byte to the second PS/2 port","sets ControllerConfigurationByte","","the mouse has no scroll-movement","","","","","","","","Returns the value of always_one.","","Returns the value of always_one.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the value of button_4.","","Returns the value of button_4.","Returns the value of button_5.","","Returns the value of button_5.","Returns the value of button_left.","","Returns the value of button_left.","Returns the value of button_middle.","","Returns the value of button_middle.","Returns the value of button_right.","","Returns the value of button_right.","Returns the value of caps_lock.","Returns the value of caps_lock.","","","","","","","","","","","","","","","","","","","","","Clean the data port output buffer, skipping the …","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","Initializes the PS/2 controller, and the first and second …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the underlying bits.","Returns the underlying bits.","Returns the underlying bits.","","Returns the underlying bits.","Returns the underlying bits.","Returns the underlying bits.","Returns true if there is content in the PS/2 Mouse’s …","Detect the KeyboardType.","Returns a reference to the keyboard attached to this PS/2 …","Returns the value of mouse_output_buffer_full. Similar to …","Returns the value of mouse_output_buffer_full.","Returns a reference to the mouse attached to this PS/2 …","Create a new reference to the mouse connected to the given …","Create a new reference to the keyboard connected to the …","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns the value of number_lock.","Returns the value of number_lock.","Returns the value of port1_clock_disabled. disables the …","Returns the value of port1_clock_disabled.","Returns the value of port1_interrupt_enabled. interrupt on …","Returns the value of port1_interrupt_enabled.","Returns the value of port1_scancode_translation_enabled. …","Returns the value of port1_scancode_translation_enabled.","Returns the value of port2_clock_disabled. disables the …","Returns the value of port2_clock_disabled.","Returns the value of port2_interrupt_enabled. interrupt on …","Returns the value of port2_interrupt_enabled.","Reads and returns the current config value from the PS/2 …","must only be called after writing the TestController …","read the correct MousePacket according to MouseId","Reads a raw scancode value from the PS/2 controller’s …","Reset the mouse.","Reset the keyboard.","Returns the value of scroll_lock.","Returns the value of scroll_lock.","often called z_movement, renamed to disambiguate","often called z_movement, renamed to disambiguate","","Sets the value of always_one to the given value.","Sets the value of always_one to the given value.","Sets the value of button_4 to the given value.","Sets the value of button_4 to the given value.","Sets the value of button_5 to the given value.","Sets the value of button_5 to the given value.","Sets the value of button_left to the given value.","Sets the value of button_left to the given value.","Sets the value of button_middle to the given value.","Sets the value of button_middle to the given value.","Sets the value of button_right to the given value.","Sets the value of button_right to the given value.","Sets the value of caps_lock to the given value.","Sets the value of caps_lock to the given value.","Set the status LEDs on the keyboard.","Set the active scancode set currently used by the keyboard.","set self.id to the highest possible MouseId by magic …","Sets the value of mouse_output_buffer_full to the given …","Sets the value of mouse_output_buffer_full to the given …","Sets the value of number_lock to the given value.","Sets the value of number_lock to the given value.","Sets the value of port1_clock_disabled to the given value.","Sets the value of port1_clock_disabled to the given value.","Sets the value of port1_interrupt_enabled to the given …","Sets the value of port1_interrupt_enabled to the given …","Sets the value of port1_scancode_translation_enabled to …","Sets the value of port1_scancode_translation_enabled to …","Sets the value of port2_clock_disabled to the given value.","Sets the value of port2_clock_disabled to the given value.","Sets the value of port2_interrupt_enabled to the given …","Sets the value of port2_interrupt_enabled to the given …","Sets the value of scroll_lock to the given value.","Sets the value of scroll_lock to the given value.","Reads the PS/2 status port.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of button_4 …","Returns a copy of the bitfield with the value of button_4 …","Returns a copy of the bitfield with the value of button_5 …","Returns a copy of the bitfield with the value of button_5 …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of caps_lock …","Returns a copy of the bitfield with the value of caps_lock …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Writes a command to the PS/2 command port.","Writes the given config value to the PS/2 controller.","x_1st_to_8th_bit and x_9th_bit should not be accessed …","","y_1st_to_8th_bit and y_9th_bit should not be accessed …",""],"i":[22,30,32,32,0,0,16,16,16,16,32,32,0,14,35,35,11,14,35,35,11,2,18,12,14,0,0,0,0,0,11,22,22,10,0,0,10,30,30,13,0,0,0,0,0,0,13,0,0,0,0,32,0,14,35,11,14,22,14,11,14,22,13,14,0,10,11,22,22,22,12,12,12,14,11,14,11,14,14,14,14,14,35,35,35,2,18,35,35,2,18,15,15,15,15,15,15,15,1,2,1,19,28,29,35,30,25,9,32,22,10,11,8,12,13,14,1,23,6,2,15,18,16,19,28,29,35,30,25,9,32,22,10,11,8,12,13,14,1,23,6,2,15,18,16,6,2,6,6,2,6,1,2,1,1,2,1,1,2,1,8,8,9,10,11,8,12,13,14,15,16,9,10,11,8,12,13,14,15,16,12,18,19,9,22,10,11,8,12,13,14,1,23,6,2,15,18,16,19,28,29,35,30,25,9,32,22,10,11,8,12,13,14,1,23,6,2,15,18,16,25,9,8,1,1,23,6,0,19,28,29,35,30,25,9,32,22,10,11,8,12,13,14,1,23,6,2,15,18,16,25,9,8,1,1,23,6,28,29,19,25,25,19,28,29,25,9,8,1,23,6,8,8,9,9,9,9,9,9,9,9,9,9,19,19,28,29,28,29,8,8,23,6,2,1,1,6,6,6,6,1,1,1,1,1,1,8,8,29,29,28,25,25,8,8,9,9,9,9,9,9,9,9,9,9,8,8,19,19,19,19,9,10,11,8,12,13,14,15,16,19,28,29,35,30,25,9,32,32,22,22,10,11,8,12,12,13,14,1,23,6,2,15,18,18,16,32,22,12,18,19,28,29,35,30,25,9,32,22,10,11,8,12,13,14,1,23,6,2,15,18,16,19,28,29,35,30,25,9,32,22,10,11,8,12,13,14,1,23,6,2,15,18,16,1,1,6,6,6,6,1,1,1,1,1,1,8,8,25,25,8,8,9,9,9,9,9,9,9,9,9,9,8,8,19,19,1,2,1,2],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1],[2,3],[1,[[5,[4]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[6],[2,7],[6,[[5,[4]]]],[6],[2,7],[6,[[5,[4]]]],[1],[2,7],[1,[[5,[4]]]],[1],[2,7],[1,[[5,[4]]]],[1],[2,7],[1,[[5,[4]]]],[8],[8,[[5,[4]]]],[9,9],[10,10],[11,11],[8,8],[12,12],[13,13],[14,14],[15,15],[16,16],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[12,12],7],[[18,18],7],[19,17],[[9,20],21],[[22,20],21],[[10,20],21],[[11,20],21],[[8,20],21],[[12,20],21],[[13,20],21],[[14,20],21],[[1,20],21],[[23,20],21],[[6,20],21],[[2,20],21],[[15,20],21],[[18,20],21],[[16,20],21],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[24,[3]]],25],[[[24,[3]]],9],[[[24,[3]]],8],[[],[[5,[4]]]],[[[24,[3]]],1],[[[24,[3]]],23],[[[24,[3]]],6],[[],[[5,[19,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25,[[24,[3]]]],[9,[[24,[3]]]],[8,[[24,[3]]]],[[],[[5,[27]]]],[1,[[24,[3]]]],[23,[[24,[3]]]],[6,[[24,[3]]]],[28,7],[29,[[5,[30,26]]]],[19,29],[25],[25,[[5,[4]]]],[19,28],[19,28],[19,29],[[],25],[[],9],[[],8],[[],1],[[],23],[[],6],[8],[8,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[19,9],[19,[[5,[17,26]]]],[28,2],[29,3],[28,[[5,[17,26]]]],[29,[[5,[17,26]]]],[8],[8,[[5,[4]]]],[23,31],[6,31],[2,31],[1,17],[1,[[5,[17,27]]]],[6,17],[6,[[5,[17,27]]]],[6,17],[6,[[5,[17,27]]]],[1,17],[1,[[5,[17,27]]]],[1,17],[1,[[5,[17,27]]]],[1,17],[1,[[5,[17,27]]]],[8,17],[8,[[5,[17,27]]]],[[29,8],[[5,[17,26]]]],[[29,12],[[5,[17,26]]]],[28,[[5,[17,26]]]],[25,17],[25,[[5,[17,27]]]],[8,17],[8,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[8,17],[8,[[5,[17,27]]]],[19,25],[19,[[5,[17,26]]]],[19,[[5,[17,26]]]],[19,[[5,[17,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[3,[[5,[32,[33,[32]]]]]],[3,[[5,[22,[33,[22]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[3,[[5,[12,[33,[12]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[3,[[5,[18,[33,[18]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[[],[[5,[32,[33,[32]]]]]],[[],[[5,[22,[33,[22]]]]]],[[],[[5,[12,[33,[12]]]]]],[[],[[5,[18,[33,[18]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[1,1],[1,[[5,[1,27]]]],[6,6],[6,[[5,[6,27]]]],[6,6],[6,[[5,[6,27]]]],[1,1],[1,[[5,[1,27]]]],[1,1],[1,[[5,[1,27]]]],[1,1],[1,[[5,[1,27]]]],[8,8],[8,[[5,[8,27]]]],[25,25],[25,[[5,[25,27]]]],[8,8],[8,[[5,[8,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[8,8],[8,[[5,[8,27]]]],[[19,35],17],[[19,9],17],[1,36],[2,36],[1,36],[2,36]],"c":[],"p":[[3,"MousePacketGeneric",0],[4,"MousePacket",0],[15,"u8"],[3,"InvalidBitPattern",450],[4,"Result",451],[3,"MousePacket4",0],[15,"bool"],[3,"LEDState",0],[3,"ControllerConfigurationByte",0],[4,"HostToKeyboardCommandOrData",0],[4,"HostToKeyboardCommand",0],[4,"ScancodeSet",0],[4,"HostToMouseCommandOrData",0],[4,"HostToMouseCommand",0],[4,"MouseSampleRate",0],[4,"MouseResolution",0],[15,"tuple"],[4,"MouseId",0],[3,"PS2Controller",0],[3,"Formatter",452],[6,"Result",452],[4,"DeviceToHostResponse",0],[3,"MousePacket3",0],[15,"array"],[3,"ControllerToHostStatus",0],[15,"str"],[3,"OutOfBounds",450],[3,"PS2Mouse",0],[3,"PS2Keyboard",0],[4,"KeyboardType",0],[15,"i8"],[4,"PortTestResult",0],[3,"TryFromPrimitiveError",453],[3,"TypeId",454],[4,"HostToControllerCommand",0],[15,"i16"]],"b":[[223,"impl-Specifier-for-MousePacketGeneric"],[224,"impl-MousePacketGeneric"],[253,"impl-Specifier-for-MousePacketGeneric"],[254,"impl-MousePacketGeneric"]]},\ +"ps2":{"doc":"Driver for the PS/2 interface, which supports legacy …","t":"NNNNDDNNNNNNENNNNNNNNNNNNEEEEENNNNEDNNNNEEDDDENEDDDNENNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Acknowledge","AncientATKeyboard","ClockLineStuckHigh","ClockLineStuckLow","ControllerConfigurationByte","ControllerToHostStatus","Count1PerMm","Count2PerMm","Count4PerMm","Count8PerMm","DataLineStuckHigh","DataLineStuckLow","DeviceToHostResponse","DisableDataReporting","DisablePort1","DisablePort2","DisableScanning","EnableDataReporting","EnablePort1","EnablePort2","EnableScanning","Four","Four","Get","GetDeviceID","HostToControllerCommand","HostToKeyboardCommand","HostToKeyboardCommandOrData","HostToMouseCommand","HostToMouseCommandOrData","IdentifyKeyboard","KeyDetectionErrorOrInternalBufferOverrun1","KeyDetectionErrorOrInternalBufferOverrun2","KeyboardCommand","KeyboardType","LEDState","LEDState","MF2Keyboard","MF2KeyboardWithPSControllerTranslator","MouseCommand","MouseId","MousePacket","MousePacket3","MousePacket4","MousePacketGeneric","MouseResolution","MouseResolution","MouseSampleRate","PS2Controller","PS2Keyboard","PS2Mouse","Passed","PortTestResult","ReadData","ReadFromInternalRAMByte0","ResendByte","ResendByte","ResendCommand","Reset","ResetAndStartSelfTest","ResetWrapMode","ResponseToEcho","SampleRate","SampleRate","ScancodeSet","ScancodeSet","ScancodeSet","SelfTestFailed1","SelfTestFailed2","SelfTestPassed","Set1","Set2","Set3","SetDefaults","SetLEDStatus","SetRemoteMode","SetRepeatRateAndDelay","SetResolution","SetScaling","SetStreamMode","SetWrapMode","StatusRequest","TestController","TestPort1","TestPort2","Three","Three","WriteByteToPort2InputBuffer","WriteToInternalRAMByte0","Zero","Zero","_10","_100","_20","_200","_40","_60","_80","always_one","always_one","always_one_or_err","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","button_4","button_4","button_4_or_err","button_5","button_5","button_5_or_err","button_left","button_left","button_left_or_err","button_middle","button_middle","button_middle_or_err","button_right","button_right","button_right_or_err","caps_lock","caps_lock_or_err","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","eq","eq","flush_output_buffer","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","init","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_bytes","into_bytes","into_bytes","into_bytes","into_bytes","into_bytes","into_bytes","is_output_buffer_full","keyboard_detect","keyboard_ref","mouse_output_buffer_full","mouse_output_buffer_full_or_err","mouse_ref","new","new","new","new","new","new","new","new","number_lock","number_lock_or_err","port1_clock_disabled","port1_clock_disabled_or_err","port1_interrupt_enabled","port1_interrupt_enabled_or_err","port1_scancode_translation_enabled","port1_scancode_translation_enabled_or_err","port2_clock_disabled","port2_clock_disabled_or_err","port2_interrupt_enabled","port2_interrupt_enabled_or_err","read_config","read_controller_test_result","read_mouse_packet","read_scancode","reset","reset","scroll_lock","scroll_lock_or_err","scroll_movement","scroll_movement","scroll_movement","set_always_one","set_always_one_checked","set_button_4","set_button_4_checked","set_button_5","set_button_5_checked","set_button_left","set_button_left_checked","set_button_middle","set_button_middle_checked","set_button_right","set_button_right_checked","set_caps_lock","set_caps_lock_checked","set_keyboard_led","set_keyboard_scancode_set","set_mouse_id","set_mouse_output_buffer_full","set_mouse_output_buffer_full_checked","set_number_lock","set_number_lock_checked","set_port1_clock_disabled","set_port1_clock_disabled_checked","set_port1_interrupt_enabled","set_port1_interrupt_enabled_checked","set_port1_scancode_translation_enabled","set_port1_scancode_translation_enabled_checked","set_port2_clock_disabled","set_port2_clock_disabled_checked","set_port2_interrupt_enabled","set_port2_interrupt_enabled_checked","set_scroll_lock","set_scroll_lock_checked","status_register","test","test_port1","test_port2","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","with_always_one","with_always_one_checked","with_button_4","with_button_4_checked","with_button_5","with_button_5_checked","with_button_left","with_button_left_checked","with_button_middle","with_button_middle_checked","with_button_right","with_button_right_checked","with_caps_lock","with_caps_lock_checked","with_mouse_output_buffer_full","with_mouse_output_buffer_full_checked","with_number_lock","with_number_lock_checked","with_port1_clock_disabled","with_port1_clock_disabled_checked","with_port1_interrupt_enabled","with_port1_interrupt_enabled_checked","with_port1_scancode_translation_enabled","with_port1_scancode_translation_enabled_checked","with_port2_clock_disabled","with_port2_clock_disabled_checked","with_port2_interrupt_enabled","with_port2_interrupt_enabled_checked","with_scroll_lock","with_scroll_lock_checked","write_command","write_config","x_movement","x_movement","y_movement","y_movement"],"q":[[0,"ps2"],[450,"modular_bitfield::error"],[451,"core::result"],[452,"core::fmt"],[453,"core::fmt"],[454,"num_enum"],[455,"core::any"]],"d":["","","","","Configuration values used to enable or disable features of …","","","","","","","","","","sets ControllerConfigurationByte port1_clock_disabled","sets ControllerConfigurationByte port2_clock_disabled","might also restore default parameters","","clears ControllerConfigurationByte port1_clock_disabled","clears ControllerConfigurationByte port2_clock_disabled","","","the mouse has scroll-movement, fourth and fifth buttons","","","Commands that can be sent to the PS/2 Controller.","","","","","","","","","","","","","","","See MousePacket and its enum variants for further …","","","","","","","","An initialized PS/2 controller that can be used to …","A reference to the PS/2 Keyboard connected to the PS/2 …","A reference to the PS/2 Mouse connected to the PS/2 …","","","","returns ControllerConfigurationByte","","","","","","","","","","","","","sent after “0xFF (reset)” command or keyboard power up","sent after “0xFF (reset)” command or keyboard power up","sent after “0xFF (reset)” command or keyboard power up","","","","","","","also called typematic","set MouseResolution","either to 1 or 2","","","","see PS2Controller::test","returns PortTestResult","returns PortTestResult","","the mouse has scroll-movement","sends next byte to the second PS/2 port","sets ControllerConfigurationByte","","the mouse has no scroll-movement","","","","","","","","Returns the value of always_one.","","Returns the value of always_one.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the value of button_4.","","Returns the value of button_4.","Returns the value of button_5.","","Returns the value of button_5.","Returns the value of button_left.","","Returns the value of button_left.","Returns the value of button_middle.","","Returns the value of button_middle.","Returns the value of button_right.","","Returns the value of button_right.","Returns the value of caps_lock.","Returns the value of caps_lock.","","","","","","","","","","","","","","","","","","","","","Clean the data port output buffer, skipping the …","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","Converts the given bytes directly into the bitfield struct.","Initializes the PS/2 controller, and the first and second …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the underlying bits.","Returns the underlying bits.","Returns the underlying bits.","","Returns the underlying bits.","Returns the underlying bits.","Returns the underlying bits.","Returns true if there is content in the PS/2 Mouse’s …","Detect the KeyboardType.","Returns a reference to the keyboard attached to this PS/2 …","Returns the value of mouse_output_buffer_full. Similar to …","Returns the value of mouse_output_buffer_full.","Returns a reference to the mouse attached to this PS/2 …","Create a new reference to the mouse connected to the given …","Create a new reference to the keyboard connected to the …","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns an instance with zero initialized data.","Returns the value of number_lock.","Returns the value of number_lock.","Returns the value of port1_clock_disabled. disables the …","Returns the value of port1_clock_disabled.","Returns the value of port1_interrupt_enabled. interrupt on …","Returns the value of port1_interrupt_enabled.","Returns the value of port1_scancode_translation_enabled. …","Returns the value of port1_scancode_translation_enabled.","Returns the value of port2_clock_disabled. disables the …","Returns the value of port2_clock_disabled.","Returns the value of port2_interrupt_enabled. interrupt on …","Returns the value of port2_interrupt_enabled.","Reads and returns the current config value from the PS/2 …","must only be called after writing the TestController …","read the correct MousePacket according to MouseId","Reads a raw scancode value from the PS/2 controller’s …","Reset the mouse.","Reset the keyboard.","Returns the value of scroll_lock.","Returns the value of scroll_lock.","often called z_movement, renamed to disambiguate","often called z_movement, renamed to disambiguate","","Sets the value of always_one to the given value.","Sets the value of always_one to the given value.","Sets the value of button_4 to the given value.","Sets the value of button_4 to the given value.","Sets the value of button_5 to the given value.","Sets the value of button_5 to the given value.","Sets the value of button_left to the given value.","Sets the value of button_left to the given value.","Sets the value of button_middle to the given value.","Sets the value of button_middle to the given value.","Sets the value of button_right to the given value.","Sets the value of button_right to the given value.","Sets the value of caps_lock to the given value.","Sets the value of caps_lock to the given value.","Set the status LEDs on the keyboard.","Set the active scancode set currently used by the keyboard.","set self.id to the highest possible MouseId by magic …","Sets the value of mouse_output_buffer_full to the given …","Sets the value of mouse_output_buffer_full to the given …","Sets the value of number_lock to the given value.","Sets the value of number_lock to the given value.","Sets the value of port1_clock_disabled to the given value.","Sets the value of port1_clock_disabled to the given value.","Sets the value of port1_interrupt_enabled to the given …","Sets the value of port1_interrupt_enabled to the given …","Sets the value of port1_scancode_translation_enabled to …","Sets the value of port1_scancode_translation_enabled to …","Sets the value of port2_clock_disabled to the given value.","Sets the value of port2_clock_disabled to the given value.","Sets the value of port2_interrupt_enabled to the given …","Sets the value of port2_interrupt_enabled to the given …","Sets the value of scroll_lock to the given value.","Sets the value of scroll_lock to the given value.","Reads the PS/2 status port.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of button_4 …","Returns a copy of the bitfield with the value of button_4 …","Returns a copy of the bitfield with the value of button_5 …","Returns a copy of the bitfield with the value of button_5 …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of caps_lock …","Returns a copy of the bitfield with the value of caps_lock …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Returns a copy of the bitfield with the value of …","Writes a command to the PS/2 command port.","Writes the given config value to the PS/2 controller.","x_1st_to_8th_bit and x_9th_bit should not be accessed …","","y_1st_to_8th_bit and y_9th_bit should not be accessed …",""],"i":[22,30,33,33,0,0,16,16,16,16,33,33,0,14,36,36,11,14,36,36,11,2,18,12,14,0,0,0,0,0,11,22,22,10,0,0,10,30,30,13,0,0,0,0,0,0,13,0,0,0,0,33,0,14,36,11,14,22,14,11,14,22,13,14,0,10,11,22,22,22,12,12,12,14,11,14,11,14,14,14,14,14,36,36,36,2,18,36,36,2,18,15,15,15,15,15,15,15,1,2,1,19,28,29,36,30,25,9,33,22,10,11,8,12,13,14,1,23,6,2,15,18,16,19,28,29,36,30,25,9,33,22,10,11,8,12,13,14,1,23,6,2,15,18,16,6,2,6,6,2,6,1,2,1,1,2,1,1,2,1,8,8,9,10,11,8,12,13,14,15,16,9,10,11,8,12,13,14,15,16,12,18,19,9,22,10,11,8,12,13,14,1,23,6,2,15,18,16,19,28,29,36,30,25,9,33,22,10,11,8,12,13,14,1,23,6,2,15,18,16,25,9,8,1,1,23,6,0,19,28,29,36,30,25,9,33,22,10,11,8,12,13,14,1,23,6,2,15,18,16,25,9,8,1,1,23,6,28,29,19,25,25,19,28,29,25,9,8,1,23,6,8,8,9,9,9,9,9,9,9,9,9,9,19,19,28,29,28,29,8,8,23,6,2,1,1,6,6,6,6,1,1,1,1,1,1,8,8,29,29,28,25,25,8,8,9,9,9,9,9,9,9,9,9,9,8,8,19,19,19,19,9,10,11,8,12,13,14,15,16,19,28,29,36,30,25,9,33,33,22,22,10,11,8,12,12,13,14,1,23,6,2,15,18,18,16,33,22,12,18,19,28,29,36,30,25,9,33,22,10,11,8,12,13,14,1,23,6,2,15,18,16,19,28,29,36,30,25,9,33,22,10,11,8,12,13,14,1,23,6,2,15,18,16,1,1,6,6,6,6,1,1,1,1,1,1,8,8,25,25,8,8,9,9,9,9,9,9,9,9,9,9,8,8,19,19,1,2,1,2],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1],[2,3],[1,[[5,[4]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[6],[2,7],[6,[[5,[4]]]],[6],[2,7],[6,[[5,[4]]]],[1],[2,7],[1,[[5,[4]]]],[1],[2,7],[1,[[5,[4]]]],[1],[2,7],[1,[[5,[4]]]],[8],[8,[[5,[4]]]],[9,9],[10,10],[11,11],[8,8],[12,12],[13,13],[14,14],[15,15],[16,16],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[-1,-2],17,[],[]],[[12,12],7],[[18,18],7],[19,17],[[9,20],21],[[22,20],21],[[10,20],21],[[11,20],21],[[8,20],21],[[12,20],21],[[13,20],21],[[14,20],21],[[1,20],21],[[23,20],21],[[6,20],21],[[2,20],21],[[15,20],21],[[18,20],21],[[16,20],21],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[24,[3]]],25],[[[24,[3]]],9],[[[24,[3]]],8],[[],[[5,[4]]]],[[[24,[3]]],1],[[[24,[3]]],23],[[[24,[3]]],6],[[],[[5,[19,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25,[[24,[3]]]],[9,[[24,[3]]]],[8,[[24,[3]]]],[[],[[5,[27]]]],[1,[[24,[3]]]],[23,[[24,[3]]]],[6,[[24,[3]]]],[28,7],[29,[[5,[30,26]]]],[19,[[31,[29]]]],[25],[25,[[5,[4]]]],[19,[[31,[28]]]],[19,28],[19,29],[[],25],[[],9],[[],8],[[],1],[[],23],[[],6],[8],[8,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[9],[9,[[5,[4]]]],[19,9],[19,[[5,[17,26]]]],[28,2],[29,3],[28,[[5,[17,26]]]],[29,[[5,[17,26]]]],[8],[8,[[5,[4]]]],[23,32],[6,32],[2,32],[1,17],[1,[[5,[17,27]]]],[6,17],[6,[[5,[17,27]]]],[6,17],[6,[[5,[17,27]]]],[1,17],[1,[[5,[17,27]]]],[1,17],[1,[[5,[17,27]]]],[1,17],[1,[[5,[17,27]]]],[8,17],[8,[[5,[17,27]]]],[[29,8],[[5,[17,26]]]],[[29,12],[[5,[17,26]]]],[28,[[5,[17,26]]]],[25,17],[25,[[5,[17,27]]]],[8,17],[8,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[9,17],[9,[[5,[17,27]]]],[8,17],[8,[[5,[17,27]]]],[19,25],[19,[[5,[17,26]]]],[19,[[5,[17,26]]]],[19,[[5,[17,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[3,[[5,[33,[34,[33]]]]]],[3,[[5,[22,[34,[22]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[3,[[5,[12,[34,[12]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[3,[[5,[18,[34,[18]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[[],[[5,[33,[34,[33]]]]]],[[],[[5,[22,[34,[22]]]]]],[[],[[5,[12,[34,[12]]]]]],[[],[[5,[18,[34,[18]]]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[-1,35,[]],[1,1],[1,[[5,[1,27]]]],[6,6],[6,[[5,[6,27]]]],[6,6],[6,[[5,[6,27]]]],[1,1],[1,[[5,[1,27]]]],[1,1],[1,[[5,[1,27]]]],[1,1],[1,[[5,[1,27]]]],[8,8],[8,[[5,[8,27]]]],[25,25],[25,[[5,[25,27]]]],[8,8],[8,[[5,[8,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[9,9],[9,[[5,[9,27]]]],[8,8],[8,[[5,[8,27]]]],[[19,36],17],[[19,9],17],[1,37],[2,37],[1,37],[2,37]],"c":[],"p":[[3,"MousePacketGeneric",0],[4,"MousePacket",0],[15,"u8"],[3,"InvalidBitPattern",450],[4,"Result",451],[3,"MousePacket4",0],[15,"bool"],[3,"LEDState",0],[3,"ControllerConfigurationByte",0],[4,"HostToKeyboardCommandOrData",0],[4,"HostToKeyboardCommand",0],[4,"ScancodeSet",0],[4,"HostToMouseCommandOrData",0],[4,"HostToMouseCommand",0],[4,"MouseSampleRate",0],[4,"MouseResolution",0],[15,"tuple"],[4,"MouseId",0],[3,"PS2Controller",0],[3,"Formatter",452],[6,"Result",452],[4,"DeviceToHostResponse",0],[3,"MousePacket3",0],[15,"array"],[3,"ControllerToHostStatus",0],[15,"str"],[3,"OutOfBounds",450],[3,"PS2Mouse",0],[3,"PS2Keyboard",0],[4,"KeyboardType",0],[4,"Option",453],[15,"i8"],[4,"PortTestResult",0],[3,"TryFromPrimitiveError",454],[3,"TypeId",455],[4,"HostToControllerCommand",0],[15,"i16"]],"b":[[223,"impl-Specifier-for-MousePacketGeneric"],[224,"impl-MousePacketGeneric"],[253,"impl-Specifier-for-MousePacketGeneric"],[254,"impl-MousePacketGeneric"]]},\ "pte_flags":{"doc":"This crate defines the structure of page table entry (PTE) …","t":"SSSSSSSSSSSSSSSSSSSSSSSSRDDDDSSSSSSSSSSSSSSSSSSSSSSSSSSSSLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["ACCESSED","ACCESSED","ACCESSED","CACHE_DISABLE","DEVICE_MEMORY","DEVICE_MEMORY","DEVICE_MEMORY","DIRTY","DIRTY","DIRTY","EXCLUSIVE","EXCLUSIVE","EXCLUSIVE","HUGE_PAGE","MASKED_BITS_FOR_CONVERSION","NORMAL_MEMORY","NOT_EXECUTABLE","NOT_EXECUTABLE","NOT_EXECUTABLE","OUTER_SHAREABLE","PAGE_DESCRIPTOR","PAT_BIT0","PAT_BIT1","PAT_BIT2_FOR_P1","PTE_FRAME_MASK","PteFlags","PteFlagsAarch64","PteFlagsArch","PteFlagsX86_64","READ_ONLY","VALID","VALID","VALID","WRITABLE","WRITABLE","WRITE_THROUGH","_CONTIGUOUS","_GLOBAL","_GLOBAL","_GUARDED_PAGE","_INNER_SHAREABLE","_MAIR_INDEX_0","_MAIR_INDEX_1","_MAIR_INDEX_2","_MAIR_INDEX_3","_MAIR_INDEX_4","_MAIR_INDEX_5","_MAIR_INDEX_6","_MAIR_INDEX_7","_NON_SECURE_ACCESS","_NON_SHAREABLE","_NOT_GLOBAL","_PRIV_EXEC_NEVER","_USER_ACCESSIBLE","_USER_ACCESSIBLE","_USER_ACCESSIBLE","_USER_EXEC_NEVER","accessed","accessed","accessed","adjust_for_higher_level_pte","adjust_for_higher_level_pte","all","all","all","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","complement","complement","complement","contains","contains","contains","default","default","default","device_memory","device_memory","device_memory","difference","difference","difference","dirty","dirty","dirty","empty","empty","empty","eq","eq","eq","exclusive","exclusive","exclusive","executable","executable","executable","extend","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_iter","from_iter","from_iter","from_name","from_name","from_name","get_pat_index","insert","insert","insert","intersection","intersection","intersection","intersects","intersects","intersects","into","into","into","into_iter","into_iter","into_iter","is_accessed","is_accessed","is_accessed","is_all","is_all","is_all","is_device_memory","is_device_memory","is_device_memory","is_dirty","is_dirty","is_dirty","is_empty","is_empty","is_empty","is_exclusive","is_exclusive","is_exclusive","is_executable","is_executable","is_executable","is_huge","is_page_descriptor","is_valid","is_valid","is_valid","is_writable","is_writable","is_writable","iter","iter","iter","iter_names","iter_names","iter_names","new","new","new","not","not","not","page_descriptor","pat_index","remove","remove","remove","set","set","set","sub","sub","sub","sub_assign","sub_assign","sub_assign","symmetric_difference","symmetric_difference","symmetric_difference","toggle","toggle","toggle","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","union","union","union","valid","valid","valid","writable","writable","writable"],"q":[[0,"pte_flags"],[266,"core::iter::traits::collect"],[267,"core::fmt"],[268,"core::fmt"],[269,"bitflags::iter"],[270,"bitflags::iter"],[271,"core::any"]],"d":["The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","If set, this page’s content is never cached, neither for …","If set, this page maps device memory, which is …","This page maps device memory, i.e., memory-mapped I/O …","An alias for Self::CACHE_DISABLE in order to ease …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","Note: code that invokes memory management functions in …","See PteFlags::EXCLUSIVE. We use bit 55 because it is …","See PteFlags::EXCLUSIVE. We use bit 55 because it is …","If set, this page table entry represents a “huge” …","The mask of bit ranges that cannot be handled by toggling, …","This page maps “normal” memory, i.e., non-device …","If set, this page is not executable.If not set, this page …","If set, this page is not executable.If not set, this page …","If set, this page is not executable.If not set, this page …","Indicates that multiple CPUs from multiple clusters may …","If set, this represents a page descriptor.If not set, this …","","","(For P1-level (lowest level) page tables ONLY): If the …","A mask for the bits of a page table entry that contain the …","Common, architecture-independent flags for a page table …","Page table entry (PTE) flags on aarch64.","Page table entry (PTE) flags on x86_64.","Page table entry (PTE) flags on x86_64.","If set, this page is read-only.If not set, this page is …","If set, this page is currently “present” in memory. If …","If set, this page is currently “present” in memory. If …","If set, this page is currently “present” in memory. If …","If set, this page is writable.If not set, this page is …","If set, this page is writable.If not set, this page is …","If set, writes to this page go directly to memory.It not …","If set, this translation table entry is part of a set that …","If set, this page is mapped identically across all address …","If set, this page is mapped identically across all address …","If set, this page is considered a “Guarded Page”, …","Multiple cores from the same cluster can access this page. …","Indicates the page’s cacheability is described by MAIR …","Indicates the page’s cacheability is described by MAIR …","Indicates the page’s cacheability is described by MAIR …","Indicates the page’s cacheability is described by MAIR …","Indicates the page’s cacheability is described by MAIR …","Indicates the page’s cacheability is described by MAIR …","Indicates the page’s cacheability is described by MAIR …","Indicates the page’s cacheability is described by MAIR …","If set, this page is accessible in both Secure and …","Indicates that only a single CPU core may access this page.","If set, this page is mapped into only one or less than all …","If set, this page is not executable by privileged levels …","If set, userspace (unprivileged mode) can access this page.…","If set, userspace (unprivileged mode) can access this page.…","If set, userspace (ring 3) can access this page.If not …","If set, this page is not executable by unprivileged levels …","Returns a copy of this PteFlags with the ACCESSED bit set …","Returns a copy of this PteFlagsAarch64 with the ACCESSED …","Returns a copy of this PteFlagsX86_64 with the ACCESSED …","Returns a copy of this PteFlagsAarch64 with its flags …","Returns a copy of this PteFlagsX86_64 with its flags …","Get a flags value with all known bits set.","Get a flags value with all known bits set.","Get a flags value with all known bits set.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","","Get the underlying bits value.","Get the underlying bits value.","","","Get the underlying bits value.","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","","","","","","","","","","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","Whether all set bits in a source flags value are also set …","Whether all set bits in a source flags value are also set …","Whether all set bits in a source flags value are also set …","","","","Returns a copy of this PteFlags with the DEVICE_MEMORY bit …","Returns a copy of this PteFlagsAarch64 with the …","Returns a copy of this PteFlagsX86_64 with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","Returns a copy of this PteFlags with the DIRTY bit set or …","Returns a copy of this PteFlagsAarch64 with the DIRTY bit …","Returns a copy of this PteFlagsX86_64 with the DIRTY bit …","Get a flags value with all bits unset.","Get a flags value with all bits unset.","Get a flags value with all bits unset.","","","","Returns a copy of this PteFlags with the EXCLUSIVE bit set …","Returns a copy of this PteFlagsAarch64 with the EXCLUSIVE …","Returns a copy of this PteFlagsX86_64 with the EXCLUSIVE …","Returns a copy of this PteFlags with the NOT_EXECUTABLE …","Returns a copy of this PteFlagsAarch64 with the …","Returns a copy of this PteFlagsX86_64 with the …","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","","","","","","","","","","","","","","","","This conversion clears the PAGE_DESCRIPTOR bit, which is …","Returns the argument unchanged.","","When converting from PteFlags to PteFlagsAarch64, some …","Returns the argument unchanged.","","Returns the argument unchanged.","Convert from a bits value.","Convert from a bits value.","Convert from a bits value.","","Convert from a bits value exactly.","Convert from a bits value exactly.","","Convert from a bits value exactly.","","Convert from a bits value, unsetting any unknown bits.","Convert from a bits value, unsetting any unknown bits.","Convert from a bits value, unsetting any unknown bits.","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","Get a flags value with the bits of a flag with the given …","Get a flags value with the bits of a flag with the given …","Get a flags value with the bits of a flag with the given …","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","Whether any set bits in a source flags value are also set …","Whether any set bits in a source flags value are also set …","Whether any set bits in a source flags value are also set …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","Whether all known bits in this flags value are set.","Whether all known bits in this flags value are set.","Whether all known bits in this flags value are set.","","","","","","","Whether all bits in this flags value are unset.","Whether all bits in this flags value are unset.","Whether all bits in this flags value are unset.","","","","","","","","","","","","","","","Yield a set of contained flags values.","Yield a set of contained flags values.","Yield a set of contained flags values.","Yield a set of contained named flags values.","Yield a set of contained named flags values.","Yield a set of contained named flags values.","Returns a new PteFlags with the default value, in which:","Returns a new PteFlagsAarch64 with the default value, in …","Returns a new PteFlagsX86_64 with the default value, in …","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","Returns a copy of this PteFlagsAarch64 with the …","Returns a copy of this PteFlagsX86_64 with the PAT index …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","Call insert when value is true or remove when value is …","Call insert when value is true or remove when value is …","Call insert when value is true or remove when value is …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","","","","","","","","","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","Returns a copy of this PteFlags with the VALID bit set or …","Returns a copy of this PteFlagsAarch64 with the VALID bit …","Returns a copy of this PteFlagsX86_64 with the VALID bit …","Returns a copy of this PteFlags with the WRITABLE bit set …","Returns a copy of this PteFlagsAarch64 with the WRITABLE …","Returns a copy of this PteFlagsX86_64 with the WRITABLE …"],"i":[1,3,4,4,1,3,4,1,3,4,1,3,4,4,3,3,1,3,4,3,3,4,4,4,0,0,0,0,0,3,1,3,4,1,4,4,3,1,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,4,3,1,3,4,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,1,3,3,4,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,1,1,1,1,3,3,3,3,3,4,4,4,4,4,1,1,1,3,3,4,4,1,3,4,1,1,3,3,4,4,1,3,4,1,3,4,1,3,4,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,4,3,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4,1,3,4],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[3,2],3],[[4,2],4],[3,3],[4,4],[[],1],[[],3],[[],4],[[1,1],1],[[3,3],3],[[4,4],4],[[1,1],5],[[3,3],5],[[4,4],5],[[1,1],1],[[3,3],3],[[4,4],4],[[1,1],5],[[3,3],5],[[4,4],5],[1,6],[1,6],[3,6],[3,6],[4,6],[4,6],[[1,1],1],[[3,3],3],[[4,4],4],[[1,1],5],[[3,3],5],[[4,4],5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[3,3],[4,4],[1,1],[3,3],[4,4],[[1,1],2],[[3,3],2],[[4,4],2],[[],1],[[],3],[[],4],[[1,2],1],[[3,2],3],[[4,2],4],[[1,1],1],[[3,3],3],[[4,4],4],[[1,2],1],[[3,2],3],[[4,2],4],[[],1],[[],3],[[],4],[[1,1],2],[[3,3],2],[[4,4],2],[[1,2],1],[[3,2],3],[[4,2],4],[[1,2],1],[[3,2],3],[[4,2],4],[[1,-1],5,7],[[3,-1],5,7],[[4,-1],5,7],[[1,8],9],[[1,8],9],[[1,8],9],[[1,8],9],[[1,8],9],[[3,8],9],[[3,8],9],[[3,8],9],[[3,8],9],[[3,8],9],[[4,8],9],[[4,8],9],[[4,8],9],[[4,8],9],[[4,8],9],[3,1],[-1,-1,[]],[4,1],[1,3],[-1,-1,[]],[1,4],[-1,-1,[]],[6,[[10,[1]]]],[6,[[10,[3]]]],[6,[[10,[4]]]],[6,1],[6,1],[6,3],[6,3],[6,4],[6,4],[6,1],[6,3],[6,4],[-1,1,7],[-1,3,7],[-1,4,7],[11,[[10,[1]]]],[11,[[10,[3]]]],[11,[[10,[4]]]],[4,12],[[1,1],5],[[3,3],5],[[4,4],5],[[1,1],1],[[3,3],3],[[4,4],4],[[1,1],2],[[3,3],2],[[4,4],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1],[3],[4],[1,2],[3,2],[4,2],[1,2],[3,2],[4,2],[1,2],[3,2],[4,2],[1,2],[3,2],[4,2],[1,2],[3,2],[4,2],[1,2],[3,2],[4,2],[1,2],[3,2],[4,2],[4,2],[3,2],[1,2],[3,2],[4,2],[1,2],[3,2],[4,2],[1,[[13,[1]]]],[3,[[13,[3]]]],[4,[[13,[4]]]],[1,[[14,[1]]]],[3,[[14,[3]]]],[4,[[14,[4]]]],[[],1],[[],3],[[],4],[1,1],[3,3],[4,4],[[3,2],3],[[4,12],4],[[1,1],5],[[3,3],5],[[4,4],5],[[1,1,2],5],[[3,3,2],5],[[4,4,2],5],[[1,1],1],[[3,3],3],[[4,4],4],[[1,1],5],[[3,3],5],[[4,4],5],[[1,1],1],[[3,3],3],[[4,4],4],[[1,1],5],[[3,3],5],[[4,4],5],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,16,[]],[-1,16,[]],[-1,16,[]],[[1,1],1],[[3,3],3],[[4,4],4],[[1,2],1],[[3,2],3],[[4,2],4],[[1,2],1],[[3,2],3],[[4,2],4]],"c":[],"p":[[3,"PteFlags",0],[15,"bool"],[3,"PteFlagsAarch64",0],[3,"PteFlagsX86_64",0],[15,"tuple"],[15,"u64"],[8,"IntoIterator",266],[3,"Formatter",267],[6,"Result",267],[4,"Option",268],[15,"str"],[15,"u8"],[3,"Iter",269],[3,"IterNames",269],[4,"Result",270],[3,"TypeId",271]],"b":[[77,"impl-Flags-for-PteFlags"],[78,"impl-PteFlags"],[79,"impl-PteFlagsAarch64"],[80,"impl-Flags-for-PteFlagsAarch64"],[81,"impl-Flags-for-PteFlagsX86_64"],[82,"impl-PteFlagsX86_64"],[131,"impl-Debug-for-PteFlags"],[132,"impl-Binary-for-PteFlags"],[133,"impl-LowerHex-for-PteFlags"],[134,"impl-UpperHex-for-PteFlags"],[135,"impl-Octal-for-PteFlags"],[136,"impl-Octal-for-PteFlagsAarch64"],[137,"impl-Debug-for-PteFlagsAarch64"],[138,"impl-LowerHex-for-PteFlagsAarch64"],[139,"impl-Binary-for-PteFlagsAarch64"],[140,"impl-UpperHex-for-PteFlagsAarch64"],[141,"impl-LowerHex-for-PteFlagsX86_64"],[142,"impl-Octal-for-PteFlagsX86_64"],[143,"impl-Binary-for-PteFlagsX86_64"],[144,"impl-UpperHex-for-PteFlagsX86_64"],[145,"impl-Debug-for-PteFlagsX86_64"],[146,"impl-From%3CPteFlagsAarch64%3E-for-PteFlags"],[148,"impl-From%3CPteFlagsX86_64%3E-for-PteFlags"],[156,"impl-Flags-for-PteFlags"],[157,"impl-PteFlags"],[158,"impl-PteFlagsAarch64"],[159,"impl-Flags-for-PteFlagsAarch64"],[160,"impl-PteFlagsX86_64"],[161,"impl-Flags-for-PteFlagsX86_64"]],"a":{"block":[209,228],"block descriptor":[209,228],"cache":[107,108,109,193,194,195],"cacheable":[107,108,109,193,194,195],"no_exec":[125,126,127,205,206,207],"non-cacheable":[107,108,109,193,194,195],"page attribute table":[171,229],"pat":[171,229],"present":[210,211,212,260,261,262],"read_only":[213,214,215,263,264,265],"slot":[171,229]}},\ "random":{"doc":"A cryptographically secure source of randomness.","t":"SDSLLLFLLLLLFLFFLLLLLL","n":["CUSTOM_START","Error","INTERNAL_START","borrow","borrow_mut","code","fill_bytes","fmt","fmt","from","from","from","init_rng","into","next_u32","next_u64","raw_os_error","to_string","try_from","try_into","type_id","vzip"],"q":[[0,"random"],[22,"core::num::nonzero"],[23,"core::option"],[24,"core::fmt"],[25,"core::fmt"],[26,"rdrand::errors"],[27,"rand_core"],[28,"alloc::string"],[29,"core::any"]],"d":["Codes at or above this point can be used by users to …","Error type of random number generators","Codes below this point represent OS Errors (i.e. positive …","","","Retrieve the error code, if any.","Fills dest with random data.","","","","","Returns the argument unchanged.","Initialises a T RNG.","Calls U::from(self).","Returns a random u32.","Returns a random u64.","Extract the raw OS error code (if this error came from the …","","","","",""],"i":[1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1],"f":[0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[1,[[3,[2]]]],[[[5,[4]]],6],[[1,7],[[9,[6,8]]]],[[1,7],[[9,[6,8]]]],[2,1],[10,1],[-1,-1,[]],[[],[[9,[-1,1]]],11],[-1,-2,[],[]],[[],12],[[],13],[1,[[3,[14]]]],[-1,15,[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,16,[]],[-1,-2,[],[]]],"c":[],"p":[[3,"Error",0],[3,"NonZeroU32",22],[4,"Option",23],[15,"u8"],[15,"slice"],[15,"tuple"],[3,"Formatter",24],[3,"Error",24],[4,"Result",25],[4,"ErrorCode",26],[8,"SeedableRng",27],[15,"u32"],[15,"u64"],[15,"i32"],[3,"String",28],[3,"TypeId",29]],"b":[[7,"impl-Display-for-Error"],[8,"impl-Debug-for-Error"],[9,"impl-From%3CNonZeroU32%3E-for-Error"],[10,"impl-From%3CErrorCode%3E-for-Error"]]},\ "range_inclusive":{"doc":"A RangeInclusive implementation that offers a separate …","t":"DDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["RangeInclusive","RangeInclusiveIterator","borrow","borrow","borrow_mut","borrow_mut","clone","contains","end","end_bound","eq","fmt","from","from","hash","into","into","into_inner","into_iter","into_iter","is_empty","iter","len","new","next","next_back","start","start_bound","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"range_inclusive"],[34,"core::clone"],[35,"core::cmp"],[36,"core::marker"],[37,"core::ops::range"],[38,"core::cmp"],[39,"core::fmt"],[40,"core::hash"],[41,"core::option"],[42,"core::result"],[43,"core::any"]],"d":["A range bounded inclusively below and above (start..=end).","An iterator for the RangeInclusive type.","","","","","","Returns true if item is contained in the range.","Returns the upper bound of the range (inclusive).","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Destructures the RangeInclusive into (lower bound, upper …","","","Returns true if the range contains no items.","Returns an iterator with the same start and end values as …","","Creates a new inclusive range.","","","Returns the lower bound of the range (inclusive).","","","","","","",""],"i":[0,0,14,1,14,1,1,1,1,1,1,1,14,1,1,14,1,1,14,1,1,1,14,1,14,14,1,1,14,1,14,1,14,1],"f":[0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],[[1,[-1]]],[2,2,3]],[[[1,[-1]],-2],4,[],[5,[3,[-1]]]],[[[1,[-1]]],-1,[2,3]],[[[1,[-1]]],[[6,[-1]]],[2,3]],[[[1,[-1]],[1,[-1]]],4,[7,2,3]],[[[1,[-1]],8],9,[2,3,10]],[-1,-1,[]],[-1,-1,[]],[[[1,[-1]],-2],11,[12,2,3],13],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],[[11,[-1,-1]]],[2,3]],[-1,-2,[],[]],[[[1,[-1]]],[[14,[-1]]],[2,3,15]],[[[1,[-1]]],4,[2,3]],[[[1,[-1]]],[[14,[-1]]],[2,3]],[[[14,[-1]]],16,15],[[-1,-1],[[1,[-1]]],[2,3]],[[[14,[-1]]],17,15],[[[14,[-1]]],17,15],[[[1,[-1]]],-1,[2,3]],[[[1,[-1]]],[[6,[-1]]],[2,3]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,19,[]],[-1,19,[]]],"c":[],"p":[[3,"RangeInclusive",0],[8,"Clone",34],[8,"PartialOrd",35],[15,"bool"],[8,"Sized",36],[4,"Bound",37],[8,"PartialEq",35],[3,"Formatter",38],[6,"Result",38],[8,"Debug",38],[15,"tuple"],[8,"Hash",39],[8,"Hasher",39],[3,"RangeInclusiveIterator",0],[8,"Step",40],[15,"usize"],[4,"Option",41],[4,"Result",42],[3,"TypeId",43]],"b":[]},\ @@ -135,7 +134,7 @@ var searchIndex = JSON.parse('{\ "scheduler_priority":{"doc":"This scheduler implements a priority algorithm.","t":"DLLLLLLLLLLLLLLLLL","n":["Scheduler","add","as_priority_scheduler","borrow","borrow_mut","busyness","drain","from","into","new","next","priority","remove","set_priority","tasks","try_from","try_into","type_id"],"q":[[0,"scheduler_priority"],[18,"task"],[19,"task::scheduler"],[20,"core::option"],[21,"core::iter::traits::iterator"],[22,"alloc::boxed"],[23,"alloc::vec"],[24,"core::result"],[25,"core::any"]],"d":["","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[1,2],3],[1,[[5,[4]]]],[-1,-2,[],[]],[-1,-2,[],[]],[1,6],[1,[[8,[7]]]],[-1,-1,[]],[-1,-2,[],[]],[2,1],[1,2],[[1,2],[[5,[9]]]],[[1,2],10],[[1,2,9],10],[1,[[11,[2]]]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,13,[]]],"c":[],"p":[[3,"Scheduler",0],[3,"TaskRef",18],[15,"tuple"],[8,"PriorityScheduler",19],[4,"Option",20],[15,"usize"],[8,"Iterator",21],[3,"Box",22],[15,"u8"],[15,"bool"],[3,"Vec",23],[4,"Result",24],[3,"TypeId",25]],"b":[]},\ "scheduler_round_robin":{"doc":"This crate picks the next task in round robin fashion. …","t":"DLLLLLLLLLLLLLLL","n":["Scheduler","add","as_priority_scheduler","borrow","borrow_mut","busyness","drain","from","into","new","next","remove","tasks","try_from","try_into","type_id"],"q":[[0,"scheduler_round_robin"],[16,"task"],[17,"task::scheduler"],[18,"core::option"],[19,"core::iter::traits::iterator"],[20,"alloc::boxed"],[21,"alloc::vec"],[22,"core::result"],[23,"core::any"]],"d":["","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[1,2],3],[1,[[5,[4]]]],[-1,-2,[],[]],[-1,-2,[],[]],[1,6],[1,[[8,[7]]]],[-1,-1,[]],[-1,-2,[],[]],[2,1],[1,2],[[1,2],9],[1,[[10,[2]]]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,12,[]]],"c":[],"p":[[3,"Scheduler",0],[3,"TaskRef",16],[15,"tuple"],[8,"PriorityScheduler",17],[4,"Option",18],[15,"usize"],[8,"Iterator",19],[3,"Box",20],[15,"bool"],[3,"Vec",21],[4,"Result",22],[3,"TypeId",23]],"b":[]},\ "sdt":{"doc":"ACPI table definitions and basic SDT structures.","t":"DRDMMMMLLLLMLLMMLLLLLLMMMMMMMLLLLLL","n":["GenericAddressStructure","SDT_SIZE_IN_BYTES","Sdt","access_size","address_space","bit_offset","bit_width","borrow","borrow","borrow_mut","borrow_mut","checksum","clone","clone","creator_id","creator_revision","fmt","fmt","from","from","into","into","length","oem_id","oem_revision","oem_table_id","phys_addr","revision","signature","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"sdt"],[35,"core::fmt"],[36,"core::fmt"],[37,"core::any"]],"d":["A struct used to describe the position and layout of …","The size in bytes of the ACPI SDT Header (Sdt struct).","An ACPI System Descriptor Table. This is the header (the …","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","",""],"i":[0,0,0,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,1,1,1,1,2,1,1,1,2,1,2,1,2],"f":[0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[2,2],0,0,[[1,3],4],[[2,3],4],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,6,[]],[-1,6,[]]],"c":[],"p":[[3,"Sdt",0],[3,"GenericAddressStructure",0],[3,"Formatter",35],[6,"Result",35],[4,"Result",36],[3,"TypeId",37]],"b":[]},\ -"serial_port":{"doc":"A full serial driver with more advanced I/O support, e.g., …","t":"NNNNDNDNDEDENNLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLFLLFLLLLLLMLLLLLLLLFLFLLLLLLLLLLLLLLLLLLLLLLLL","n":["COM1","COM2","COM3","COM4","DataChunk","DataReceived","DataSenderAlreadyExists","ErrorOrBreak","SerialPort","SerialPortAddress","SerialPortBasic","SerialPortInterruptEvent","StatusChange","TransmitterEmpty","acknowledge_interrupt","base_port_address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","data","data_available","deref","deref_mut","drop","empty","enable_interrupt","eq","flush","fmt","fmt","fmt","from","from","from","from","from","from","from_str","get_serial_port","in_byte","in_bytes","init_serial_port","into","into","into","into","into","into","len","new","new","out_byte","out_bytes","out_str","read","ready_to_transmit","register_interrupt_handler","set_connection_listener","set_data_sender","take_serial_port_basic","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","write","write_str","write_str"],"q":[[0,"serial_port"],[95,"core2::io::error"],[96,"core::fmt"],[97,"core::fmt"],[98,"core::fmt"],[99,"alloc::sync"],[100,"core::option"],[101,"interrupts::arch"],[102,"x86_64::structures::idt"],[103,"async_channel"],[104,"core::any"]],"d":["The base port I/O address for the COM1 serial port.","The base port I/O address for the COM2 serial port.","The base port I/O address for the COM3 serial port.","The base port I/O address for the COM4 serial port.","A chunk of data read from a serial port that will be …","","An empty error type indicating that a data sender could …","","A serial port abstraction with support for interrupt-based …","The base port I/O addresses for COM serial ports.","A serial port and its various data and control registers.","The types of events that can trigger an interrupt on a …","","","Clears an interrupt in the serial port controller","","","","","","","","","","","","","","","","","Returns true if the serial port has data available to read.","","","","Returns a new DataChunk filled with zeroes that can be …","Enable or disable interrupts on this serial port for …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Obtains a reference to the SerialPort specified by the …","Read one byte from the serial port, blocking until data is …","Reads multiple bytes from the serial port into the given …","Initializes the SerialPort specified by the given …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Creates and returns a new serial port structure, and …","Initialize this serial port by giving it ownership and …","Write the given byte to the serial port, blocking until …","Write the given bytes to the serial port, blocking until …","Write the given string to the serial port, blocking until …","","Returns true if the serial port is ready to transmit a …","Register the interrupt handler for this serial port and …","A temporary hack to allow the serial port interrupt handler","Tells this SerialPort to push received data bytes onto the …","Takes ownership of the SerialPort specified by the given …","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[4,4,4,4,0,2,0,2,0,0,0,0,2,2,1,1,1,6,7,4,12,2,1,6,7,4,12,2,4,4,7,1,6,6,1,7,1,4,6,4,12,2,1,6,7,4,12,2,4,0,1,1,0,1,6,7,4,12,2,7,1,6,1,1,1,6,1,6,0,6,0,4,1,6,7,4,4,4,12,2,1,6,7,4,12,2,1,6,7,4,12,2,6,1,6],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],3],[1,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,4],[[-1,-2],3,[],[]],0,[1,5],[6],[6],[1,3],[[],7],[[1,2,5],3],[[4,4],5],[6,[[8,[3]]]],[[4,9],[[11,[3,10]]]],[[12,9],13],[[2,9],[[11,[3,10]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[14,[[11,[4]]]],[4,[[17,[[16,[[15,[6]]]]]]]],[1,18],[[1,[19,[18]]],20],[[4,1],[[17,[[16,[[15,[6]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[21,1],[1,6],[[1,18],3],[[1,[19,[18]]],3],[[1,14],3],[[6,[19,[18]]],[[8,[20]]]],[1,5],[[[16,[[15,[6]]]],22,23],[[11,[3,14]]]],[[[24,[4]]],[[24,[4]]]],[[6,[24,[7]]],[[11,[3,12]]]],[4,[[17,[1]]]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[21,[[11,[4]]]],[14,[[11,[4]]]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[6,[19,[18]]],[[8,[20]]]],[[1,14],[[11,[3,10]]]],[[6,14],13]],"c":[],"p":[[3,"SerialPortBasic",0],[4,"SerialPortInterruptEvent",0],[15,"tuple"],[4,"SerialPortAddress",0],[15,"bool"],[3,"SerialPort",0],[3,"DataChunk",0],[6,"Result",95],[3,"Formatter",96],[3,"Error",96],[4,"Result",97],[3,"DataSenderAlreadyExists",0],[6,"Result",96],[15,"str"],[6,"IrqSafeMutex",98],[3,"Arc",99],[4,"Option",100],[15,"u8"],[15,"slice"],[15,"usize"],[15,"u16"],[6,"InterruptNumber",101],[6,"HandlerFunc",102],[3,"Sender",103],[3,"TypeId",104]],"b":[[75,"impl-TryFrom%3Cu16%3E-for-SerialPortAddress"],[76,"impl-TryFrom%3C%26str%3E-for-SerialPortAddress"]]},\ +"serial_port":{"doc":"A full serial driver with more advanced I/O support, e.g., …","t":"NNNNDNDNDEDENNLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLFLLFLLLLLLMLLLLLLLLFLFLLLLLLLLLLLLLLLLLLLLLLLL","n":["COM1","COM2","COM3","COM4","DataChunk","DataReceived","DataSenderAlreadyExists","ErrorOrBreak","SerialPort","SerialPortAddress","SerialPortBasic","SerialPortInterruptEvent","StatusChange","TransmitterEmpty","acknowledge_interrupt","base_port_address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","data","data_available","deref","deref_mut","drop","empty","enable_interrupt","eq","flush","fmt","fmt","fmt","from","from","from","from","from","from","from_str","get_serial_port","in_byte","in_bytes","init_serial_port","into","into","into","into","into","into","len","new","new","out_byte","out_bytes","out_str","read","ready_to_transmit","register_interrupt_handler","set_connection_listener","set_data_sender","take_serial_port_basic","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","write","write_str","write_str"],"q":[[0,"serial_port"],[95,"core2::io::error"],[96,"core::fmt"],[97,"core::fmt"],[98,"core::fmt"],[99,"alloc::sync"],[100,"core::option"],[101,"interrupts::arch"],[102,"x86_64::structures::idt"],[103,"sync_channel"],[104,"core::any"]],"d":["The base port I/O address for the COM1 serial port.","The base port I/O address for the COM2 serial port.","The base port I/O address for the COM3 serial port.","The base port I/O address for the COM4 serial port.","A chunk of data read from a serial port that will be …","","An empty error type indicating that a data sender could …","","A serial port abstraction with support for interrupt-based …","The base port I/O addresses for COM serial ports.","A serial port and its various data and control registers.","The types of events that can trigger an interrupt on a …","","","Clears an interrupt in the serial port controller","","","","","","","","","","","","","","","","","Returns true if the serial port has data available to read.","","","","Returns a new DataChunk filled with zeroes that can be …","Enable or disable interrupts on this serial port for …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Obtains a reference to the SerialPort specified by the …","Read one byte from the serial port, blocking until data is …","Reads multiple bytes from the serial port into the given …","Initializes the SerialPort specified by the given …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Creates and returns a new serial port structure, and …","Initialize this serial port by giving it ownership and …","Write the given byte to the serial port, blocking until …","Write the given bytes to the serial port, blocking until …","Write the given string to the serial port, blocking until …","","Returns true if the serial port is ready to transmit a …","Register the interrupt handler for this serial port and …","A temporary hack to allow the serial port interrupt handler","Tells this SerialPort to push received data bytes onto the …","Takes ownership of the SerialPort specified by the given …","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[4,4,4,4,0,2,0,2,0,0,0,0,2,2,1,1,1,6,7,4,12,2,1,6,7,4,12,2,4,4,7,1,6,6,1,7,1,4,6,4,12,2,1,6,7,4,12,2,4,0,1,1,0,1,6,7,4,12,2,7,1,6,1,1,1,6,1,6,0,6,0,4,1,6,7,4,4,4,12,2,1,6,7,4,12,2,1,6,7,4,12,2,6,1,6],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],3],[1,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,4],[[-1,-2],3,[],[]],0,[1,5],[6],[6],[1,3],[[],7],[[1,2,5],3],[[4,4],5],[6,[[8,[3]]]],[[4,9],[[11,[3,10]]]],[[12,9],13],[[2,9],[[11,[3,10]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[14,[[11,[4]]]],[4,[[17,[[16,[[15,[6]]]]]]]],[1,18],[[1,[19,[18]]],20],[[4,1],[[17,[[16,[[15,[6]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[21,1],[1,6],[[1,18],3],[[1,[19,[18]]],3],[[1,14],3],[[6,[19,[18]]],[[8,[20]]]],[1,5],[[[16,[[15,[6]]]],22,23],[[11,[3,14]]]],[[[24,[4]]],[[24,[4]]]],[[6,[24,[7]]],[[11,[3,12]]]],[4,[[17,[1]]]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[21,[[11,[4]]]],[14,[[11,[4]]]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[6,[19,[18]]],[[8,[20]]]],[[1,14],[[11,[3,10]]]],[[6,14],13]],"c":[],"p":[[3,"SerialPortBasic",0],[4,"SerialPortInterruptEvent",0],[15,"tuple"],[4,"SerialPortAddress",0],[15,"bool"],[3,"SerialPort",0],[3,"DataChunk",0],[6,"Result",95],[3,"Formatter",96],[3,"Error",96],[4,"Result",97],[3,"DataSenderAlreadyExists",0],[6,"Result",96],[15,"str"],[6,"IrqSafeMutex",98],[3,"Arc",99],[4,"Option",100],[15,"u8"],[15,"slice"],[15,"usize"],[15,"u16"],[6,"InterruptNumber",101],[6,"HandlerFunc",102],[3,"Sender",103],[3,"TypeId",104]],"b":[[75,"impl-TryFrom%3Cu16%3E-for-SerialPortAddress"],[76,"impl-TryFrom%3C%26str%3E-for-SerialPortAddress"]]},\ "serial_port_basic":{"doc":"Support for basic serial port access, including …","t":"NNNNNNDEENNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLL","n":["COM1","COM2","COM3","COM4","DataReceived","ErrorOrBreak","SerialPort","SerialPortAddress","SerialPortInterruptEvent","StatusChange","TransmitterEmpty","acknowledge_interrupt","base_port_address","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","data_available","drop","enable_interrupt","eq","fmt","fmt","from","from","from","from_str","in_byte","in_bytes","into","into","into","new","out_byte","out_bytes","out_str","ready_to_transmit","take_serial_port","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","write_str"],"q":[[0,"serial_port_basic"],[53,"core::fmt"],[54,"core::fmt"],[55,"core::option"],[56,"core::any"]],"d":["The base port I/O address for the COM1 serial port.","The base port I/O address for the COM2 serial port.","The base port I/O address for the COM3 serial port.","The base port I/O address for the COM4 serial port.","","","A serial port and its various data and control registers.","The base port I/O addresses for COM serial ports.","The types of events that can trigger an interrupt on a …","","","Clears an interrupt in the serial port controller","","","","","","","","","Returns true if the serial port has data available to read.","","Enable or disable interrupts on this serial port for …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Read one byte from the serial port, blocking until data is …","Reads multiple bytes from the serial port into the given …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Creates and returns a new serial port structure, and …","Write the given byte to the serial port, blocking until …","Write the given bytes to the serial port, blocking until …","Write the given string to the serial port, blocking until …","Returns true if the serial port is ready to transmit a …","Takes ownership of the SerialPort specified by the given …","","","","","","","","","","","",""],"i":[4,4,4,4,2,2,0,0,0,2,2,1,1,1,4,2,1,4,2,4,1,1,1,4,4,2,1,4,2,4,1,1,1,4,2,1,1,1,1,1,0,1,4,4,4,2,1,4,2,1,4,2,1],"f":[0,0,0,0,0,0,0,0,0,0,0,[[1,2],3],[1,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,4],[1,5],[1,3],[[1,2,5],3],[[4,4],5],[[4,6],7],[[2,6],7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[8,[[9,[4]]]],[1,10],[[1,[11,[10]]],12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[13,1],[[1,10],3],[[1,[11,[10]]],3],[[1,8],3],[1,5],[4,[[14,[1]]]],[-1,[[9,[-2]]],[],[]],[8,[[9,[4]]]],[13,[[9,[4]]]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[[1,8],7]],"c":[],"p":[[3,"SerialPort",0],[4,"SerialPortInterruptEvent",0],[15,"tuple"],[4,"SerialPortAddress",0],[15,"bool"],[3,"Formatter",53],[6,"Result",53],[15,"str"],[4,"Result",54],[15,"u8"],[15,"slice"],[15,"usize"],[15,"u16"],[4,"Option",55],[3,"TypeId",56]],"b":[[42,"impl-TryFrom%3C%26str%3E-for-SerialPortAddress"],[43,"impl-TryFrom%3Cu16%3E-for-SerialPortAddress"]]},\ "shapes":{"doc":"This crate defines the basic shapes used for display.","t":"DDLLLLLLLMLLLLLLLLLLLLLLLLLLLMLLLLLLLMM","n":["Coord","Rectangle","add","add","add","borrow","borrow","borrow_mut","borrow_mut","bottom_right","clone","clone","cmp","eq","eq","fmt","fmt","from","from","hash","hash","height","into","into","new","partial_cmp","sub","sub","sub","top_left","try_from","try_from","try_into","try_into","type_id","type_id","width","x","y"],"q":[[0,"shapes"],[39,"core::cmp"],[40,"core::fmt"],[41,"core::fmt"],[42,"core::option"],[43,"core::result"],[44,"core::any"]],"d":["A 2-D integer coordinate.","A rectangle given by its top-left coordinate and …","","","","","","","","The bottom-right point","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the height of this Rectangle.","Calls U::from(self).","Calls U::from(self).","Creates a new coordinate.","","","","","The top-left point","","","","","","","Returns the width of this Rectangle.","The x coordinate","The y coordinate"],"i":[0,0,1,1,4,1,4,1,4,4,1,4,1,1,4,1,4,1,4,1,4,4,1,4,1,1,1,1,4,4,1,4,1,4,1,4,4,1,1],"f":[0,0,[[1,1],1],[[1,[3,[2,2]]],1],[[4,1],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[4,4],[[1,1],5],[[1,1],6],[[4,4],6],[[1,7],8],[[4,7],8],[-1,-1,[]],[-1,-1,[]],[[1,-1],3,9],[[4,-1],3,9],[4,10],[-1,-2,[],[]],[-1,-2,[],[]],[[2,2],1],[[1,1],[[11,[5]]]],[[1,[3,[2,2]]],1],[[1,1],1],[[4,1],4],0,[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,13,[]],[-1,13,[]],[4,10],0,0],"c":[],"p":[[3,"Coord",0],[15,"isize"],[15,"tuple"],[3,"Rectangle",0],[4,"Ordering",39],[15,"bool"],[3,"Formatter",40],[6,"Result",40],[8,"Hasher",41],[15,"usize"],[4,"Option",42],[4,"Result",43],[3,"TypeId",44]],"b":[[2,"impl-Add-for-Coord"],[3,"impl-Add%3C(isize,+isize)%3E-for-Coord"],[26,"impl-Sub%3C(isize,+isize)%3E-for-Coord"],[27,"impl-Sub-for-Coord"]]},\ "signal_handler":{"doc":"Signal handlers for CPU exceptions/errors, like …","t":"DNNENNNNEDZLLLLLLLLLLLLLLLLLLMLLLLLLLLLLMLLLLLFMMFLLLLLLLLLLLLLLLMM","n":["AlreadyRegistered","ArithmeticError","BusError","ErrorCode","IllegalInstruction","InvalidAddress","Other","PageFaultError","Signal","SignalContext","SignalHandler","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","eq","eq","eq","error_code","fmt","fmt","fmt","fmt","from","from","from","from","from","hash","instruction_pointer","into","into","into","into","partial_cmp","register_signal_handler","signal","stack_pointer","take_signal_handler","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","accessed_address","pf_error"],"q":[[0,"signal_handler"],[65,"signal_handler::ErrorCode"],[67,"core::cmp"],[68,"core::fmt"],[69,"core::fmt"],[70,"core::option"],[71,"alloc::boxed"],[72,"core::result"],[73,"core::any"]],"d":["An error type indicating a handler had already been …","Bad arithmetic operation, e.g., divide by zero. Analogous …","Bad memory alignment, non-existent physical address. …","Possible error codes that may be provided by the CPU …","Invalid opcode, malformed instruction, etc. Analogous to …","Bad virtual address, unexpected page fault. Analogous to …","","","The possible signals that may occur due to CPU exceptions.","Information that is passed to a registered SignalHandler …","A signal handler is a callback function that will be …","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Register a SignalHandler callback function for the current …","","","Take the SignalHandler registered for the given signal for …","","","","","","","","","","","","","","","","",""],"i":[0,1,1,0,1,1,3,3,0,0,0,7,1,2,3,7,1,2,3,1,2,3,1,2,3,1,1,2,3,2,7,1,2,3,7,1,2,3,3,1,2,7,1,2,3,1,0,2,2,0,1,2,3,7,1,2,3,7,1,2,3,7,1,2,3,17,17],"f":[0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[3,3],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[1,1],5],[[1,1],6],[[2,2],6],[[3,3],6],0,[[7,8],9],[[1,8],9],[[2,8],9],[[3,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,3],[-1,-1,[]],[[1,-1],4,11],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,1],[[12,[5]]]],[[1,[14,[13]]],[[15,[4,7]]]],0,0,[1,[[12,[[14,[13]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,16,[]],[-1,16,[]],[-1,16,[]],[-1,16,[]],0,0],"c":[],"p":[[4,"Signal",0],[3,"SignalContext",0],[4,"ErrorCode",0],[15,"tuple"],[4,"Ordering",67],[15,"bool"],[3,"AlreadyRegistered",0],[3,"Formatter",68],[6,"Result",68],[15,"u64"],[8,"Hasher",69],[4,"Option",70],[25,"SignalHandler",0],[3,"Box",71],[4,"Result",72],[3,"TypeId",73],[13,"PageFaultError",65]],"b":[]},\ @@ -157,6 +156,7 @@ var searchIndex = JSON.parse('{\ "storage_manager":{"doc":"Manages and handles initialization of all storage devices …","t":"IGIGKLLLLFLKFF","n":["StorageController","StorageControllerRef","StorageDevice","StorageDeviceRef","devices","downcast","downcast_mut","downcast_rc","downcast_ref","init_device","is","size_in_blocks","storage_controllers","storage_devices"],"q":[[0,"storage_manager"],[14,"core::iter::traits::iterator"],[15,"alloc::alloc"],[16,"alloc::boxed"],[17,"core::result"],[18,"core::option"],[19,"alloc::rc"],[20,"pci"]],"d":["A trait that represents a storage controller, such as an …","A trait object wrapped in an Arc and Mutex that allows …","A trait that represents a storage device, such as hard …","A trait object wrapped in an Arc and Mutex that allows …","Returns an iterator of references to all StorageDevices …","Returns a boxed object from a boxed trait object if the …","Returns a mutable reference to the object within the trait …","Returns an Rc-ed object from an Rc-ed trait object if the …","Returns a reference to the object within the trait object …","Attempts to handle the initialization of the given …","Returns true if the trait object wraps an object of type …","Returns the total size of this device, given in number of …","Returns an iterator over all initialized storage …","Returns an iterator over all storage devices attached to …"],"i":[0,0,0,0,13,4,4,4,4,0,4,4,0,0],"f":[0,0,0,0,[-1,[[3,[1,2]]],[]],[[[3,[4,2]]],[[5,[[3,[-1,2]],[3,[4,2]]]]],4],[4,[[6,[-1]]],4],[[[7,[4,2]]],[[5,[[7,[-1,2]],[7,[4,2]]]]],4],[4,[[6,[-1]]],4],[8,[[5,[[6,[9]],10]]]],[4,11],[-1,12,[]],[[],[[0,[1]]]],[[],[[0,[1]]]]],"c":[],"p":[[8,"Iterator",14],[3,"Global",15],[3,"Box",16],[8,"StorageDevice",0],[4,"Result",17],[4,"Option",18],[3,"Rc",19],[3,"PciDevice",20],[6,"StorageControllerRef",0],[15,"str"],[15,"bool"],[15,"usize"],[8,"StorageController",0]],"b":[]},\ "str_ref":{"doc":"An immutable shared reference to a string, effectively …","t":"DLLLLLLLLLLLLLLLLLLLLLLL","n":["StrRef","as_ref","as_str","borrow","borrow","borrow","borrow_mut","clone","clone_into","cmp","deref","eq","fmt","fmt","from","from","hash","into","partial_cmp","to_owned","to_string","try_from","try_into","type_id"],"q":[[0,"str_ref"],[24,"core::cmp"],[25,"core::fmt"],[26,"core::fmt"],[27,"core::option"],[28,"alloc::string"],[29,"core::result"],[30,"core::any"]],"d":["A wrapper around an Arc<str>: an immutable shared …","","Obtain a reference to the inner str.","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[1,2],[1,2],[-1,-2,[],[]],[1,[[4,[3]]]],[1,2],[-1,-2,[],[]],[1,1],[[-1,-2],5,[],[]],[[1,1],6],[1],[[1,1],7],[[1,8],9],[[1,8],9],[-1,-1,[]],[2,1],[[1,-1],5,10],[-1,-2,[],[]],[[1,1],[[11,[6]]]],[-1,-2,[],[]],[-1,12,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]]],"c":[],"p":[[3,"StrRef",0],[15,"str"],[15,"u8"],[15,"slice"],[15,"tuple"],[4,"Ordering",24],[15,"bool"],[3,"Formatter",25],[6,"Result",25],[8,"Hasher",26],[4,"Option",27],[3,"String",28],[4,"Result",29],[3,"TypeId",30]],"b":[[4,"impl-Borrow%3C%5Bu8%5D%3E-for-StrRef"],[5,"impl-Borrow%3Cstr%3E-for-StrRef"],[12,"impl-Debug-for-StrRef"],[13,"impl-Display-for-StrRef"]]},\ "sync_block":{"doc":"","t":"DDGGGGGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Block","Condvar","Mutex","MutexGuard","RwLock","RwLockReadGuard","RwLockWriteGuard","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","cmp","default","eq","fmt","from","from","get_hash","hash","into","into","lock","new","notify_all","notify_one","partial_cmp","post_unlock","post_unlock","read","to_owned","try_from","try_from","try_into","try_into","try_lock","try_read","try_write","type_id","type_id","wait","wait_while","write"],"q":[[0,"sync_block"],[44,"core::cmp"],[45,"core::fmt"],[46,"core::fmt"],[47,"core::marker"],[48,"core::hash"],[49,"spin::mutex::spin"],[50,"core::option"],[51,"spin::rwlock"],[52,"spin::rwlock"],[53,"spin::rwlock"],[54,"core::ops::function"]],"d":["A synchronisation flavour that blocks the current thread …","A condition variable.","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","Returns a new condition variable.","Wakes up all threads blocked on this condvar.","Wakes up one thread blocked on this condvar.","","","","","","","","","","","","","","","Blocks the current thread until this condition variable …","Blocks the current thread until this condition variable …",""],"i":[0,0,0,0,0,0,0,14,1,14,1,1,1,1,1,1,1,14,1,1,1,14,1,1,14,14,14,1,1,1,1,1,14,1,14,1,1,1,1,14,1,14,14,1],"f":[0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[[-1,-2],2,[],[]],[[1,1],3],[[],1],[[1,1],4],[[1,5],6],[-1,-1,[]],[-1,-1,[]],[[-1,-2],7,[8,9],10],[[1,-1],2,11],[-1,-2,[],[]],[-1,-2,[],[]],[[[12,[-1]]],[[2,[[13,[-1]]]]],9],[[],[[14,[-1]]],15],[[[14,[-1]]],2,15],[[[14,[-1]]],2,15],[[1,1],[[16,[3]]]],[[],2],[4,2],[[[17,[-1]]],[[2,[[18,[-1]]]]],9],[-1,-2,[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[[[12,[-1]]],[[16,[[2,[[13,[-1]]]]]]],9],[[[17,[-1]]],[[16,[[2,[[18,[-1]]]]]]],9],[[[17,[-1]]],[[16,[[2,[[20,[-1]]]]]]],9],[-1,21,[]],[-1,21,[]],[[[14,[-1]],[22,[-2]]],[[22,[-2]]],15,9],[[[14,[-1]],[22,[-2]],-3],[[22,[-2]]],15,[],23],[[[17,[-1]]],[[2,[[20,[-1]]]]],9]],"c":[],"p":[[3,"Block",0],[15,"tuple"],[4,"Ordering",44],[15,"bool"],[3,"Formatter",45],[6,"Result",45],[15,"u64"],[8,"Hash",46],[8,"Sized",47],[8,"BuildHasher",46],[8,"Hasher",46],[3,"SpinMutex",48],[3,"SpinMutexGuard",48],[3,"Condvar",0],[8,"DeadlockPrevention",49],[4,"Option",50],[3,"RwLock",51],[3,"RwLockReadGuard",51],[4,"Result",52],[3,"RwLockWriteGuard",51],[3,"TypeId",53],[6,"MutexGuard",0],[8,"FnMut",54]],"b":[[28,"impl-MutexFlavor-for-Block"],[29,"impl-RwLockFlavor-for-Block"]]},\ +"sync_channel":{"doc":"A blocking channel for Inter-Task Communication (ITC) with …","t":"NENEDNDNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["ChannelDisconnected","ChannelStatus","Connected","Error","Receiver","ReceiverDisconnected","Sender","SenderDisconnected","WouldBlock","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","drop","drop","eq","eq","fmt","fmt","from","from","from","from","into","into","into","into","is_disconnected","is_disconnected","new_channel","new_channel_with","receive","receive_buf","receiver","send","send_all","send_buf","sender","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_receive","try_receive_buf","try_send","try_send_buf","type_id","type_id","type_id","type_id"],"q":[[0,"sync_channel"],[67,"core::marker"],[68,"sync"],[69,"core::fmt"],[70,"core::fmt"],[71,"core::marker"]],"d":["Occurs when one end of channel is dropped","Indicates whether channel is Connected or Disconnected","Channel is working. Initially channel is created with …","Error type for tracking different type of errors sender …","The receiver side of a channel.","Set to Disconnected when Receiver end is dropped.","The sender (transmit) side of a channel.","Set to Disconnected when Sender end is dropped.","Occurs when a “try” operation would need to block to …","","","","","","","","","Clones this Sender, returning another Sender connected to …","Clones this Receiver, returning another Receiver connected …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the channel is disconnected.","Returns true if the channel is disconnected.","Create a new channel that allows senders and receivers to …","Creates a new blocking channel with the specified deadlock …","Receive a message, blocking until a message is available …","Receives objects placing them in a buffer and returning …","Obtain a Receiver endpoint connected to the same channel …","Send a message, blocking until space in the channel’s …","Attempts to send an entire slice of objects through the …","Sends a slice of objects through the channel, returning …","Obtain a Sender endpoint connected to the same channel as …","","","","","","","","","","","","Tries to receive a message, only succeeding if a message …","Receives objects placing them in a buffer and returning …","Tries to send the message, only succeeding if buffer space …","Sends a slice of objects through the channel, returning …","","","",""],"i":[8,0,5,0,0,5,0,5,8,1,4,5,8,1,4,5,8,1,4,5,1,4,5,1,4,5,8,5,8,1,4,5,8,1,4,5,8,1,4,0,0,4,4,1,1,1,1,4,1,4,5,1,4,5,8,1,4,5,8,4,4,1,1,1,4,5,8],"f":[0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1,-2]]],[[1,[-1,-2]]],2,3],[[[4,[-1,-2]]],[[4,[-1,-2]]],2,3],[5,5],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[[1,[-1,-2]]],6,2,3],[[[4,[-1,-2]]],6,2,3],[[5,5],7],[[8,8],7],[[5,9],10],[[8,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1,-2]]],7,2,3],[[[4,[-1,-2]]],7,2,3],[11,[[6,[[1,[-1]],[4,[-1]]]]],2],[11,[[6,[[1,[-1,-2]],[4,[-1,-2]]]]],2,3],[[[4,[-1,-2]]],[[12,[-1,8]]],2,3],[[[4,[-1,-2]],[13,[-1]]],[[12,[11,8]]],2,3],[[[1,[-1,-2]]],[[4,[-1,-2]]],2,3],[[[1,[-1,-2]],-1],[[12,[6,8]]],2,3],[[[1,[-1,-2]],[13,[-1]]],[[12,[6,8]]],[14,2],3],[[[1,[-1,-2]],[13,[-1]]],[[12,[11,8]]],[14,2],3],[[[4,[-1,-2]]],[[1,[-1,-2]]],2,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[[[4,[-1,-2]]],[[12,[-1,8]]],2,3],[[[4,[-1,-2]],[13,[-1]]],[[12,[11,8]]],2,3],[[[1,[-1,-2]],-1],[[12,[6,[6,[-1,8]]]]],2,3],[[[1,[-1,-2]],[13,[-1]]],[[12,[11,8]]],[14,2],3],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]]],"c":[],"p":[[3,"Sender",0],[8,"Send",67],[8,"DeadlockPrevention",68],[3,"Receiver",0],[4,"ChannelStatus",0],[15,"tuple"],[15,"bool"],[4,"Error",0],[3,"Formatter",69],[6,"Result",69],[15,"usize"],[4,"Result",70],[15,"slice"],[8,"Copy",67],[3,"TypeId",71]],"b":[]},\ "sync_preemption":{"doc":"","t":"DGGGGGGGGGGLLLLLLLLLLLLLLLLLLLLLLLLL","n":["DisablePreemption","Mutex","MutexGuard","PreemptionSafeMutex","PreemptionSafeMutexGuard","PreemptionSafeRwLock","PreemptionSafeRwLockReadGuard","PreemptionSafeRwLockWriteGuard","RwLock","RwLockReadGuard","RwLockWriteGuard","borrow","borrow_mut","clone","clone_into","cmp","default","enter","eq","fmt","from","hash","into","lock","partial_cmp","post_unlock","post_unlock","read","to_owned","try_from","try_into","try_lock","try_read","try_write","type_id","write"],"q":[[0,"sync_preemption"],[36,"core::cmp"],[37,"core::fmt"],[38,"core::fmt"],[39,"spin::relax"],[40,"spin::mutex::spin"],[41,"spin::mutex::spin"],[42,"core::option"],[43,"spin::rwlock"],[44,"spin::rwlock"],[45,"spin::rwlock"]],"d":["A deadlock prevention method that disables preemption.","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[[-1,-2],2,[],[]],[[1,1],3],[[],1],[[]],[[1,1],4],[[1,5],6],[-1,-1,[]],[[1,-1],2,7],[-1,-2,[],[]],[[[9,[-1,8]]],[[2,[[10,[-1]]]]],11],[[1,1],[[12,[3]]]],[[],2],[4,2],[[[13,[-1,8]]],[[2,[[14,[-1]]]]],11],[-1,-2,[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[[[9,[-1,8]]],[[12,[[2,[[10,[-1]]]]]]],11],[[[13,[-1,8]]],[[12,[[2,[[14,[-1]]]]]]],11],[[[13,[-1,8]]],[[12,[[2,[[16,[-1,8]]]]]]],11],[-1,17,[]],[[[13,[-1,8]]],[[2,[[16,[-1,8]]]]],11]],"c":[],"p":[[3,"DisablePreemption",0],[15,"tuple"],[4,"Ordering",36],[15,"bool"],[3,"Formatter",37],[6,"Result",37],[8,"Hasher",38],[3,"Spin",39],[3,"SpinMutex",40],[3,"SpinMutexGuard",40],[8,"Sized",41],[4,"Option",42],[3,"RwLock",43],[3,"RwLockReadGuard",43],[4,"Result",44],[3,"RwLockWriteGuard",43],[3,"TypeId",45]],"b":[]},\ "task":{"doc":"Key types and functions for multitasking that build on the …","t":"NNNNDNNEDNGNEENDGENNNNDNNDENDDDDFMMLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLFFLFLLLMLLLLLLLLLLLLLLLMLLLLLLLLMLLLMMMMLMLLLLLCALFLLFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFLLMMMMDIIKFFFKLLFKKLLFLKFKKFFFFFFKFKLLL","n":["AlreadyBorrowed","AlreadyInited","Blocked","Completed","CurrentTaskNotFound","Custom","Exception","ExitValue","ExitableTaskRef","Exited","FailureCleanupFunction","FromTask","InheritedStates","InitCurrentTaskError","Initing","JoinableTaskRef","KillHandler","KillReason","Killed","MismatchedTaskIds","NotInTasklist","Panic","PanicInfoOwned","Reaped","Requested","RestartInfo","RunState","Runnable","ScheduleOnDrop","Task","TaskRef","WeakTaskRef","all_tasks","app_crate","argument","block","block_initing_task","bootstrap_task","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","column","create","default","deref","deref","deref","downgrade","drop","drop","drop","eq","eq","file","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_payload","func","get_env","get_hash","get_hash","get_my_current_task","get_my_current_task_id","get_namespace","get_task","has_exited","hash","hash","id","inner_mut","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_an_idle_task","is_application","is_joinable","is_restartable","is_runnable","is_running","is_suspended","join","kill","line","make_inited_task_runnable","mark_as_exited","mark_as_killed","mmi","msg","name","namespace","new","payload","pinned_cpu","post_context_switch_action","reap_if_orphaned","running_on_cpu","runstate","schedule","scheduler","set_env","set_kill_handler","set_waker","suspend","take_kill_handler","task_switch","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unblock","unsuspend","upgrade","with_current_task","with_current_task_and_value","with_kstack","with_restart_info","app_crate","env","mmi","namespace","PriorityInheritanceGuard","PriorityScheduler","Scheduler","add","add_task","add_task_to","add_task_to_current","as_priority_scheduler","borrow","borrow_mut","busyness","busyness","drain","drop","from","inherit_priority","into","next","priority","priority","remove","remove_task","remove_task_from","remove_task_from_current","schedule","set_policy","set_priority","set_priority","tasks","tasks","try_from","try_into","type_id"],"q":[[0,"task"],[230,"task::InheritedStates"],[234,"task::scheduler"],[267,"alloc::vec"],[268,"core::result"],[269,"cpu"],[270,"stack"],[271,"no_drop"],[272,"memory"],[273,"core::fmt"],[274,"core::fmt"],[275,"core::any"],[276,"alloc::alloc"],[277,"alloc::boxed"],[278,"environment"],[279,"spin::relax"],[280,"spin::mutex"],[281,"alloc::sync"],[282,"core::hash"],[283,"core::marker"],[284,"core::hash"],[285,"mod_mgmt"],[286,"core::hash"],[287,"preemption"],[288,"core::task::wake"],[289,"alloc::string"],[290,"core::any"],[291,"core::iter::traits::iterator"]],"d":["The current task reference was already borrowed, thus it …","The current task was already initialized; its task ID is …","This task is blocked on something and is not able to be …","The Task ran to completion and returned the enclosed Any …","An error type indicating that the current task has not yet …","The new Task will be initialized with the enclosed custom …","A non-language-level problem, such as a Page Fault or some …","The two ways a Task can exit, including possible return …","A wrapper around TaskRef that allows this task to mark …","This Task has exited and can no longer be run. This covers …","The signature of a Task’s failure cleanup function.","The new Task will inherit its states from the enclosed Task…","The states used to initialize a new Task when creating it; …","An error type indicating that the current task was already …","This task is in the midst of being initialized/spawned.","A reference to a Task that can be joined; auto-derefs into …","The function signature of the callback that will be …","The list of possible reasons that a given Task was killed …","The Task did NOT run to completion but was instead killed …","The task IDs used as arguments to init_current_task() did …","The enclosed Task ID was not in the system-wide task list.","A Rust-level panic occurred while running this Task.","Just like core::panic::PanicInfo, but with owned String …","This Task had already exited, and now its ExitValue has …","The user or another task requested that this Task be …","A struct holding data items needed to restart a Task.","The set of possible runstates that a Task can be in.","This task is able to be scheduled in, but not necessarily …","An empty struct that invokes schedule() when it is dropped.","A structure that contains contextual information for a …","A shareable, cloneable reference to a Task that exposes …","A weak reference to a shared Task reference (TaskRef).","Returns a list containing a snapshot of all tasks that …","For application Tasks, this is effectively a reference to …","Stores the argument of the task for restartable tasks","Blocks this Task by setting its runstate to …","Blocks this Task if it is a newly-spawned task currently …","Bootstraps a new task from the current thread of execution.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Creates a new TaskRef, a shareable wrapper around the …","","","","","Creates a new weak reference to this Task, similar to Weak.","","Marks the inner Task as not joinable, meaning that it is …","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Constructs a new PanicInfoOwned object containing only the …","Stores the function of the task for restartable tasks","Gets a reference to this task’s Environment.","","","Returns a cloned reference to the current task.","Returns the unique ID of the current task.","Returns the namespace that this Task is loaded/linked into …","Returns a WeakTaskRef (shared reference) to the Task …","Returns true if this Task has been exited, i.e., if its …","","","The unique identifier of this Task.","Returns a mutable reference to this Task’s inner state. ","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Whether this Task is an idle task, the task that runs by …","Returns true if this is an application Task.","Returns true if this task is joinable, false if not.","Returns true if this Task was spawned as a restartable …","Returns whether this Task is runnable, i.e., able to be …","Returns true if this Task is currently running.","Returns true if this Task is suspended.","Blocks the current task until this task has exited.","Kills this Task (not a clean exit) without allowing it to …","","Makes this Task Runnable if it is a newly-spawned and …","Call this function to indicate that this task has …","Call this function to indicate that this task has been …","Memory management details: page tables, mappings, …","","The simple name of this Task.","This Task is linked into and runs within the context of …","Creates a new Task and initializes it to be non-Runnable.","","Returns the ID of the CPU this Task is pinned on, or None …","Perform any actions needed after a context switch.","Reaps this task (if orphaned) by taking and dropping its …","Returns the ID of the CPU this Task is currently running …","Returns the current RunState of this Task.","","","Sets the Environment of this Task.","Registers a kill handler function for the current Task.","Sets the waker to be awoken when this task exits.","Suspends this Task.","Takes ownership of the current Task’s KillHandler …","Switches from the current task to the given next task.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Unblocks this Task by setting its runstate to …","Unsuspends this Task.","Attempts to upgrade this WeakTaskRef to a TaskRef; see …","Invokes the given function with a reference to the current …","Similar to with_current_task(), but also accepts a value …","Exposes read-only access to this Task’s Stack by invoking","Invokes func with immutable access to this Task’s …","","","","","A guard that lowers a task’s priority back to its …","A task scheduler that supports some notion of priority.","A task scheduler.","Adds a task to the run queue.","Adds the given task to the least busy run queue.","Adds the given task to the specified CPU’s run queue.","Adds the given task to the current CPU’s run queue.","Returns a reference to this scheduler as a priority …","","","Returns the busyness of the scheduler on the given CPU, in …","Returns a measure of how busy the scheduler is, with …","Clears the scheduler’s runqueue, returning an iterator …","","Returns the argument unchanged.","Modifies the given task’s priority to be the maximum of …","Calls U::from(self).","Returns the next task to run.","Returns the priority of the given task.","Gets the priority of the given task.","Removes a task from the run queue.","Removes the given task from all run queues.","Removes the given task from the specified CPU’s run …","Removes the given task from the current CPU’s run queue.","Yields the current CPU by selecting a new Task to run next,","Sets the scheduler policy for the given CPU.","Sets the priority of the given task.","Sets the priority of the given task.","Returns the list of tasks running on each CPU.","Returns a cloned list of contained tasks being scheduled …","","",""],"i":[25,25,6,24,0,27,23,0,0,6,0,27,0,0,6,0,0,0,24,25,25,23,0,6,23,0,0,6,0,0,0,0,0,5,55,5,5,0,55,5,12,27,18,13,17,23,24,6,15,2,25,26,55,5,12,27,18,13,17,23,24,6,15,2,25,26,6,15,2,6,15,2,17,15,17,12,13,15,15,5,12,18,6,15,17,5,5,12,13,17,17,23,23,24,6,15,2,25,26,55,5,12,27,27,18,13,17,17,23,24,6,15,2,25,26,17,55,5,5,15,0,0,5,0,5,5,15,5,5,55,5,12,27,18,13,17,23,24,6,15,2,25,26,5,5,15,5,5,5,5,12,15,17,5,13,13,5,17,5,5,5,17,5,13,13,5,5,0,0,5,0,12,5,0,0,6,15,2,5,17,23,55,5,12,27,18,13,17,23,24,6,15,2,25,26,55,5,12,27,18,13,17,23,24,6,15,2,25,26,55,5,12,27,18,13,17,23,24,6,15,2,25,26,5,5,2,0,0,5,5,56,56,56,56,0,0,0,54,0,0,0,54,52,52,0,54,54,52,52,0,52,54,0,50,54,0,0,0,0,0,0,50,0,54,52,52,52],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],[[4,[[3,[1,2]]]]]],0,0,[5,[[7,[6,6]]]],[5,[[7,[6,6]]]],[[8,[10,[9]],11],[[7,[[3,[12,13]],14]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[6,6],[15,15],[2,2],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,[[5,16],12],[[],17],[12],[13],[15],[15,2],[5,3],[12,3],[18,3],[[6,6],19],[[15,15],19],0,[[5,20],[[7,[3,21]]]],[[5,20],[[7,[3,21]]]],[[12,20],22],[[13,20],22],[[17,20],[[7,[3,21]]]],[[17,20],[[7,[3,21]]]],[[23,20],[[7,[3,21]]]],[[23,20],[[7,[3,21]]]],[[24,20],[[7,[3,21]]]],[[6,20],[[7,[3,21]]]],[[15,20],22],[[2,20],22],[[25,20],22],[[26,20],22],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[5,27],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[28,17],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[31,[29,30]]],17],0,[5,[[35,[[34,[32,33]],30]]]],[[-1,-2],36,[37,38],39],[[-1,-2],36,[37,38],39],[[],[[40,[15]]]],[[],1],[5,[[35,[41,30]]]],[1,[[40,[2]]]],[5,19],[[5,-1],3,42],[[15,-1],3,42],0,[5,43],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[5,19],[15,19],[5,19],[5,19],[5,19],[5,19],[12,[[7,[24,14]]]],[[15,23],[[7,[3,14]]]],0,[5,[[7,[6,6]]]],[[13,[31,[29]]],[[7,[3,14]]]],[[13,23],[[7,[3,14]]]],0,0,0,0,[[[40,[9]],27],[[7,[5,14]]]],0,[5,[[40,[8]]]],[13,44],[13,3],[5,[[40,[8]]]],[5,6],0,0,[[5,[35,[[34,[32,33]],30]]],3],[45,[[7,[3,14]]]],[[12,46],3],[5,3],[[],[[40,[45]]]],[[15,8,44],[[3,[19,44]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,47,[]],[-1,47,[]],[-1,47,[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[-1,48,[]],[5,[[7,[6,6]]]],[5,3],[2,[[40,[15]]]],[-1,[[7,[-2,26]]],49,[]],[[-1,-2],[[7,[-3,-2]]],49,[],[]],[[5,-1],-2,49,[]],[[5,-1],-2,49,[]],0,0,0,0,0,0,0,[[-1,15],3,[]],[15,3],[[8,15],3],[15,3],[-1,[[40,[50]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[8,[[40,[1]]]],[-1,1,[]],[-1,[[31,[51]]],[]],[52,3],[-1,-1,[]],[15,52],[-1,-2,[],[]],[-1,15,[]],[15,[[40,[53]]]],[[-1,15],[[40,[53]]],[]],[[-1,15],19,[]],[15,19],[[15,8],19],[15,19],[[],19],[[8,-1],3,54],[[15,53],19],[[-1,15,53],19,[]],[[],[[4,[[3,[8,[4,[15]]]]]]]],[-1,[[4,[15]]],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,48,[]]],"c":[],"p":[[15,"usize"],[3,"WeakTaskRef",0],[15,"tuple"],[3,"Vec",267],[3,"Task",0],[4,"RunState",0],[4,"Result",268],[3,"CpuId",269],[3,"Stack",270],[3,"NoDrop",271],[6,"MmiRef",272],[3,"JoinableTaskRef",0],[3,"ExitableTaskRef",0],[15,"str"],[3,"TaskRef",0],[6,"FailureCleanupFunction",0],[3,"PanicInfoOwned",0],[3,"ScheduleOnDrop",0],[15,"bool"],[3,"Formatter",273],[3,"Error",273],[6,"Result",273],[4,"KillReason",0],[4,"ExitValue",0],[4,"InitCurrentTaskError",0],[3,"CurrentTaskNotFound",0],[4,"InheritedStates",0],[3,"PanicInfo",274],[8,"Any",275],[3,"Global",276],[3,"Box",277],[3,"Environment",278],[3,"Spin",279],[3,"Mutex",280],[3,"Arc",281],[15,"u64"],[8,"Hash",282],[8,"Sized",283],[8,"BuildHasher",282],[4,"Option",284],[3,"CrateNamespace",285],[8,"Hasher",282],[3,"TaskInner",286],[3,"PreemptionGuard",287],[6,"KillHandler",0],[3,"Waker",288],[3,"String",289],[3,"TypeId",275],[8,"FnOnce",290],[8,"PriorityScheduler",234],[8,"Iterator",291],[3,"PriorityInheritanceGuard",234],[15,"u8"],[8,"Scheduler",234],[3,"RestartInfo",0],[13,"Custom",230]],"b":[[85,"impl-Debug-for-Task"],[86,"impl-Display-for-Task"],[89,"impl-Debug-for-PanicInfoOwned"],[90,"impl-Display-for-PanicInfoOwned"],[91,"impl-Debug-for-KillReason"],[92,"impl-Display-for-KillReason"]],"a":{"exit":[150],"orphan":[145],"reap":[150],"yield":[258],"zombie":[145]}},\ "task_fs":{"doc":"This crate contains the direcotires and files that …","t":"DDRRDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["MmiDir","MmiFile","TASKS_DIRECTORY_NAME","TASKS_DIRECTORY_PATH","TaskDir","TaskFile","TaskFs","as_mapping","as_mapping","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","flush","flush","from","from","from","from","from","get","get","get","get_absolute_path","get_absolute_path","get_absolute_path","get_absolute_path","get_absolute_path","get_name","get_name","get_name","get_name","get_name","get_parent_dir","get_parent_dir","get_parent_dir","get_parent_dir","get_parent_dir","init","insert","insert","insert","into","into","into","into","into","len","len","list","list","list","name","new","new","new","new","read_at","read_at","remove","remove","remove","set_parent_dir","set_parent_dir","set_parent_dir","set_parent_dir","set_parent_dir","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","write_at","write_at"],"q":[[0,"task_fs"],[90,"memory::paging::mapper"],[91,"core::result"],[92,"io"],[93,"fs_node"],[94,"core::option"],[95,"alloc::string"],[96,"fs_node"],[97,"task"],[98,"fs_node"]],"d":["Lazily computed directory that contains subfiles and …","Lazily computed file that contains information about a …","The name of the VFS directory that exposes task info in …","The absolute path of the tasks directory, which is …","A lazily computed directory that holds files and …","Lazily computed file that holds information about this …","The top level directory that includes a …","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","Initializes the tasks virtual filesystem directory within …","This function adds a newly created fs node (the argument) …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns a string listing all the children in the directory","Returns a string listing all the children in the directory","Returns a string listing all the children in the directory","The name of the directory","Creates a new directory and passes a pointer to the new …","","Creates a new directory and passes a pointer to the new …","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,1,5,8,11,1,12,5,8,11,1,12,5,1,5,8,11,1,12,5,8,11,12,8,11,1,12,5,8,11,1,12,5,8,11,1,12,5,0,8,11,12,8,11,1,12,5,1,5,8,11,12,11,11,1,12,5,1,5,8,11,12,8,11,1,12,5,8,11,1,12,5,8,11,1,12,5,8,11,1,12,5,1,5],"f":[0,0,0,0,0,0,0,[1,[[4,[2,3]]]],[5,[[4,[2,3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,[[4,[6,7]]]],[5,[[4,[6,7]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[8,3],[[10,[9]]]],[[11,3],[[10,[9]]]],[[12,3],[[10,[9]]]],[8,13],[11,13],[1,13],[12,13],[5,13],[8,13],[11,13],[1,13],[12,13],[5,13],[8,[[10,[14]]]],[11,[[10,[14]]]],[1,[[10,[14]]]],[12,[[10,[14]]]],[5,[[10,[14]]]],[[],[[4,[6,3]]]],[[8,9],[[4,[[10,[9]],3]]]],[[11,9],[[4,[[10,[9]],3]]]],[[12,9],[[4,[[10,[9]],3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,15],[5,15],[8,[[16,[13]]]],[11,[[16,[13]]]],[12,[[16,[13]]]],0,[[13,14,15,17],[[4,[11,3]]]],[[15,17],1],[[15,17],12],[[15,17],5],[[1,[19,[18]],15],[[4,[15,7]]]],[[5,[19,[18]],15],[[4,[15,7]]]],[[8,9],[[10,[9]]]],[[11,9],[[10,[9]]]],[[12,9],[[10,[9]]]],[[8,20],6],[[11,20],6],[[1,20],6],[[12,20],6],[[5,20],6],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,21,[]],[-1,21,[]],[-1,21,[]],[-1,21,[]],[-1,21,[]],[[1,[19,[18]],15],[[4,[15,7]]]],[[5,[19,[18]],15],[[4,[15,7]]]]],"c":[],"p":[[3,"TaskFile",0],[3,"MappedPages",90],[15,"str"],[4,"Result",91],[3,"MmiFile",0],[15,"tuple"],[4,"IoError",92],[3,"TaskFs",0],[4,"FileOrDir",93],[4,"Option",94],[3,"TaskDir",0],[3,"MmiDir",0],[3,"String",95],[6,"DirRef",93],[15,"usize"],[3,"Vec",96],[3,"WeakTaskRef",97],[15,"u8"],[15,"slice"],[6,"WeakDirRef",93],[3,"TypeId",98]],"b":[]},\ @@ -169,7 +169,7 @@ var searchIndex = JSON.parse('{\ "tlb_shootdown":{"doc":"Support for broadcasting and handling TLB shootdown IPIs. ","t":"FF","n":["handle_tlb_shootdown_ipi","init"],"q":[[0,"tlb_shootdown"]],"d":["Handles a TLB shootdown IPI requested by another CPU.","Initializes data, functions, and structures for the TLB …"],"i":[0,0],"f":[[[],1],[[],2]],"c":[],"p":[[15,"bool"],[15,"tuple"]],"b":[]},\ "tsc":{"doc":"","t":"DLLLFLLLLL","n":["Tsc","borrow","borrow_mut","from","get_tsc_period","into","now","try_from","try_into","type_id"],"q":[[0,"tsc"],[10,"time"],[11,"core::option"],[12,"time"],[13,"core::any"]],"d":["","","","Returns the argument unchanged.","Returns the frequency of the TSC for the system, currently …","Calls U::from(self).","","","",""],"i":[0,6,6,6,0,6,6,6,6,6],"f":[0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-1,[]],[[],[[2,[1]]]],[-1,-2,[],[]],[[],3],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,5,[]]],"c":[],"p":[[3,"Period",10],[4,"Option",11],[3,"Instant",10],[4,"Result",12],[3,"TypeId",13],[3,"Tsc",0]],"b":[]},\ "tss":{"doc":"","t":"RFF","n":["DOUBLE_FAULT_IST_INDEX","create_tss","tss_set_rsp0"],"q":[[0,"tss"],[3,"cpu"],[4,"memory_structs"],[5,"x86_64::structures::tss"],[6,"spin"],[7,"core::result"]],"d":["The index of the double fault stack in a TaskStateSegment …","Sets up TSS entry for the given CPU core. ","Sets the current CPU’s TSS privilege stack 0 (RSP0) …"],"i":[0,0,0],"f":[0,[[1,2,2],[[4,[3]]]],[2,[[7,[5,6]]]]],"c":[],"p":[[3,"CpuId",3],[3,"VirtualAddress",4],[3,"TaskStateSegment",5],[6,"Mutex",6],[15,"tuple"],[15,"str"],[4,"Result",7]],"b":[]},\ -"tty":{"doc":"This crate provides TTY abstractions.","t":"NNNEDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["CtrlC","CtrlD","CtrlZ","Event","LineDiscipline","Master","Slave","Tty","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","canonical","clear_events","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","default","discipline","discipline","echo","eq","event_receiver","flush","flush","fmt","from","from","from","from","from","into","into","into","into","into","master","new","new","read","read","read","read","read_byte","read_byte","set_canonical","set_echo","set_raw","set_sane","slave","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_read","try_read","type_id","type_id","type_id","type_id","type_id","write","write","write","write","write_byte","write_byte"],"q":[[0,"tty"],[89,"alloc::sync"],[90,"async_channel"],[91,"core2::io::error"],[92,"core::fmt"],[93,"core::fmt"],[94,"core::any"]],"d":["","","","","A TTY line discipline.","The master (i.e. terminal) end of a Tty.","The slave (i.e. application) end of a Tty.","A terminal device driver.","","","","","","","","","","","Sets the line discipline to canonical mode.","","","","","","","","","","Equivalent to Self::new.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Creates a new line discipline with sane defaults.","","","","","","","","Sets the canonical flag.","Sets the echo flag.","Sets the line discipline to raw mode.","Resets the line discipline to sane defaults.","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[4,4,4,0,0,0,0,0,1,4,5,6,7,1,4,5,6,7,1,1,4,5,6,7,4,5,6,7,1,5,6,7,1,4,1,6,7,4,1,4,5,6,7,1,4,5,6,7,5,1,5,6,6,7,7,6,7,1,1,1,1,5,4,5,6,7,1,4,5,6,7,1,4,5,6,7,6,7,1,4,5,6,7,6,6,7,7,6,7],"f":[0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[1,3],[4,4],[5,5],[6,6],[7,7],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[],1],[[],5],[6,[[8,[1]]]],[7,[[8,[1]]]],[1,2],[[4,4],2],[1,[[9,[4]]]],[6,[[10,[3]]]],[7,[[10,[3]]]],[[4,11],12],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[5,6],[[],1],[[],5],[[6,[14,[13]]],[[10,[15]]]],[[6,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[6,[[10,[13]]]],[7,[[10,[13]]]],[[1,2],3],[[1,2],3],[1,3],[1,3],[5,7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[[6,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[[6,[14,[13]]],[[10,[15]]]],[[6,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[[6,13],[[10,[3]]]],[[7,13],[[10,[3]]]]],"c":[],"p":[[3,"LineDiscipline",0],[15,"bool"],[15,"tuple"],[4,"Event",0],[3,"Tty",0],[3,"Master",0],[3,"Slave",0],[3,"Arc",89],[3,"Receiver",90],[6,"Result",91],[3,"Formatter",92],[6,"Result",92],[15,"u8"],[15,"slice"],[15,"usize"],[4,"Result",93],[3,"TypeId",94]],"b":[[51,"impl-Master"],[52,"impl-Read-for-Master"],[53,"impl-Read-for-Slave"],[54,"impl-Slave"],[83,"impl-Write-for-Master"],[84,"impl-Master"],[85,"impl-Write-for-Slave"],[86,"impl-Slave"]]},\ +"tty":{"doc":"This crate provides TTY abstractions.","t":"NNNEDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["CtrlC","CtrlD","CtrlZ","Event","LineDiscipline","Master","Slave","Tty","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","canonical","clear_events","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","default","discipline","discipline","echo","eq","event_receiver","flush","flush","fmt","from","from","from","from","from","into","into","into","into","into","master","new","new","read","read","read","read","read_byte","read_byte","set_canonical","set_echo","set_raw","set_sane","slave","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_read","try_read","type_id","type_id","type_id","type_id","type_id","write","write","write","write","write_byte","write_byte"],"q":[[0,"tty"],[89,"alloc::sync"],[90,"sync_channel"],[91,"core2::io::error"],[92,"core::fmt"],[93,"core::fmt"],[94,"core::any"]],"d":["","","","","A TTY line discipline.","The master (i.e. terminal) end of a Tty.","The slave (i.e. application) end of a Tty.","A terminal device driver.","","","","","","","","","","","Sets the line discipline to canonical mode.","","","","","","","","","","Equivalent to Self::new.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Creates a new line discipline with sane defaults.","","","","","","","","Sets the canonical flag.","Sets the echo flag.","Sets the line discipline to raw mode.","Resets the line discipline to sane defaults.","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[4,4,4,0,0,0,0,0,1,4,5,6,7,1,4,5,6,7,1,1,4,5,6,7,4,5,6,7,1,5,6,7,1,4,1,6,7,4,1,4,5,6,7,1,4,5,6,7,5,1,5,6,6,7,7,6,7,1,1,1,1,5,4,5,6,7,1,4,5,6,7,1,4,5,6,7,6,7,1,4,5,6,7,6,6,7,7,6,7],"f":[0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[1,3],[4,4],[5,5],[6,6],[7,7],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[],1],[[],5],[6,[[8,[1]]]],[7,[[8,[1]]]],[1,2],[[4,4],2],[1,[[9,[4]]]],[6,[[10,[3]]]],[7,[[10,[3]]]],[[4,11],12],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[5,6],[[],1],[[],5],[[6,[14,[13]]],[[10,[15]]]],[[6,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[6,[[10,[13]]]],[7,[[10,[13]]]],[[1,2],3],[[1,2],3],[1,3],[1,3],[5,7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[[6,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[[6,[14,[13]]],[[10,[15]]]],[[6,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[[7,[14,[13]]],[[10,[15]]]],[[6,13],[[10,[3]]]],[[7,13],[[10,[3]]]]],"c":[],"p":[[3,"LineDiscipline",0],[15,"bool"],[15,"tuple"],[4,"Event",0],[3,"Tty",0],[3,"Master",0],[3,"Slave",0],[3,"Arc",89],[3,"Receiver",90],[6,"Result",91],[3,"Formatter",92],[6,"Result",92],[15,"u8"],[15,"slice"],[15,"usize"],[4,"Result",93],[3,"TypeId",94]],"b":[[51,"impl-Master"],[52,"impl-Read-for-Master"],[53,"impl-Slave"],[54,"impl-Read-for-Slave"],[83,"impl-Master"],[84,"impl-Write-for-Master"],[85,"impl-Write-for-Slave"],[86,"impl-Slave"]]},\ "uart_pl011":{"doc":"Driver for pl011 UARTs","t":"DDLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMLLL","n":["Pl011","Pl011_Regs","acknowledge_rx_interrupt","borrow","borrow","borrow_mut","borrow_mut","enable_rx_interrupt","fmt","fmt","from","from","has_incoming_data","into","into","is_writeable","log_status","new","read_byte","read_bytes","set_fifo_mode","try_from","try_from","try_into","try_into","type_id","type_id","uartcr","uartdmacr","uartdr","uartfbrd","uartfr","uartibrd","uarticr","uartifls","uartilpr","uartimsc","uartlcr_h","uartmis","uartpcellid0","uartpcellid1","uartpcellid2","uartpcellid3","uartperiphid0","uartperiphid1","uartperiphid2","uartperiphid3","uartris","uartrsr","write_byte","write_bytes","write_str"],"q":[[0,"uart_pl011"],[52,"core::fmt"],[53,"core::fmt"],[54,"core::result"],[55,"core::any"]],"d":["A Pl011 Single-Serial-Port Controller.","Struct representing Pl011 registers. Not intended to be …","","","","","","Enable on-receive interrupt","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns true if the receive-buffer-empty flag is clear.","Calls U::from(self).","Calls U::from(self).","Returns true if the transmit-buffer-full flag is clear.","Outputs a summary of the state of the controller using …","Initialize a UART driver.","Reads a single byte out the uart","Reads bytes into a slice until there is none available.","Set FIFO mode","","","","","","","control","dma control","Data Register","fractional baud rate","flag register","integer baud rate","interrupt clear","interrupt fifo level select","IrDA Low power counter register","interrupt mask set/clear","line control","masked interrupt status","UART PCell ID0","UART PCell ID1","UART PCell ID2","UART PCell ID3","UART Periph ID0","UART Periph ID1","UART Periph ID2","UART Periph ID3","raw interrupt status","receive status / error clear","Writes a single byte out the uart.","Writes a byte slice out the uart.",""],"i":[0,0,1,1,6,1,6,1,1,6,1,6,1,1,6,1,1,1,1,1,1,1,6,1,6,1,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,1],"f":[0,0,[1,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,3],2],[[1,4],5],[[6,4],5],[-1,-1,[]],[-1,-1,[]],[1,3],[-1,-2,[],[]],[-1,-2,[],[]],[1,3],[1,2],[7,[[9,[1,8]]]],[1,10],[[1,[11,[10]]],12],[[1,3],2],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,13,[]],[-1,13,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,10],2],[[1,[11,[10]]],2],[[1,8],5]],"c":[],"p":[[3,"Pl011",0],[15,"tuple"],[15,"bool"],[3,"Formatter",52],[6,"Result",52],[3,"Pl011_Regs",0],[3,"PhysicalAddress",53],[15,"str"],[4,"Result",54],[15,"u8"],[15,"slice"],[15,"usize"],[3,"TypeId",55]],"b":[]},\ "unwind":{"doc":"Support for unwinding the call stack and cleaning up stack …","t":"ZDDDLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLL","n":["FuncWithRegisters","StackFrame","StackFrameIter","UnwindingContext","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","call_site_address","fmt","fmt","from","from","from","initial_address","into","into","into","into_fallible_iter","invoke_with_current_registers","lsda","namespace","next","personality","registers","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"unwind"],[36,"core::fmt"],[37,"core::fmt"],[38,"core::option"],[39,"mod_mgmt"],[40,"alloc::sync"],[41,"core::any"]],"d":["","A single frame in the stack, which contains …","An iterator over the stack frames on the current task’s …","This is the context/state that is used during unwinding …","","","","","","","The call site of this stack frame, i.e., the address of …","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The address (starting instruction pointer) of the function …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","This function saves the current CPU register values onto …","The address of the Language-Specific Data Area (LSDA) that …","Returns a reference to the underlying CrateNamespace that …","","The address of the personality function that corresponds …","Returns the array of register values as they existed …","","","","","","","","",""],"i":[0,0,0,0,14,3,1,14,3,1,1,3,1,14,3,1,1,14,3,1,3,0,1,3,3,1,3,14,3,1,14,3,1,14,3,1],"f":[0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[[3,4],5],[[1,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[1,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[8,[6,7]]],9],[1,[[10,[2]]]],[3,[[12,[11]]]],[3,[[8,[10]]]],[1,[[10,[2]]]],0,[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,13,[]],[-1,13,[]],[-1,13,[]]],"c":[],"p":[[3,"StackFrame",0],[15,"u64"],[3,"StackFrameIter",0],[3,"Formatter",36],[6,"Result",36],[15,"tuple"],[15,"str"],[4,"Result",37],[25,"FuncWithRegisters",0],[4,"Option",38],[3,"CrateNamespace",39],[3,"Arc",40],[3,"TypeId",41],[3,"UnwindingContext",0]],"b":[]},\ "vfs_node":{"doc":"This crate contains a very basic, generic concrete …","t":"DLLMLLLLLLLLMMLLLLL","n":["VFSDirectory","borrow","borrow_mut","children","create","from","get","get_name","get_parent_dir","insert","into","list","name","parent","remove","set_parent_dir","try_from","try_into","type_id"],"q":[[0,"vfs_node"],[19,"alloc::string"],[20,"fs_node"],[21,"core::result"],[22,"fs_node"],[23,"alloc::vec"],[24,"fs_node"]],"d":["A struct that represents a node in the VFS ","","","A list of child filesystem nodes","Creates a new directory and passes a pointer to the new …","Returns the argument unchanged.","","","Returns a pointer to the parent if it exists","","Calls U::from(self).","Returns a string listing all the children in the directory","The name of the directory","A weak reference to the parent directory","","","","",""],"i":[0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],"f":[0,[-1,-2,[],[]],[-1,-2,[],[]],0,[[1,2],[[4,[2,3]]]],[-1,-1,[]],[[5,3],[[7,[6]]]],[5,1],[5,[[7,[2]]]],[[5,6],[[4,[[7,[6]],3]]]],[-1,-2,[],[]],[5,[[8,[1]]]],0,0,[[5,6],[[7,[6]]]],[[5,9],10],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,11,[]]],"c":[],"p":[[3,"String",19],[6,"DirRef",20],[15,"str"],[4,"Result",21],[3,"VFSDirectory",0],[4,"FileOrDir",20],[4,"Option",22],[3,"Vec",23],[6,"WeakDirRef",20],[15,"tuple"],[3,"TypeId",24]],"b":[]},\ diff --git a/doc/serial_port/struct.SerialPort.html b/doc/serial_port/struct.SerialPort.html index 2f437b6c27..7f916b2df8 100644 --- a/doc/serial_port/struct.SerialPort.html +++ b/doc/serial_port/struct.SerialPort.html @@ -49,15 +49,15 @@
    Special characters Self: Sized,

    Transforms this Read instance to an Iterator over its bytes. Read more
    §

    fn chain<R>(self, next: R) -> Chain<Self, R>where R: Read, Self: Sized,

    Creates an adaptor which will chain this stream with another. Read more
    §

    fn take(self, limit: u64) -> Take<Self>where - Self: Sized,

    Creates an adaptor which will read at most limit bytes from it. Read more

    source§

    impl Write for SerialPort

    Forward the implementation of core::fmt::Write to the inner SerialPortBasic.

    -
    source§

    fn write_str(&mut self, s: &str) -> Result

    Writes a string slice into this writer, returning whether the write -succeeded. Read more
    1.1.0 · source§

    fn write_char(&mut self, c: char) -> Result<(), Error>

    Writes a char into this writer, returning whether the write succeeded. Read more
    1.0.0 · source§

    fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

    Glue for usage of the write! macro with implementors of this trait. Read more
    source§

    impl Write for SerialPort

    A blocking implementation of [core2::io::Write] that will write bytes from the given buf + Self: Sized,

    Creates an adaptor which will read at most limit bytes from it. Read more
    source§

    impl Write for SerialPort

    A blocking implementation of [core2::io::Write] that will write bytes from the given buf to the SerialPort, waiting until it is ready to transfer all bytes.

    The flush() function is a no-op, since the SerialPort does not have buffering.

    source§

    fn write(&mut self, buf: &[u8]) -> Result<usize>

    Write a buffer into this writer, returning how many bytes were written. Read more
    source§

    fn flush(&mut self) -> Result<()>

    Flush this output stream, ensuring that all intermediately buffered -contents reach their destination. Read more
    §

    fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

    Attempts to write an entire buffer into this writer. Read more
    §

    fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

    Writes a formatted string into this writer, returning any error +contents reach their destination. Read more
    §

    fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

    Attempts to write an entire buffer into this writer. Read more
    §

    fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

    Writes a formatted string into this writer, returning any error encountered. Read more
    §

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Creates a “by reference” adaptor for this instance of Write. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + Self: Sized,

    Creates a “by reference” adaptor for this instance of Write. Read more
    source§

    impl Write for SerialPort

    Forward the implementation of core::fmt::Write to the inner SerialPortBasic.

    +
    source§

    fn write_str(&mut self, s: &str) -> Result

    Writes a string slice into this writer, returning whether the write +succeeded. Read more
    1.1.0 · source§

    fn write_char(&mut self, c: char) -> Result<(), Error>

    Writes a char into this writer, returning whether the write succeeded. Read more
    1.0.0 · source§

    fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

    Glue for usage of the write! macro with implementors of this trait. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/src-files.js b/doc/src-files.js index 3a1daa6adb..ab4e4bbf13 100644 --- a/doc/src-files.js +++ b/doc/src-files.js @@ -7,7 +7,6 @@ var srcIndex = JSON.parse('{\ "apic":["",[],["lib.rs"]],\ "app_io":["",[],["lib.rs"]],\ "arm_boards":["",[],["lib.rs"]],\ -"async_channel":["",[],["lib.rs"]],\ "ata":["",[],["lib.rs"]],\ "atomic_linked_list":["",[],["atomic_linked_list.rs","atomic_map.rs","lib.rs"]],\ "block_allocator":["",[],["lib.rs"]],\ @@ -157,6 +156,7 @@ var srcIndex = JSON.parse('{\ "storage_manager":["",[],["lib.rs"]],\ "str_ref":["",[],["lib.rs"]],\ "sync_block":["",[],["condvar.rs","lib.rs"]],\ +"sync_channel":["",[],["lib.rs"]],\ "sync_preemption":["",[],["lib.rs"]],\ "task":["",[],["lib.rs","scheduler.rs"]],\ "task_fs":["",[],["lib.rs"]],\ diff --git a/doc/src/arm_boards/lib.rs.html b/doc/src/arm_boards/lib.rs.html index 4d7d720762..6196ab7757 100644 --- a/doc/src/arm_boards/lib.rs.html +++ b/doc/src/arm_boards/lib.rs.html @@ -72,6 +72,9 @@ 72 73 74 +75 +76 +77
    //! Configuration and definitions for specific boards on aarch64 systems.
     //!
     //! | Board Name | Num CPUs  | Interrupt Controller | Secondary CPU Startup Method |
    @@ -129,6 +132,9 @@
         // aarch64 manuals define the default timer IRQ number to be 30.
         pub cpu_local_timer_ppi: u8,
     
    +    /// The IRQ numbers reserved for legacy PCI interrupts: INTA, INTB, INTC and INTD.
    +    pub pci_intx: [u8; 4],
    +
         pub pci_ecam: PciEcamConfig,
     }
     
    diff --git a/doc/src/console/lib.rs.html b/doc/src/console/lib.rs.html
    index 49f3b442e6..58c7512c1a 100644
    --- a/doc/src/console/lib.rs.html
    +++ b/doc/src/console/lib.rs.html
    @@ -193,7 +193,7 @@
     extern crate alloc;
     
     use alloc::{format, sync::Arc};
    -use async_channel::Receiver;
    +use sync_channel::Receiver;
     use core::sync::atomic::{AtomicU16, Ordering};
     use core2::io::Write;
     use sync_irq::IrqSafeMutex;
    @@ -219,7 +219,7 @@
     ///
     /// Returns the newly-spawned detection task.
     pub fn start_connection_detection() -> Result<JoinableTaskRef, &'static str> {
    -    let (sender, receiver) = async_channel::new_channel(4);
    +    let (sender, receiver) = sync_channel::new_channel(4);
         serial_port::set_connection_listener(sender);
     
         spawn::new_task_builder(console_connection_detector, receiver)
    @@ -257,7 +257,7 @@
                 }
             };
     
    -        let (sender, receiver) = async_channel::new_channel(16);
    +        let (sender, receiver) = sync_channel::new_channel(16);
             if serial_port.lock().set_data_sender(sender).is_err() {
                 warn!(
                     "Serial port {:?} already had a data sender, skipping console connection request",
    diff --git a/doc/src/device_manager/lib.rs.html b/doc/src/device_manager/lib.rs.html
    index 84d80530b9..b8ce9d87f3 100644
    --- a/doc/src/device_manager/lib.rs.html
    +++ b/doc/src/device_manager/lib.rs.html
    @@ -286,16 +286,29 @@
     286
     287
     288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
     
    #![no_std]
     #![cfg_attr(target_arch = "x86_64", feature(trait_alias))]
     
     extern crate alloc;
     
    -use log::{info, debug};
    +use log::*;
     
     #[cfg(target_arch = "x86_64")]
     use {
    -    log::{error, warn},
         mpmc::Queue,
         event_types::Event,
         memory::MemoryManagementInfo,
    @@ -365,19 +378,24 @@
         // PS/2 is x86_64 only
         #[cfg(target_arch = "x86_64")] {
             let ps2_controller = ps2::init()?;
    -        keyboard::init(ps2_controller.keyboard_ref(), key_producer)?;
    -        mouse::init(ps2_controller.mouse_ref(), mouse_producer)?;
    +        if let Some(kb) = ps2_controller.keyboard_ref() {
    +            keyboard::init(kb, key_producer)?;
    +        }
    +        if let Some(m) = ps2_controller.mouse_ref() {
    +            mouse::init(m, mouse_producer)?;
    +        }
         }
     
    +    pci::init()?;
    +
         // Initialize/scan the PCI bus to discover PCI devices
         for dev in pci::pci_device_iter()? {
             debug!("Found PCI device: {:X?}", dev);
         }
     
    -    // No NIC support on aarch64 at the moment
    -    #[cfg(target_arch = "x86_64")] {
    -
         // store all the initialized ixgbe NICs here to be added to the network interface list
    +    // No NIC support on aarch64 at the moment
    +    #[cfg(target_arch = "x86_64")]
         let mut ixgbe_devs = Vec::new();
     
         // Iterate over all PCI devices and initialize the drivers for the devices we support.
    @@ -389,6 +407,8 @@
             }
     
             // If this is a storage device, initialize it as such.
    +        // No storage device support on aarch64 at the moment
    +        #[cfg(target_arch = "x86_64")]
             match storage_manager::init_device(dev) {
                 // Successfully initialized this storage device.
                 Ok(Some(_storage_controller)) => continue,
    @@ -405,6 +425,8 @@
     
             // If this is a network device, initialize it as such.
             // Look for networking controllers, specifically ethernet cards
    +        // No NIC support on aarch64 at the moment
    +        #[cfg(target_arch = "x86_64")]
             if dev.class == 0x02 && dev.subclass == 0x00 {
                 if dev.vendor_id == e1000::INTEL_VEND && dev.device_id == e1000::E1000_DEV {
                     info!("e1000 PCI device found at: {:?}", dev.location);
    @@ -455,18 +477,25 @@
         }
     
         // Once all the NICs have been initialized, we can store them and add them to the list of network interfaces.
    -    let ixgbe_nics = ixgbe::IXGBE_NICS.call_once(|| ixgbe_devs);
    -    for ixgbe_nic_ref in ixgbe_nics.iter() {
    -        net::register_device(ixgbe_nic_ref);
    +    // No NIC support on aarch64 at the moment
    +    #[cfg(target_arch = "x86_64")] {
    +        let ixgbe_nics = ixgbe::IXGBE_NICS.call_once(|| ixgbe_devs);
    +        for ixgbe_nic_ref in ixgbe_nics.iter() {
    +            net::register_device(ixgbe_nic_ref);
    +        }
         }
     
         // Convenience notification for developers to inform them of no networking devices
    +    // No NIC support on aarch64 at the moment
    +    #[cfg(target_arch = "x86_64")]
         if net::get_default_interface().is_none() {
             warn!("Note: no network devices found on this system.");
         }
     
         // Discover filesystems from each storage device on the storage controllers initialized above
         // and mount each filesystem to the root directory by default.
    +    // No storage device support on aarch64 at the moment
    +    #[cfg(target_arch = "x86_64")]
         if false {
             for storage_device in storage_manager::storage_devices() {
                 let disk = fatfs_adapter::FatFsAdapter::new(
    @@ -501,7 +530,6 @@
                 }
             }
         }
    -    }
     
         Ok(())
     }
    diff --git a/doc/src/environment/lib.rs.html b/doc/src/environment/lib.rs.html
    index 06138eb1b4..fae2065310 100644
    --- a/doc/src/environment/lib.rs.html
    +++ b/doc/src/environment/lib.rs.html
    @@ -91,6 +91,8 @@
     91
     92
     93
    +94
    +95
     
    #![no_std]
     
     extern crate alloc;
    @@ -124,15 +126,17 @@
         /// Changes the current working directory.
         #[doc(alias("change"))]
         pub fn chdir(&mut self, path: &Path) -> Result<()> {
    -        let new_dir = self.working_dir.lock().get(path.as_ref());
    -        match new_dir {
    -            Some(FileOrDir::Dir(dir_ref)) => {
    -                self.working_dir = dir_ref;
    -                Ok(())
    +        for component in path.components() {
    +            let new = self.working_dir.lock().get(component.as_ref());
    +            match new {
    +                Some(FileOrDir::Dir(dir)) => {
    +                    self.working_dir = dir;
    +                }
    +                Some(FileOrDir::File(_)) => return Err(Error::NotADirectory),
    +                None => return Err(Error::NotFound),
                 }
    -            Some(FileOrDir::File(_)) => Err(Error::NotADirectory),
    -            None => Err(Error::NotFound),
             }
    +        Ok(())
         }
     
         /// Returns the value of the environment variable with the given `key`.
    diff --git a/doc/src/ixgbe/lib.rs.html b/doc/src/ixgbe/lib.rs.html
    index 944886b9ba..b5d7efaf0a 100644
    --- a/doc/src/ixgbe/lib.rs.html
    +++ b/doc/src/ixgbe/lib.rs.html
    @@ -1273,6 +1273,8 @@
     1273
     1274
     1275
    +1276
    +1277
     

    //! An ixgbe driver for a 82599 10GbE Network Interface Card.
     //! 
     //! Currently we support basic send and receive, Receive Side Scaling (RSS), 5-tuple filters, and MSI interrupts. 
    @@ -1619,8 +1621,10 @@
             // enable msi-x interrupts if required and return the assigned interrupt numbers
             let interrupt_num =
                 if let Some(interrupt_handlers) = interrupts {
    -                ixgbe_pci_dev.pci_enable_msix()?;
    -                ixgbe_pci_dev.pci_set_interrupt_disable_bit();
    +                // no need to disable legacy interrupts, it was done during device initialization.
    +                // ixgbe_pci_dev.pci_set_interrupt_disable_bit(true);
    +
    +                ixgbe_pci_dev.pci_enable_msix()?;
                     Self::enable_msix_interrupts(&mut mapped_registers1, &mut rx_queues, &mut vector_table, &interrupt_handlers)?
                 }
                 else {
    diff --git a/doc/src/pci/lib.rs.html b/doc/src/pci/lib.rs.html
    index e0997a0bee..0b4d7f01ae 100644
    --- a/doc/src/pci/lib.rs.html
    +++ b/doc/src/pci/lib.rs.html
    @@ -924,11 +924,95 @@
     924
     925
     926
    +927
    +928
    +929
    +930
    +931
    +932
    +933
    +934
    +935
    +936
    +937
    +938
    +939
    +940
    +941
    +942
    +943
    +944
    +945
    +946
    +947
    +948
    +949
    +950
    +951
    +952
    +953
    +954
    +955
    +956
    +957
    +958
    +959
    +960
    +961
    +962
    +963
    +964
    +965
    +966
    +967
    +968
    +969
    +970
    +971
    +972
    +973
    +974
    +975
    +976
    +977
    +978
    +979
    +980
    +981
    +982
    +983
    +984
    +985
    +986
    +987
    +988
    +989
    +990
    +991
    +992
    +993
    +994
    +995
    +996
    +997
    +998
    +999
    +1000
    +1001
    +1002
    +1003
    +1004
    +1005
    +1006
     
    //! PCI Configuration Space Access
     //!
     //! Note: while pci currently uses port-io on x86 and mmio on aarch64,
     //! x86 may also support memory-based PCI configuration in the future;
     //! port-io is the legacy way to access the config space.
    +//!
    +//! For context on the various interrupt mechanisms (MSI/MSI-X/INTx):
    +//! - [this StackExchange reply](https://electronics.stackexchange.com/a/343218)
    +//! - PCI Express Base Specification, Revision 2, Chapter 6.1 - Interrupt & PME Support
     
     #![no_std]
     #![allow(dead_code)]
    @@ -936,7 +1020,7 @@
     extern crate alloc;
     
     use log::*;
    -use core::{fmt, ops::{Deref, DerefMut}, mem::size_of};
    +use core::{fmt, ops::{Deref, DerefMut}, mem::size_of, task::Waker};
     use alloc::vec::Vec;
     use spin::{Once, Mutex};
     use memory::{PhysicalAddress, BorrowedSliceMappedPages, Mutable, MappedPages, map_frame_range, MMIO_FLAGS};
    @@ -950,7 +1034,10 @@
     use port_io::Port;
     
     #[cfg(target_arch = "aarch64")]
    -use arm_boards::BOARD_CONFIG;
    +use {
    +    arm_boards::BOARD_CONFIG,
    +    interrupts::{EoiBehaviour, interrupt_handler, init_pci_interrupts},
    +};
     
     #[derive(Debug, Copy, Clone)]
     /// The span of bytes within a 4-byte chunk that a PCI register occupies.
    @@ -1047,6 +1134,8 @@
     pci_register!(PCI_MIN_GRANT,           0x3E, 1);
     pci_register!(PCI_MAX_LATENCY,         0x3F, 1);
     
    +const PCI_COMMAND_INT_DISABLED: u16 = 1 << 10;
    +
     #[repr(u8)]
     pub enum PciCapability {
         Msi  = 0x05,
    @@ -1133,6 +1222,37 @@
         Ok(get_pci_buses()?.iter().flat_map(|b| b.devices.iter()))
     }
     
    +static INTX_DEVICES: Mutex<Vec<&'static PciDevice>> = Mutex::new(Vec::new());
    +
    +// Architecture-independent PCI interrupt handler
    +// Currently aarch64-only, because legacy interrupts aren't supported on x86 yet.
    +#[cfg(target_arch = "aarch64")]
    +interrupt_handler!(pci_int_handler, None, _stack_frame, {
    +    let devices = INTX_DEVICES.lock();
    +
    +    for device in &*devices {
    +        if device.pci_get_interrupt_status(true) {
    +            device.pci_enable_interrupts(false);
    +            log::info!("Device {} triggered an interrupt", device.location);
    +
    +            let reader = device.interrupt_waker.lock();
    +            match &*reader {
    +                Some(waker) => waker.wake_by_ref(),
    +                None => log::error!("Device doesn't have an interrupt waker!"),
    +            }
    +        }
    +    }
    +
    +    EoiBehaviour::HandlerDidNotSendEoi
    +});
    +
    +/// Initializes the PCI interrupt handler
    +pub fn init() -> Result<(), &'static str> {
    +    #[cfg(target_arch = "aarch64")]
    +    init_pci_interrupts([pci_int_handler; 4])?;
    +
    +    Ok(())
    +}
     
     /// A PCI bus, which contains a list of PCI devices on that bus.
     #[derive(Debug)]
    @@ -1212,8 +1332,12 @@
                         int_pin:          location.pci_read_8(PCI_INTERRUPT_PIN),
                         int_line:         location.pci_read_8(PCI_INTERRUPT_LINE),
                         location,
    +                    interrupt_waker: Mutex::new(None),
                     };
     
    +                // disable legacy interrupts initially
    +                device.pci_enable_interrupts(false);
    +
                     device_list.push(device);
                 }
             }
    @@ -1432,18 +1556,21 @@
         }
     
         /// Sets the PCI device's command bit 10 to disable legacy interrupts
    -    pub fn pci_set_interrupt_disable_bit(&self) {
    +    pub fn pci_set_interrupt_disable_bit(&self, bit: bool) {
             let command = self.pci_read_16(PCI_COMMAND);
    -        trace!("pci_set_interrupt_disable_bit: PciDevice: {}, read value: {:#x}", self, command);
    +        // trace!("pci_set_interrupt_disable_bit: PciDevice: {}, read value: {:#x}", self, command);
     
    -        const INTERRUPT_DISABLE: u16 = 1 << 10;
    -        self.pci_write_16(PCI_COMMAND, command | INTERRUPT_DISABLE);
    +        let new_value = match bit {
    +            true => command | PCI_COMMAND_INT_DISABLED,
    +            false => command & !PCI_COMMAND_INT_DISABLED,
    +        };
    +        self.pci_write_16(PCI_COMMAND, new_value);
     
    -        trace!("pci_set_interrupt_disable_bit: PciDevice: {} read value AFTER WRITE CMD: {:#x}", 
    -            self,
    -            self.pci_read_16(PCI_COMMAND),
    -        );
    -    }
    +        /*trace!("pci_set_interrupt_disable_bit: PciDevice: {} read value AFTER WRITE CMD: {:#x}", 
    +            self,
    +            self.pci_read_16(PCI_COMMAND),
    +        );*/
    +    }
     
         /// Explores the PCI config space and returns address of requested capability, if present.
         /// PCI capabilities are stored as a linked list in the PCI config space,
    @@ -1515,6 +1642,9 @@
         /// the bus, slot, and function number that locates this PCI device in the bus tree.
         pub location: PciLocation,
     
    +    /// The handling task for legacy PCI interrupts
    +    pub interrupt_waker: Mutex<Option<Waker>>,
    +
         /// The class code, used to determine device type.
         pub class: u8,
         /// The subclass code, used to determine device type.
    @@ -1755,6 +1885,36 @@
     
             Ok((int_line, int_pin))
         }
    +
    +    /// Enables/Disables legacy (INTx) interrupts for this device
    +    pub fn pci_enable_interrupts(&self, enable: bool) {
    +        self.pci_set_interrupt_disable_bit(!enable);
    +    }
    +
    +    /// Reads and returns this PCI device's interrupt status flag.
    +    pub fn pci_get_interrupt_status(&self, check_enabled: bool) -> bool {
    +        const PCI_STATUS_INT: u16 = 1 << 3;
    +
    +        let interrupt_enabled = || (self.pci_read_16(PCI_COMMAND) & PCI_COMMAND_INT_DISABLED) == 0;
    +        let pending_interrupt = || (self.pci_read_16(PCI_STATUS)  & PCI_STATUS_INT          ) != 0;
    +
    +        ((!check_enabled) || interrupt_enabled()) && pending_interrupt()
    +    }
    +
    +    /// Sets a task waker to be used when this device triggers an interrupt
    +    ///
    +    /// Returns the previous interrupt waker for this device, if there was one.
    +    pub fn set_interrupt_waker(&'static self, waker: Waker) -> Option<Waker> {
    +        let mut handle = self.interrupt_waker.lock();
    +        let prev_value = handle.replace(waker);
    +
    +        if prev_value.is_none() {
    +            let mut intx_devices = INTX_DEVICES.lock();
    +            intx_devices.push(self)
    +        }
    +
    +        prev_value
    +    }
     }
     
     impl Deref for PciDevice {
    diff --git a/doc/src/ps2/lib.rs.html b/doc/src/ps2/lib.rs.html
    index 4ab360a3b9..e4fde3eeb1 100644
    --- a/doc/src/ps2/lib.rs.html
    +++ b/doc/src/ps2/lib.rs.html
    @@ -1133,6 +1133,24 @@
     1133
     1134
     1135
    +1136
    +1137
    +1138
    +1139
    +1140
    +1141
    +1142
    +1143
    +1144
    +1145
    +1146
    +1147
    +1148
    +1149
    +1150
    +1151
    +1152
    +1153
     
    //! Driver for the PS/2 interface, which supports legacy keyboard and mouse devices.
     //!
     //! The [`init()`] function sets up the single system-wide [`PS2Controller`],
    @@ -1185,9 +1203,13 @@
         }
     
         // Here: the PS/2 Controller exists, so create the object representing it.
    -    let controller = PS2Controller {
    +    let mut controller = PS2Controller {
             data_port: Mutex::new(Port::new(PS2Controller::PS2_DATA_PORT)),
    -        command_and_status_port: Mutex::new(Port::new(PS2Controller::PS2_COMMAND_AND_STATUS_PORT))
    +        command_and_status_port: Mutex::new(Port::new(
    +            PS2Controller::PS2_COMMAND_AND_STATUS_PORT
    +        )),
    +        keyboard_attached: false,
    +        mouse_attached: false,
         };
     
         // Step 3: Disable Devices
    @@ -1242,8 +1264,18 @@
         controller.write_config(config);
     
         // Step 10: Reset Devices
    -    controller.keyboard_ref().reset()?;
    -    controller.mouse_ref().reset()?;
    +    let keyboard_ref = PS2Keyboard::new(&controller);
    +    if let Err(e) = keyboard_ref.reset() {
    +        warn!("couldn't reset the keyboard; assuming there is none: {e}");
    +    } else {
    +        controller.keyboard_attached = true;
    +    }
    +    let mouse_ref = PS2Mouse::new(&controller);
    +    if let Err(e) = mouse_ref.reset() {
    +        warn!("couldn't reset the mouse; assuming there is none: {e}");
    +    } else {
    +        controller.mouse_attached = true;
    +    }
     
         debug!("Final PS/2 {:?}", controller.read_config());
         
    @@ -1257,6 +1289,10 @@
         data_port: Mutex<Port<u8>>,
         /// at 0x64
         command_and_status_port: Mutex<Port<u8>>,
    +    /// whether a keyboard could be successfully detected
    +    keyboard_attached: bool,
    +    /// whether a mouse could be successfully detected
    +    mouse_attached: bool,
     }
     
     impl PS2Controller {
    @@ -1268,15 +1304,15 @@
         /// Returns a reference to the keyboard attached to this PS/2 controller.
         ///
         /// The keyboard only uses the data port.
    -    pub fn keyboard_ref(&self) -> PS2Keyboard {
    -        PS2Keyboard::new(self)
    +    pub fn keyboard_ref(&self) -> Option<PS2Keyboard> {
    +        self.keyboard_attached.then_some(PS2Keyboard::new(self))
         }
     
         /// Returns a reference to the mouse attached to this PS/2 controller.
         ///
         /// The mouse uses both the data port and the command/status port.
    -    pub fn mouse_ref(&self) -> PS2Mouse {
    -        PS2Mouse::new(self)
    +    pub fn mouse_ref(&self) -> Option<PS2Mouse> {
    +        self.mouse_attached.then_some(PS2Mouse::new(self))
         }
     
         /// Writes a command to the PS/2 command port.
    @@ -1444,7 +1480,7 @@
         /// Reset the mouse.
         pub fn reset(&self) -> Result<(), &'static str> {
             self.command_to_mouse(HostToMouseCommandOrData::MouseCommand(Reset))?;
    -        const VERY_ARBITRARY_TIMEOUT_VALUE: u16 = u16::MAX;
    +        const VERY_ARBITRARY_TIMEOUT_VALUE: u32 = u16::MAX as u32 * 3;
             for _ in 0..VERY_ARBITRARY_TIMEOUT_VALUE {
                 if let Ok(SelfTestPassed) = self.controller.read_data().try_into() { //not sure if we need to do this here, as command_to_mouse handles it on real hardware at least (same goes for keyboard reset)
                     //returns mouse id 0
    @@ -1611,7 +1647,7 @@
             self.command_to_keyboard(HostToKeyboardCommandOrData::KeyboardCommand(ResetAndStartSelfTest))?;
             // VirtualBox and presumably real hardware wants this. Qemu worked without this.
             // Sadly self.controller.polling_receive doesn't work here, either.
    -        const VERY_ARBITRARY_TIMEOUT_VALUE: u16 = u16::MAX;
    +        const VERY_ARBITRARY_TIMEOUT_VALUE: u32 = u16::MAX as u32 * 4;
             for _ in 0..VERY_ARBITRARY_TIMEOUT_VALUE {
                 if let Ok(SelfTestPassed) = self.controller.read_data().try_into() {
                     return Ok(())
    diff --git a/doc/src/serial_port/lib.rs.html b/doc/src/serial_port/lib.rs.html
    index 3542d951d1..431ad05633 100644
    --- a/doc/src/serial_port/lib.rs.html
    +++ b/doc/src/serial_port/lib.rs.html
    @@ -453,8 +453,8 @@
     
     // Dependencies below here are temporary and will be removed
     // after we have support for separate interrupt handling tasks.
    -extern crate async_channel;
    -use async_channel::Sender;
    +extern crate sync_channel;
    +use sync_channel::Sender;
     
     /// A temporary hack to allow the serial port interrupt handler
     /// to inform a listener on the other end of this channel
    diff --git a/doc/src/async_channel/lib.rs.html b/doc/src/sync_channel/lib.rs.html
    similarity index 92%
    rename from doc/src/async_channel/lib.rs.html
    rename to doc/src/sync_channel/lib.rs.html
    index 18cabd1d6a..ef0d43c0c6 100644
    --- a/doc/src/async_channel/lib.rs.html
    +++ b/doc/src/sync_channel/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -521,11 +521,11 @@
     521
     522
     523
    -
    //! An asynchronous channel for Inter-Task Communication (ITC) with an internal queue for buffering messages.
    +
    //! A blocking channel for Inter-Task Communication (ITC) with an internal queue for buffering messages.
     //! 
    -//! This crate offers an asynchronous channel that allows multiple tasks
    -//! to exchange messages through the use of a bounded-capacity intermediate buffer.
    -//! Unlike the `rendezvous` channel, the sender and receiver do not need to rendezvous to send or receive data.
    +//! This crate offers a blocking channel that allows multiple tasks to exchange messages through the
    +//! use of a bounded-capacity intermediate buffer. Unlike the `rendezvous` channel, the sender and
    +//! receiver do not need to rendezvous to send or receive data.
     //! 
     //! Only `Send` types can be sent or received through the channel.
     //! 
    @@ -572,11 +572,11 @@
         new_channel_with(minimum_capacity)
     }
     
    -/// Creates a new asynchronous channel with the specified deadlock prevention method.
    +/// Creates a new blocking channel with the specified deadlock prevention method.
     ///
     /// See [`new_channel()`] for more details.
     ///
    -/// The asynchronous channel uses a wait queue internally and hence exposes a
    +/// The blocking channel uses a wait queue internally and hence exposes a
     /// deadlock prevention type parameter `P` that is [`Spin`] by default.
     /// See [`WaitQueue`]'s documentation for more info on setting this type parameter.
     pub fn new_channel_with<T: Send, P: DeadlockPrevention>(
    @@ -632,7 +632,7 @@
     
     /// The inner channel for asynchronous communication between `Sender`s and `Receiver`s.
     ///
    -/// This struct is effectively a wrapper around a MPMC queue 
    +/// This struct is effectively a wrapper around an MPMC queue
     /// with waitqueues for senders (producers) and receivers (consumers).
     /// 
     /// This channel object is not Send/Sync or cloneable itself;
    @@ -707,7 +707,7 @@
         /// otherwise returns an [`Error`]. 
         pub fn send(&self, msg: T) -> Result<(), Error> {
             #[cfg(trace_channel)]
    -        trace!("async_channel: sending msg: {:?}", debugit!(msg));
    +        trace!("sync_channel: sending msg: {:?}", debugit!(msg));
             // Fast path: attempt to send the message, assuming the buffer isn't full
             let msg = match self.try_send(msg) {
                 // if successful return ok
    @@ -888,7 +888,7 @@
         /// 
         /// Returns the message if it was received properly, otherwise returns an [`Error`].
         pub fn receive(&self) -> Result<T, Error> {
    -        // trace!("async_channel: receive() entry");
    +        // trace!("sync_channel: receive() entry");
             // Fast path: attempt to receive a message, assuming the buffer isn't empty
             // The code progresses beyond this match only if try_receive fails due to
             // empty channel
    @@ -896,7 +896,7 @@
                 Err(Error::WouldBlock) => {},
                 x => {
                     #[cfg(trace_channel)]
    -                trace!("async_channel: received msg: {:?}", debugit!(x));
    +                trace!("sync_channel: received msg: {:?}", debugit!(x));
                     return x;
                 }
             };
    @@ -931,12 +931,12 @@
             // If we successfully received a message, we need to notify any waiting senders.
             // As stated above, to avoid deadlock, this must be done here rather than in the above closure.
             if let Ok(ref _msg) = res {
    -            // trace!("async_channel: successful receive() is notifying senders.");
    +            // trace!("sync_channel: successful receive() is notifying senders.");
                 self.channel.waiting_senders.notify_one();
             }
     
             #[cfg(trace_channel)]
    -        trace!("async_channel: received msg: {:?}", debugit!(res));
    +        trace!("sync_channel: received msg: {:?}", debugit!(res));
             
             res
         }
    diff --git a/doc/src/tty/channel.rs.html b/doc/src/tty/channel.rs.html
    index 18beda9f06..3a52da0810 100644
    --- a/doc/src/tty/channel.rs.html
    +++ b/doc/src/tty/channel.rs.html
    @@ -36,7 +36,7 @@
     36
     37
     38
    -
    use async_channel::{Receiver, Sender};
    +
    use sync_channel::{Receiver, Sender};
     use core2::io::Result;
     
     #[derive(Clone)]
    @@ -47,7 +47,7 @@
     
     impl Channel {
         pub(crate) fn new() -> Self {
    -        let (sender, receiver) = async_channel::new_channel(256);
    +        let (sender, receiver) = sync_channel::new_channel(256);
             Self { sender, receiver }
         }
     
    diff --git a/doc/src/tty/discipline.rs.html b/doc/src/tty/discipline.rs.html
    index 81433620ac..0dac8bb89f 100644
    --- a/doc/src/tty/discipline.rs.html
    +++ b/doc/src/tty/discipline.rs.html
    @@ -278,7 +278,7 @@
     
     use crate::Channel;
     use alloc::vec::Vec;
    -use async_channel::{new_channel, Receiver, Sender};
    +use sync_channel::{new_channel, Receiver, Sender};
     use core2::io::Result;
     use sync_block::Mutex;
     
    diff --git a/doc/stdio/struct.KeyEventQueueReader.html b/doc/stdio/struct.KeyEventQueueReader.html
    index 4abc76dd32..358a177fae 100644
    --- a/doc/stdio/struct.KeyEventQueueReader.html
    +++ b/doc/stdio/struct.KeyEventQueueReader.html
    @@ -1,5 +1,5 @@
     KeyEventQueueReader in stdio - Rust
    pub struct KeyEventQueueReader { /* private fields */ }
    Expand description

    A reader to keyevent ring buffer.

    -

    Implementations§

    source§

    impl KeyEventQueueReader

    source

    pub fn read_one(&self) -> Option<KeyEvent>

    Try to read a keyevent from the ring buffer. It returns None if currently +

    Implementations§

    source§

    impl KeyEventQueueReader

    source

    pub fn read_one(&self) -> Option<KeyEvent>

    Try to read a keyevent from the ring buffer. It returns None if currently the ring buffer is empty.

    Trait Implementations§

    source§

    impl Clone for KeyEventQueueReader

    source§

    fn clone(&self) -> KeyEventQueueReader

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/doc/stdio/struct.KeyEventQueueWriter.html b/doc/stdio/struct.KeyEventQueueWriter.html index b642149cad..535db9cf36 100644 --- a/doc/stdio/struct.KeyEventQueueWriter.html +++ b/doc/stdio/struct.KeyEventQueueWriter.html @@ -1,5 +1,5 @@ KeyEventQueueWriter in stdio - Rust
    pub struct KeyEventQueueWriter { /* private fields */ }
    Expand description

    A writer to keyevent ring buffer.

    -

    Implementations§

    source§

    impl KeyEventQueueWriter

    source

    pub fn write_one(&self, key_event: KeyEvent)

    Push a keyevent into the ring buffer.

    +

    Implementations§

    source§

    impl KeyEventQueueWriter

    source

    pub fn write_one(&self, key_event: KeyEvent)

    Push a keyevent into the ring buffer.

    Trait Implementations§

    source§

    impl Clone for KeyEventQueueWriter

    source§

    fn clone(&self) -> KeyEventQueueWriter

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere diff --git a/doc/sync_channel/all.html b/doc/sync_channel/all.html new file mode 100644 index 0000000000..0cf53cd74c --- /dev/null +++ b/doc/sync_channel/all.html @@ -0,0 +1 @@ +List of all items in this crate
    \ No newline at end of file diff --git a/doc/async_channel/enum.ChannelStatus.html b/doc/sync_channel/enum.ChannelStatus.html similarity index 54% rename from doc/async_channel/enum.ChannelStatus.html rename to doc/sync_channel/enum.ChannelStatus.html index fb3f5bfac5..d3c6af7e25 100644 --- a/doc/async_channel/enum.ChannelStatus.html +++ b/doc/sync_channel/enum.ChannelStatus.html @@ -1,4 +1,4 @@ -ChannelStatus in async_channel - Rust

    Variants§

    §

    Connected

    Channel is working. Initially channel is created with Connected status.

    §

    SenderDisconnected

    Set to Disconnected when Sender end is dropped.

    §

    ReceiverDisconnected

    Set to Disconnected when Receiver end is dropped.

    -

    Trait Implementations§

    source§

    impl Clone for ChannelStatus

    source§

    fn clone(&self) -> ChannelStatus

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChannelStatus

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<ChannelStatus> for ChannelStatus

    source§

    fn eq(&self, other: &ChannelStatus) -> bool

    This method tests for self and other values to be equal, and is used +

    Trait Implementations§

    source§

    impl Clone for ChannelStatus

    source§

    fn clone(&self) -> ChannelStatus

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChannelStatus

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<ChannelStatus> for ChannelStatus

    source§

    fn eq(&self, other: &ChannelStatus) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for ChannelStatus

    source§

    impl StructuralPartialEq for ChannelStatus

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +sufficient, and should not be overridden without very good reason.

    source§

    impl Copy for ChannelStatus

    source§

    impl StructuralPartialEq for ChannelStatus

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/async_channel/enum.Error.html b/doc/sync_channel/enum.Error.html similarity index 54% rename from doc/async_channel/enum.Error.html rename to doc/sync_channel/enum.Error.html index fa57aa1ab7..9d9f8772ce 100644 --- a/doc/async_channel/enum.Error.html +++ b/doc/sync_channel/enum.Error.html @@ -1,4 +1,4 @@ -Error in async_channel - Rust

    Enum async_channel::Error

    source ·
    pub enum Error {
    +Error in sync_channel - Rust

    Enum sync_channel::Error

    source ·
    pub enum Error {
         WouldBlock,
         ChannelDisconnected,
     }
    Expand description

    Error type for tracking different type of errors sender and receiver @@ -7,9 +7,9 @@

    I.e. try_send is performed on a full channel or try_receive is performed on an empty channel.

    §

    ChannelDisconnected

    Occurs when one end of channel is dropped

    -

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Error> for Error

    source§

    fn from(e: Error) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq<Error> for Error

    source§

    fn eq(&self, other: &Error) -> bool

    This method tests for self and other values to be equal, and is used +

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Error> for Error

    source§

    fn from(e: Error) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq<Error> for Error

    source§

    fn eq(&self, other: &Error) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for Error

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +sufficient, and should not be overridden without very good reason.

    source§

    impl StructuralPartialEq for Error

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/sync_channel/fn.new_channel.html b/doc/sync_channel/fn.new_channel.html new file mode 100644 index 0000000000..831c66793c --- /dev/null +++ b/doc/sync_channel/fn.new_channel.html @@ -0,0 +1,14 @@ +new_channel in sync_channel - Rust

    Function sync_channel::new_channel

    source ·
    pub fn new_channel<T: Send>(minimum_capacity: usize) -> (Sender<T>, Receiver<T>)
    Expand description

    Create a new channel that allows senders and receivers to +asynchronously exchange messages via an internal intermediary buffer.

    +

    This channel’s buffer has a bounded capacity of minimum size 2 messages, +and it must be a power of 2 due to the restrictions of the current MPMC queue type that is used. +The given minimum_capacity will be rounded up to the next largest power of 2, with a minimum value of 2.

    +

    When the number of pending (buffered) messages is larger than the capacity, +the channel is considered full. +Depending on whether a non-blocking or blocking send function is invoked, +future attempts to send another message will either block or return a Full error +until the channel’s buffer is drained by a receiver and space in the buffer becomes available.

    +

    For the vast majority of use cases, this function is recommended way to create +a new channel, because there is no need to specify a deadlock prevention method. +To create a channel with different deadlock prevention, see new_channel_with().

    +
    \ No newline at end of file diff --git a/doc/sync_channel/fn.new_channel_with.html b/doc/sync_channel/fn.new_channel_with.html new file mode 100644 index 0000000000..6f09845f49 --- /dev/null +++ b/doc/sync_channel/fn.new_channel_with.html @@ -0,0 +1,8 @@ +new_channel_with in sync_channel - Rust
    pub fn new_channel_with<T: Send, P: DeadlockPrevention>(
    +    minimum_capacity: usize
    +) -> (Sender<T, P>, Receiver<T, P>)
    Expand description

    Creates a new blocking channel with the specified deadlock prevention method.

    +

    See new_channel() for more details.

    +

    The blocking channel uses a wait queue internally and hence exposes a +deadlock prevention type parameter P that is [Spin] by default. +See [WaitQueue]’s documentation for more info on setting this type parameter.

    +
    \ No newline at end of file diff --git a/doc/sync_channel/index.html b/doc/sync_channel/index.html new file mode 100644 index 0000000000..08ab5bbb99 --- /dev/null +++ b/doc/sync_channel/index.html @@ -0,0 +1,11 @@ +sync_channel - Rust

    Crate sync_channel

    source ·
    Expand description

    A blocking channel for Inter-Task Communication (ITC) with an internal queue for buffering messages.

    +

    This crate offers a blocking channel that allows multiple tasks to exchange messages through the +use of a bounded-capacity intermediate buffer. Unlike the rendezvous channel, the sender and +receiver do not need to rendezvous to send or receive data.

    +

    Only Send types can be sent or received through the channel.

    +

    This is not a zero-copy channel; to avoid copying large messages, +use a reference type like Box or another layer of indirection.

    +

    Structs

    • The receiver side of a channel.
    • The sender (transmit) side of a channel.

    Enums

    • Indicates whether channel is Connected or Disconnected
    • Error type for tracking different type of errors sender and receiver +can encounter.

    Functions

    • Create a new channel that allows senders and receivers to +asynchronously exchange messages via an internal intermediary buffer.
    • Creates a new blocking channel with the specified deadlock prevention method.
    \ No newline at end of file diff --git a/doc/async_channel/sidebar-items.js b/doc/sync_channel/sidebar-items.js similarity index 100% rename from doc/async_channel/sidebar-items.js rename to doc/sync_channel/sidebar-items.js diff --git a/doc/async_channel/struct.Receiver.html b/doc/sync_channel/struct.Receiver.html similarity index 55% rename from doc/async_channel/struct.Receiver.html rename to doc/sync_channel/struct.Receiver.html index 940447c5eb..6e448e66bc 100644 --- a/doc/async_channel/struct.Receiver.html +++ b/doc/sync_channel/struct.Receiver.html @@ -1,24 +1,24 @@ -Receiver in async_channel - Rust

    Struct async_channel::Receiver

    source ·
    pub struct Receiver<T: Send, P: DeadlockPrevention = Spin> { /* private fields */ }
    Expand description

    The receiver side of a channel.

    -

    Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Receiver<T, P>

    source

    pub fn receive(&self) -> Result<T, Error>

    Receive a message, blocking until a message is available in the buffer.

    -

    Returns the message if it was received properly, otherwise returns an Error.

    -
    source

    pub fn receive_buf(&self, buf: &mut [T]) -> Result<usize, Error>

    Receives objects placing them in a buffer and returning the number of objects received.

    +Receiver in sync_channel - Rust

    Struct sync_channel::Receiver

    source ·
    pub struct Receiver<T: Send, P: DeadlockPrevention = Spin> { /* private fields */ }
    Expand description

    The receiver side of a channel.

    +

    Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Receiver<T, P>

    source

    pub fn receive(&self) -> Result<T, Error>

    Receive a message, blocking until a message is available in the buffer.

    +

    Returns the message if it was received properly, otherwise returns an Error.

    +
    source

    pub fn receive_buf(&self, buf: &mut [T]) -> Result<usize, Error>

    Receives objects placing them in a buffer and returning the number of objects received.

    This method only blocks on the first object being received.

    -
    source

    pub fn try_receive(&self) -> Result<T, Error>

    Tries to receive a message, only succeeding if a message is already available in the buffer.

    +
    source

    pub fn try_receive(&self) -> Result<T, Error>

    Tries to receive a message, only succeeding if a message is already available in the buffer.

    If receive succeeds returns Some(Ok(T)). If an endpoint is disconnected returns Some(Err(ChannelStatus::Disconnected)). If no such message exists, it returns None without blocking

    -
    source

    pub fn try_receive_buf(&self, buf: &mut [T]) -> Result<usize, Error>

    Receives objects placing them in a buffer and returning the number of objects received.

    +
    source

    pub fn try_receive_buf(&self, buf: &mut [T]) -> Result<usize, Error>

    Receives objects placing them in a buffer and returning the number of objects received.

    This method does not block.

    -
    source

    pub fn is_disconnected(&self) -> bool

    Returns true if the channel is disconnected.

    -
    source

    pub fn sender(&self) -> Sender<T, P>

    Obtain a Sender endpoint connected to the same channel as this Receiver.

    -

    Trait Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Clone for Receiver<T, P>

    source§

    fn clone(&self) -> Self

    Clones this Receiver, returning another Receiver connected to the same channel.

    +
    source

    pub fn is_disconnected(&self) -> bool

    Returns true if the channel is disconnected.

    +
    source

    pub fn sender(&self) -> Sender<T, P>

    Obtain a Sender endpoint connected to the same channel as this Receiver.

    +

    Trait Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Clone for Receiver<T, P>

    source§

    fn clone(&self) -> Self

    Clones this Receiver, returning another Receiver connected to the same channel.

    This increments the channel’s receiver count. If there were previously no receivers, the channel status is updated to Connected.

    -
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Send, P: DeadlockPrevention> Drop for Receiver<T, P>

    When the only remaining Receiver is dropped, we mark the channel as disconnected +

    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Send, P: DeadlockPrevention> Drop for Receiver<T, P>

    When the only remaining Receiver is dropped, we mark the channel as disconnected and notify all of the Senders

    -
    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<T, P = Spin> !RefUnwindSafe for Receiver<T, P>

    §

    impl<T, P> Send for Receiver<T, P>where - T: Sync,

    §

    impl<T, P> Sync for Receiver<T, P>where - T: Sync,

    §

    impl<T, P> Unpin for Receiver<T, P>

    §

    impl<T, P = Spin> !UnwindSafe for Receiver<T, P>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<T, P = Spin> !RefUnwindSafe for Receiver<T, P>

    §

    impl<T, P> Send for Receiver<T, P>where + T: Sync,

    §

    impl<T, P> Sync for Receiver<T, P>where + T: Sync,

    §

    impl<T, P> Unpin for Receiver<T, P>

    §

    impl<T, P = Spin> !UnwindSafe for Receiver<T, P>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/async_channel/struct.Sender.html b/doc/sync_channel/struct.Sender.html similarity index 55% rename from doc/async_channel/struct.Sender.html rename to doc/sync_channel/struct.Sender.html index e9df6b18fc..5d87ccb93f 100644 --- a/doc/async_channel/struct.Sender.html +++ b/doc/sync_channel/struct.Sender.html @@ -1,27 +1,27 @@ -Sender in async_channel - Rust

    Struct async_channel::Sender

    source ·
    pub struct Sender<T: Send, P: DeadlockPrevention = Spin> { /* private fields */ }
    Expand description

    The sender (transmit) side of a channel.

    -

    Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Sender<T, P>

    source

    pub fn send(&self, msg: T) -> Result<(), Error>

    Send a message, blocking until space in the channel’s buffer is available.

    +Sender in sync_channel - Rust

    Struct sync_channel::Sender

    source ·
    pub struct Sender<T: Send, P: DeadlockPrevention = Spin> { /* private fields */ }
    Expand description

    The sender (transmit) side of a channel.

    +

    Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Sender<T, P>

    source

    pub fn send(&self, msg: T) -> Result<(), Error>

    Send a message, blocking until space in the channel’s buffer is available.

    Returns Ok(()) if the message was sent successfully, -otherwise returns an Error.

    -
    source

    pub fn send_buf(&self, buf: &[T]) -> Result<usize, Error>where +otherwise returns an Error.

    +

    source

    pub fn send_buf(&self, buf: &[T]) -> Result<usize, Error>where T: Copy,

    Sends a slice of objects through the channel, returning how many objects were sent.

    This method only blocks on the first object being sent.

    -
    source

    pub fn send_all(&self, buf: &[T]) -> Result<(), Error>where +

    source

    pub fn send_all(&self, buf: &[T]) -> Result<(), Error>where T: Copy,

    Attempts to send an entire slice of objects through the channel.

    -
    source

    pub fn try_send(&self, msg: T) -> Result<(), (T, Error)>

    Tries to send the message, only succeeding if buffer space is available.

    +
    source

    pub fn try_send(&self, msg: T) -> Result<(), (T, Error)>

    Tries to send the message, only succeeding if buffer space is available.

    If no buffer space is available, it returns the msg with Error back to the caller without blocking.

    -
    source

    pub fn try_send_buf(&self, buf: &[T]) -> Result<usize, Error>where +

    source

    pub fn try_send_buf(&self, buf: &[T]) -> Result<usize, Error>where T: Copy,

    Sends a slice of objects through the channel, returning how many objects were sent.

    This method does not block.

    -
    source

    pub fn is_disconnected(&self) -> bool

    Returns true if the channel is disconnected.

    -
    source

    pub fn receiver(&self) -> Receiver<T, P>

    Obtain a Receiver endpoint connected to the same channel as this Sender.

    -

    Trait Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Clone for Sender<T, P>

    source§

    fn clone(&self) -> Self

    Clones this Sender, returning another Sender connected to the same channel.

    +
    source

    pub fn is_disconnected(&self) -> bool

    Returns true if the channel is disconnected.

    +
    source

    pub fn receiver(&self) -> Receiver<T, P>

    Obtain a Receiver endpoint connected to the same channel as this Sender.

    +

    Trait Implementations§

    source§

    impl<T: Send, P: DeadlockPrevention> Clone for Sender<T, P>

    source§

    fn clone(&self) -> Self

    Clones this Sender, returning another Sender connected to the same channel.

    This increments the channel’s sender count. If there were previously no senders, the channel status is updated to Connected.

    -
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Send, P: DeadlockPrevention> Drop for Sender<T, P>

    When the only remaining Sender is dropped, we mark the channel as disconnected +

    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Send, P: DeadlockPrevention> Drop for Sender<T, P>

    When the only remaining Sender is dropped, we mark the channel as disconnected and notify all of the Receivers

    -
    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<T, P = Spin> !RefUnwindSafe for Sender<T, P>

    §

    impl<T, P> Send for Sender<T, P>where - T: Sync,

    §

    impl<T, P> Sync for Sender<T, P>where - T: Sync,

    §

    impl<T, P> Unpin for Sender<T, P>

    §

    impl<T, P = Spin> !UnwindSafe for Sender<T, P>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<T, P = Spin> !RefUnwindSafe for Sender<T, P>

    §

    impl<T, P> Send for Sender<T, P>where + T: Sync,

    §

    impl<T, P> Sync for Sender<T, P>where + T: Sync,

    §

    impl<T, P> Unpin for Sender<T, P>

    §

    impl<T, P = Spin> !UnwindSafe for Sender<T, P>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/tty/struct.Master.html b/doc/tty/struct.Master.html index 89f68cf581..a7b97afb3a 100644 --- a/doc/tty/struct.Master.html +++ b/doc/tty/struct.Master.html @@ -1,14 +1,14 @@ Master in tty - Rust

    Struct tty::Master

    source ·
    pub struct Master { /* private fields */ }
    Expand description

    The master (i.e. terminal) end of a Tty.

    Implementations§

    source§

    impl Master

    source

    pub fn discipline(&self) -> Arc<LineDiscipline>

    source

    pub fn read_byte(&self) -> Result<u8>

    source

    pub fn read(&self, buf: &mut [u8]) -> Result<usize>

    source

    pub fn try_read(&self, buf: &mut [u8]) -> Result<usize>

    source

    pub fn write_byte(&self, byte: u8) -> Result<()>

    source

    pub fn write(&self, buf: &[u8]) -> Result<usize>

    Trait Implementations§

    source§

    impl Clone for Master

    source§

    fn clone(&self) -> Master

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Read for Master

    source§

    fn read(&mut self, buf: &mut [u8]) -> Result<usize>

    Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
    §

    fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>

    Read all bytes until EOF in this source, placing them into buf. Read more
    §

    fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

    Read all bytes until EOF in this source, appending them to buf. Read more
    §

    unsafe fn initializer(&self) -> Initializer

    Determines if this Reader can work with buffers of uninitialized -memory. Read more
    §

    fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

    Read the exact number of bytes required to fill buf. Read more
    §

    fn by_ref(&mut self) -> &mut Selfwhere +memory. Read more

    §

    fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

    Read the exact number of bytes required to fill buf. Read more
    §

    fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,

    Creates a “by reference” adaptor for this instance of Read. Read more
    §

    fn bytes(self) -> Bytes<Self>where Self: Sized,

    Transforms this Read instance to an Iterator over its bytes. Read more
    §

    fn chain<R>(self, next: R) -> Chain<Self, R>where R: Read, Self: Sized,

    Creates an adaptor which will chain this stream with another. Read more
    §

    fn take(self, limit: u64) -> Take<Self>where Self: Sized,

    Creates an adaptor which will read at most limit bytes from it. Read more
    source§

    impl Write for Master

    source§

    fn write(&mut self, buf: &[u8]) -> Result<usize>

    Write a buffer into this writer, returning how many bytes were written. Read more
    source§

    fn flush(&mut self) -> Result<()>

    Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
    §

    fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

    Attempts to write an entire buffer into this writer. Read more
    §

    fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

    Writes a formatted string into this writer, returning any error -encountered. Read more
    §

    fn by_ref(&mut self) -> &mut Selfwhere +encountered. Read more

    §

    fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,

    Creates a “by reference” adaptor for this instance of Write. Read more

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Master

    §

    impl Send for Master

    §

    impl Sync for Master

    §

    impl Unpin for Master

    §

    impl !UnwindSafe for Master

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere