minimal.rs 1.2 KB

12345678910111213141516171819202122232425
  1. use multiboot2_header::builder::Multiboot2HeaderBuilder;
  2. use multiboot2_header::{ConsoleHeaderTag, HeaderTagFlag, HeaderTagISA, InformationRequestHeaderTagBuilder, MbiTagType, Multiboot2Header, RelocatableHeaderTag, RelocatableHeaderTagPreference, load_mb2_header};
  3. /// Small example that creates a Multiboot2 header and parses it afterwards.
  4. fn main() {
  5. // We create a Multiboot2 header during runtime here. A practical example is that your
  6. // program gets the header from a file and parses it afterwards.
  7. let mb2_hdr_bytes = Multiboot2HeaderBuilder::new(HeaderTagISA::I386)
  8. .relocatable_tag(RelocatableHeaderTag::new(
  9. HeaderTagFlag::Required,
  10. 0x1337,
  11. 0xdeadbeef,
  12. 4096,
  13. RelocatableHeaderTagPreference::None,
  14. ))
  15. .information_request_tag(
  16. InformationRequestHeaderTagBuilder::new(HeaderTagFlag::Required)
  17. .add_irs(&[MbiTagType::Cmdline, MbiTagType::BootLoaderName]),
  18. )
  19. .build();
  20. // Cast bytes in vector to Multiboot2 information structure
  21. let mb2_hdr = unsafe { load_mb2_header(mb2_hdr_bytes.as_ptr() as usize) };
  22. println!("{:#?}", mb2_hdr);
  23. }