github.com/jspc/eggos@v0.5.1-0.20221028160421-556c75c878a5/kernel/mm/sys.go (about) 1 package mm 2 3 import "syscall" 4 5 const ( 6 // sync with kernel 7 _SYS_FIXED_MMAP = 502 8 ) 9 10 // SysMmap like Mmap but can run in user mode 11 // wraper of syscall.Mmap 12 func SysMmap(vaddr, size uintptr) uintptr { 13 mem, _, err := syscall.Syscall6(syscall.SYS_MMAP, uintptr(vaddr), size, syscall.PROT_READ|syscall.PROT_WRITE, 0, 0, 0) 14 if err != 0 { 15 panic(err.Error()) 16 } 17 return mem 18 } 19 20 // SysFixedMmap map the same physical address to the virtual address 21 // run in user mode 22 func SysFixedMmap(vaddr, paddr, size uintptr) { 23 _, _, err := syscall.Syscall(_SYS_FIXED_MMAP, vaddr, paddr, size) 24 if err != 0 { 25 panic(err.Error()) 26 } 27 }