-
Notifications
You must be signed in to change notification settings - Fork 149
Closed
Description
Many issues/PR currently proposed would break the API of this create. This seems reasonable, but we should try to consolidate changes as much as possible. This issue tracks these changes.
Add any breaking changes you're interested in:
- Including
PageTableFlags
in the result oftranslate
(#150feat(paging): Also return flags forMapperAllSizes::translate()
#207) - Rename
MapperAllSizes
toTranslate
(RenameMapperAllSizes
toTranslate
? #152, done in Restructure theTranslateResult
type and create separateTranslate
trait #211) -
Potentially changing which methods are required and which are provided forMapper
(AddMapper
methods to mapPageRange
toPhysFrameRange
#192)- The suggestion in that issue (a new
map_range_with_table_flags
with a default implementation) does not require any breaking changes.
- The suggestion in that issue (a new
- Remove
PhysFrameRange
,PhysFrameRangeInclusive
,PageRange
,PageRangeInclusive
to instead use the Rust types.- Postponed until
Step
trait is stable - See Implement
core::iter::Step
forPhysFrame
andPage
#212
- Postponed until
-
MakePhysToVirt
actually mapPhysAddr
toVirtAddr
(instead of returning a pointer) (tried in Change signature of PhysToVirt::phys_to_virt #213, but it doesn't work) - Rename
PhysToVirt
trait toPageTableFrameMapping
(RenamePhysToVirt
trait toPageTableFrameMapping
#214) - Make
DescriptorTablePointer::base
aVirtAddr
(makes it clear segmentation is applied before paging). (done in MakeDescriptorTablePointer::base
aVirtAddr
#215) - Make
read_rip
return a VirtAddr (done in Change return type ofread_rip
toVirtAddr
#216) - Use correct types for
InterruptStackFrameValue
:code_segment
should be aSegmentSelector
- unresolved problem:
SegmentSelector
is anu16
, but the field inInterruptStackFrameValue
must be anu64
- unresolved problem:
cpu_flags
should be aRFlags
stack_segment
should be aSegmentSelector
-> same problem as forcode_segment
- Remove deprecated items:
UnusedPhysFrame
ExceptionStackFrame
VirtAddr::new_unchecked
- Remove
PortReadWrite
(it no longer makes sense to have it given theconst fn
changes toPort
) (done in RemovePortReadWrite
trait, which is no longer needed #217) -
rflags
(done in Make writing the RFLAGS register unsafe #219)- Make
write
/write_raw
unsafe (they can cause instant UB or crashes) - Document that reading/writing any of CF, PF, AF, ZF, SF, OF might do weird things (as Rust/LLVM use these flags)
- Document that a user should never set DF (as it must be unset in all Rust code)
- Make
- Use custom error types instead of
()
(Use custom error types instead of()
#199) - Also return flags for
MapperAllSizes::translate()
(feat(paging): Also return flags forMapperAllSizes::translate()
#207)
Metadata
Metadata
Assignees
Labels
No labels