mirror of
https://github.com/taigrr/gopher-os
synced 2025-01-18 04:43:13 -08:00
By setting up pwd as a Go workspace, we can trim import paths from something like "github.com/achilleasa/gopher-os/kernel" to just "kernel". These changes make forking easier and also allows us to move the code to a different git hosting provider without having to rewrite the imports.
20 lines
644 B
Go
20 lines
644 B
Go
package vmm
|
|
|
|
import "gopheros/kernel/mem"
|
|
|
|
// Page describes a virtual memory page index.
|
|
type Page uintptr
|
|
|
|
// Address returns a pointer to the virtual memory address pointed to by this Page.
|
|
func (f Page) Address() uintptr {
|
|
return uintptr(f << mem.PageShift)
|
|
}
|
|
|
|
// PageFromAddress returns a Page that corresponds to the given virtual
|
|
// address. This function can handle both page-aligned and not aligned virtual
|
|
// addresses. in the latter case, the input address will be rounded down to the
|
|
// page that contains it.
|
|
func PageFromAddress(virtAddr uintptr) Page {
|
|
return Page((virtAddr & ^(uintptr(mem.PageSize - 1))) >> mem.PageShift)
|
|
}
|