Skip to content

pmem example code incorrect #2

@martin2250

Description

@martin2250

I think there is an error in the pmem example for MapAsPOD.

package main

import (
	"log"

	"periph.io/x/host/v3/pmem"
)

func main() {
	// Let's say the CPU has 4 x 32 bits memory mapped registers at the address
	// 0xDEADBEEF.
	var reg *[4]uint32
	if err := pmem.MapAsPOD(0xDEADBEAF, reg); err != nil {
		log.Fatal(err)
	}
	// reg now points to physical memory.
}

It only works when I add a referencing operator to the function call, like so: pmem.MapAsPOD(0xDEADBEAF, &reg), so this code works for me:

var reg *[SMC_MEM_LEN / 2]uint16
if err := pmem.MapAsPOD(SMC_MEM_START, &reg); err != nil {

Otherwise, I get an error during runtime: pmem: require Ptr to Ptr, got invalid (or got slice/got array).

In case this is relevant, I'm compiling for an AT91SAM9G45 with Linux 3.0.0.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions