// Code generated by cmd/cgo -godefs; DO NOT EDIT.
// cgo -godefs defs_darwin.go

package pprof

type machVMRegionBasicInfoData struct {
	Protection       int32
	Max_protection   int32
	Inheritance      uint32
	Shared           uint32
	Reserved         uint32
	Offset           [8]byte // This is hand-edited since godefs generates: Pad_cgo_0 [8]byte. Cannot use uint64 due to alignment.
	Behavior         int32
	User_wired_count uint16
	Pad_cgo_1        [2]byte
}

const (
	_VM_PROT_READ    = 0x1
	_VM_PROT_WRITE   = 0x2
	_VM_PROT_EXECUTE = 0x4

	_MACH_SEND_INVALID_DEST = 0x10000003

	_MAXPATHLEN = 0x400
)
