Files
compute-blade-agent/pkg/hal/bcm2711/helper.go
Matthias Riegler 8d5eb4349b chore: refactor
Signed-off-by: Matthias Riegler <matthias.riegler@ankorstore.com>
2023-07-03 13:34:40 +02:00

28 lines
565 B
Go

package bcm2711
import (
"os"
"reflect"
"syscall"
"unsafe"
)
func mmap(file *os.File, base int64, lenght int) ([]uint32, []uint8, error) {
mem8, err := syscall.Mmap(
int(file.Fd()),
base,
lenght,
syscall.PROT_READ|syscall.PROT_WRITE,
syscall.MAP_SHARED,
)
if err != nil {
return nil, nil, err
}
// We'll have to work with 32 bit registers, so let's convert it.
header := *(*reflect.SliceHeader)(unsafe.Pointer(&mem8))
header.Len /= (32 / 8)
header.Cap /= (32 / 8)
mem32 := *(*[]uint32)(unsafe.Pointer(&header))
return mem32, mem8, nil
}