module_align.rs 955 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. use crate::{HeaderTagFlag, HeaderTagType};
  2. use core::mem::size_of;
  3. /// If this tag is present, provided boot modules must be page aligned.
  4. #[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
  5. #[repr(C)]
  6. pub struct ModuleAlignHeaderTag {
  7. typ: HeaderTagType,
  8. flags: HeaderTagFlag,
  9. size: u32,
  10. }
  11. impl ModuleAlignHeaderTag {
  12. pub const fn new(flags: HeaderTagFlag) -> Self {
  13. ModuleAlignHeaderTag {
  14. typ: HeaderTagType::ModuleAlign,
  15. flags,
  16. size: size_of::<Self>() as u32,
  17. }
  18. }
  19. pub const fn typ(&self) -> HeaderTagType {
  20. self.typ
  21. }
  22. pub const fn flags(&self) -> HeaderTagFlag {
  23. self.flags
  24. }
  25. pub const fn size(&self) -> u32 {
  26. self.size
  27. }
  28. }
  29. #[cfg(test)]
  30. mod tests {
  31. use crate::ModuleAlignHeaderTag;
  32. #[test]
  33. fn test_assert_size() {
  34. assert_eq!(core::mem::size_of::<ModuleAlignHeaderTag>(), 2 + 2 + 4);
  35. }
  36. }