@@ -24,7 +24,7 @@ pub struct MemoryMapTag {
2424impl MemoryMapTag {
2525 /// Return an iterator over all AVAILABLE marked memory areas.
2626 pub fn memory_areas ( & self ) -> impl Iterator < Item = & MemoryArea > {
27- self . all_memory_areas ( ) . filter ( |entry| entry. typ == 1 )
27+ self . all_memory_areas ( ) . filter ( |entry| matches ! ( entry. typ, MemoryAreaType :: Available ) )
2828 }
2929
3030 /// Return an iterator over all marked memory areas.
@@ -46,8 +46,7 @@ impl MemoryMapTag {
4646pub struct MemoryArea {
4747 base_addr : u64 ,
4848 length : u64 ,
49- // TODO see spec
50- typ : u32 ,
49+ typ : MemoryAreaType ,
5150 _reserved : u32 ,
5251}
5352
@@ -69,33 +68,32 @@ impl MemoryArea {
6968
7069 /// The type of the memory region.
7170 pub fn typ ( & self ) -> MemoryAreaType {
72- match self . typ {
73- 1 => MemoryAreaType :: Available ,
74- 3 => MemoryAreaType :: AcpiAvailable ,
75- 4 => MemoryAreaType :: ReservedHibernate ,
76- 5 => MemoryAreaType :: Defective ,
77- _ => MemoryAreaType :: Reserved ,
78- }
71+ self . typ
7972 }
8073}
8174
8275/// An enum of possible reported region types.
83- #[ derive( Debug , PartialEq , Eq ) ]
76+ /// Inside the Multiboot2 spec this is kind of hidden
77+ /// inside the implementation of `struct multiboot_mmap_entry`.
78+ #[ derive( Debug , PartialEq , Eq , Copy , Clone ) ]
79+ #[ repr( u32 ) ]
8480pub enum MemoryAreaType {
85- /// A reserved area that must not be used.
86- Reserved ,
87-
8881 /// Available memory free to be used by the OS.
89- Available ,
82+ Available = 1 ,
83+
84+ /// A reserved area that must not be used.
85+ Reserved = 2 ,
9086
9187 /// Usable memory holding ACPI information.
92- AcpiAvailable ,
88+ AcpiAvailable = 3 ,
9389
9490 /// Reserved memory which needs to be preserved on hibernation.
95- ReservedHibernate ,
91+ /// Also called NVS in spec, which stands for "Non-Volatile Sleep/Storage",
92+ /// which is part of ACPI specification.
93+ ReservedHibernate = 4 ,
9694
9795 /// Memory which is occupied by defective RAM modules.
98- Defective ,
96+ Defective = 5 ,
9997}
10098
10199/// An iterator over all memory areas
0 commit comments