12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- //! Convenient and safe parsing of Multiboot2 Header structures and the
- //! contained header tags. Usable in `no_std` environments, such as a
- //! bootloader. An optional builder feature also allows the construction of
- //! the corresponding structures.
- //!
- //! ## Design
- //!
- //! For every Multiboot2 header structure, there is an ABI-compatible rusty type.
- //! This enables a zero-copying parsing design while also enabling the creation
- //! of these structures via convenient constructors on the corresponding types.
- //!
- //! # Example: Parsing a Header
- //!
- //! ```no_run
- //! use multiboot2_header::Multiboot2Header;
- //!
- //! let ptr = 0x1337_0000 as *const u8 /* use real ptr here */;
- //! let mb2_hdr = unsafe { Multiboot2Header::load(ptr.cast()) }.unwrap();
- //! for _tag in mb2_hdr.iter() {
- //! //
- //! }
- //! ```
- //!
- //! ## MSRV
- //!
- //! The MSRV is 1.70.0 stable.
- #![no_std]
- #![cfg_attr(feature = "unstable", feature(error_in_core))]
- // --- BEGIN STYLE CHECKS ---
- #![deny(
- clippy::all,
- clippy::cargo,
- clippy::nursery,
- clippy::must_use_candidate,
- // clippy::restriction,
- // clippy::pedantic
- )]
- // now allow a few rules which are denied by the above statement
- // --> They are either ridiculous, not necessary, or we can't fix them.
- #![allow(clippy::multiple_crate_versions)]
- #![deny(missing_docs)]
- #![deny(missing_debug_implementations)]
- #![deny(rustdoc::all)]
- // --- END STYLE CHECKS ---
- #[cfg(feature = "builder")]
- extern crate alloc;
- #[cfg_attr(test, macro_use)]
- #[cfg(test)]
- extern crate std;
- /// Iterator over the tags of a Multiboot2 boot information.
- pub type TagIter<'a> = multiboot2_common::TagIter<'a, HeaderTagHeader>;
- /// A generic version of all boot information tags.
- #[cfg(test)]
- pub type GenericHeaderTag = multiboot2_common::DynSizedStructure<HeaderTagHeader>;
- mod address;
- mod console;
- mod end;
- mod entry_address;
- mod entry_efi_32;
- mod entry_efi_64;
- mod framebuffer;
- mod header;
- mod information_request;
- mod module_align;
- mod relocatable;
- mod tags;
- mod uefi_bs;
- #[cfg(feature = "builder")]
- mod builder;
- pub use multiboot2_common::{DynSizedStructure, MaybeDynSized, Tag};
- pub use self::address::*;
- pub use self::console::*;
- pub use self::end::*;
- pub use self::entry_address::*;
- pub use self::entry_efi_32::*;
- pub use self::entry_efi_64::*;
- pub use self::framebuffer::*;
- pub use self::header::*;
- pub use self::information_request::*;
- pub use self::module_align::*;
- pub use self::relocatable::*;
- pub use self::tags::*;
- pub use self::uefi_bs::*;
- #[cfg(feature = "builder")]
- pub use builder::Builder;
- /// Re-export of [`multiboot2::TagType`] from `multiboot2`-crate.
- pub use multiboot2::{TagType as MbiTagType, TagTypeId as MbiTagTypeId};
|