#[repr(C, align(8))]pub struct RelocatableHeaderTag { /* private fields */ }
Expand description
This tag indicates that the image is relocatable.
Implementations§
Source§impl RelocatableHeaderTag
impl RelocatableHeaderTag
Sourcepub const fn new(
flags: HeaderTagFlag,
min_addr: u32,
max_addr: u32,
align: u32,
preference: RelocatableHeaderTagPreference,
) -> Self
pub const fn new( flags: HeaderTagFlag, min_addr: u32, max_addr: u32, align: u32, preference: RelocatableHeaderTagPreference, ) -> Self
Constructs a new tag.
Examples found in repository?
examples/minimal.rs (lines 14-20)
9fn main() {
10 // We create a Multiboot2 header during runtime here. A more practical
11 // example, however, would be that you parse the header from kernel binary
12 // at runtime.
13 let mb2_hdr_bytes = Builder::new(HeaderTagISA::I386)
14 .relocatable_tag(RelocatableHeaderTag::new(
15 HeaderTagFlag::Required,
16 0x1337,
17 0xdeadbeef,
18 4096,
19 RelocatableHeaderTagPreference::None,
20 ))
21 .information_request_tag(InformationRequestHeaderTag::new(
22 HeaderTagFlag::Required,
23 &[
24 MbiTagType::Cmdline.into(),
25 MbiTagType::BootLoaderName.into(),
26 ],
27 ))
28 .build();
29
30 // Cast bytes in vector to Multiboot2 information structure
31 let ptr = mb2_hdr_bytes.as_bytes().as_ptr();
32 let mb2_hdr = unsafe { Multiboot2Header::load(ptr.cast()) };
33 let mb2_hdr = mb2_hdr.unwrap();
34 println!("{mb2_hdr:#?}");
35}
Sourcepub const fn typ(&self) -> HeaderTagType
pub const fn typ(&self) -> HeaderTagType
Returns the HeaderTagType
.
Sourcepub const fn flags(&self) -> HeaderTagFlag
pub const fn flags(&self) -> HeaderTagFlag
Returns the HeaderTagFlag
s.
Sourcepub const fn preference(&self) -> RelocatableHeaderTagPreference
pub const fn preference(&self) -> RelocatableHeaderTagPreference
Return the preference.
Trait Implementations§
Source§impl Clone for RelocatableHeaderTag
impl Clone for RelocatableHeaderTag
Source§fn clone(&self) -> RelocatableHeaderTag
fn clone(&self) -> RelocatableHeaderTag
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for RelocatableHeaderTag
impl Debug for RelocatableHeaderTag
Source§impl Hash for RelocatableHeaderTag
impl Hash for RelocatableHeaderTag
Source§impl MaybeDynSized for RelocatableHeaderTag
impl MaybeDynSized for RelocatableHeaderTag
Source§const BASE_SIZE: usize = 24usize
const BASE_SIZE: usize = 24usize
The true base size of the struct without any implicit or additional
padding. Note that
size_of::<T>()
isn’t sufficient, as for example
the type could have three u32
fields, which would add an implicit
u32
padding. However, this constant must always fulfill
BASE_SIZE >= size_of::<Self::Header>()
. Read moreSource§type Header = HeaderTagHeader
type Header = HeaderTagHeader
The associated
Header
of this tag.Source§fn dst_len(_header: &Self::Header) -> Self::Metadata
fn dst_len(_header: &Self::Header) -> Self::Metadata
Returns the amount of items in the dynamically sized portion of the
DST. Note that this is not the amount of bytes. So if the dynamically
sized portion is 16 bytes in size and each element is 4 bytes big, then
this function must return 4. Read more
Source§fn payload(&self) -> &[u8]
fn payload(&self) -> &[u8]
Returns the payload, i.e., all memory that is not occupied by the
Header
of the type.Source§impl Ord for RelocatableHeaderTag
impl Ord for RelocatableHeaderTag
Source§fn cmp(&self, other: &RelocatableHeaderTag) -> Ordering
fn cmp(&self, other: &RelocatableHeaderTag) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for RelocatableHeaderTag
impl PartialEq for RelocatableHeaderTag
Source§impl PartialOrd for RelocatableHeaderTag
impl PartialOrd for RelocatableHeaderTag
Source§impl Tag for RelocatableHeaderTag
impl Tag for RelocatableHeaderTag
Source§const ID: HeaderTagType = HeaderTagType::Relocatable
const ID: HeaderTagType = HeaderTagType::Relocatable
The ID of this tag. This should be unique across all implementors. Read more
Source§type IDType = HeaderTagType
type IDType = HeaderTagType
The ID type that identifies the tag.
impl Copy for RelocatableHeaderTag
impl Eq for RelocatableHeaderTag
impl StructuralPartialEq for RelocatableHeaderTag
Auto Trait Implementations§
impl Freeze for RelocatableHeaderTag
impl RefUnwindSafe for RelocatableHeaderTag
impl Send for RelocatableHeaderTag
impl Sync for RelocatableHeaderTag
impl Unpin for RelocatableHeaderTag
impl UnwindSafe for RelocatableHeaderTag
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more