Documentation ¶
Overview ¶
Memory mapped register read/write
Index ¶
- Constants
- Variables
- func CheckRegAddr(name string, got, want uint)
- func DmaAlloc(n uint) (b []byte, id elib.Index, offset, cap uint)
- func DmaAllocAligned(n, log2Align uint) (b []byte, id elib.Index, offset, cap uint)
- func DmaFree(id elib.Index)
- func DmaGetData(id elib.Index) (b []byte)
- func DmaGetPointer(o uint) unsafe.Pointer
- func DmaHeapUsage() string
- func DmaInit(b []byte)
- func DmaIsValidOffset(o uint) bool
- func DmaPhysAddress(a uintptr) uintptr
- func LinkRefs(as, bs, cs *RefHeader, chain_len, n uint)
- func LoadUint16(addr uintptr) (data uint16)
- func LoadUint32(addr uintptr) (data uint32)
- func LoadUint64(addr uintptr) (data uint64)
- func MemoryBarrier()
- func RefFlag1(f BufferFlag, r0 *RefHeader) bool
- func RefFlag2(f BufferFlag, r0, r1 *RefHeader) bool
- func RefFlag4(f BufferFlag, r0, r1, r2, r3 *RefHeader) bool
- func StoreUint16(addr uintptr, data uint16)
- func StoreUint32(addr uintptr, data uint32)
- func StoreUint64(addr uintptr, data uint64)
- type Buffer
- type BufferFlag
- type BufferHeader
- type BufferMain
- func (m *BufferMain) AddBufferPool(p *BufferPool)
- func (m *BufferMain) DelBufferPool(p *BufferPool)
- func (p *BufferMain) Elts() uint
- func (p *BufferMain) Foreach(f func(x *BufferPool))
- func (p *BufferMain) ForeachIndex(f func(i uint))
- func (p *BufferMain) GetIndex() (i uint)
- func (p *BufferMain) IsFree(i uint) (v bool)
- func (p *BufferMain) Len() uint
- func (p *BufferMain) PutIndex(i uint) (ok bool)
- func (p *BufferMain) Reset()
- func (p *BufferMain) Resize(n uint)
- func (p *BufferMain) Validate(i uint)
- type BufferPool
- func (p *BufferPool) AllocCachedRefs() (r RefVec)
- func (p *BufferPool) AllocRefs(r *RefHeader, n uint)
- func (p *BufferPool) AllocRefsStride(r *RefHeader, want, stride uint)
- func (p *BufferPool) FreeBytes() uint64
- func (p *BufferPool) FreeLen() uint
- func (p *BufferPool) FreeRefs(rh *RefHeader, n uint, freeNext bool)
- func (p *BufferPool) Init()
- func (p *BufferPool) InitRefs(refs []Ref)
- func (p *BufferPool) ValidateRefs(h *RefHeader, want BufferState, n, stride uint)
- type BufferSave
- type BufferState
- type BufferTemplate
- type BufferTracer
- type Ref
- type RefChain
- type RefHeader
- func (r *RefHeader) Advance(i int) (oldDataOffset int)
- func (r *RefHeader) Buffer() unsafe.Pointer
- func (r *RefHeader) ChainLen() (l uint)
- func (r *RefHeader) ChainSlice(bʹ []byte) (b []byte)
- func (r *RefHeader) Data() unsafe.Pointer
- func (r *RefHeader) DataLen() uint
- func (r *RefHeader) DataOffset(o uint) unsafe.Pointer
- func (r *RefHeader) DataPhys() uintptr
- func (r *RefHeader) DataSlice() (b []byte)
- func (r *RefHeader) DataSliceOffset(o uint) (b []byte)
- func (r *RefHeader) DataSliceOffsetLen(o, l uint) (b []byte)
- func (r *RefHeader) Flags() BufferFlag
- func (r *RefHeader) GetBuffer() *Buffer
- func (r *RefHeader) NextIsValid() bool
- func (r *RefHeader) NextRef() (x *RefHeader)
- func (r *RefHeader) NextValidFlag() BufferFlag
- func (r *RefHeader) Restore(oldDataOffset int)
- func (r *RefHeader) SetDataLen(l uint)
- func (r *RefHeader) SetFlags(f BufferFlag)
- func (r *RefHeader) String() (s string)
- func (r *RefHeader) Trace(p *BufferPool, i BufferTracer, e int)
- func (h *RefHeader) Validate()
- func (r *RefHeader) ValidateState(p *BufferPool, want BufferState)
- type RefVec
- type U16
- type U32
- type U8
Constants ¶
View Source
const ( RefBytes = 16 RefHeaderBytes = 1*4 + 2*2 RefOpaqueBytes = RefBytes - RefHeaderBytes )
View Source
const ( // Cache aligned/sized space for buffer header. BufferHeaderBytes = cpu.CacheLineBytes // Rewrite (prepend) area. BufferRewriteBytes = 64 )
View Source
const PhysmemLog2AddressAlign = 32
Variables ¶
View Source
var ( BasePointer = basePointer() BaseAddress = uintptr(BasePointer) )
Must point to readable memory since compiler may perform read probes (nil checks) as part of memory addressing.
View Source
var DefaultBufferTemplate = &BufferTemplate{ Size: 1 << 10, Ref: Ref{RefHeader: RefHeader{dataOffset: BufferRewriteBytes}}, }
Functions ¶
func CheckRegAddr ¶
func DmaAllocAligned ¶
func DmaGetData ¶
func DmaGetPointer ¶
func DmaHeapUsage ¶
func DmaHeapUsage() string
func DmaIsValidOffset ¶
func DmaPhysAddress ¶
func LoadUint16 ¶
func LoadUint64 ¶
func MemoryBarrier ¶
func MemoryBarrier()
func RefFlag1 ¶
func RefFlag1(f BufferFlag, r0 *RefHeader) bool
func RefFlag2 ¶
func RefFlag2(f BufferFlag, r0, r1 *RefHeader) bool
func RefFlag4 ¶
func RefFlag4(f BufferFlag, r0, r1, r2, r3 *RefHeader) bool
func StoreUint16 ¶
func StoreUint32 ¶
func StoreUint64 ¶
Types ¶
type Buffer ¶
type Buffer struct { BufferHeader Opaque [BufferHeaderBytes - unsafe.Sizeof(BufferHeader{})]byte }
type BufferFlag ¶
type BufferFlag uint32
const (
NextValid, Log2NextValid BufferFlag = 1 << iota, iota
Cloned, Log2Cloned
)
func (BufferFlag) String ¶
func (f BufferFlag) String() string
type BufferHeader ¶
type BufferHeader struct {
// contains filtered or unexported fields
}
Buffer header.
func (*BufferHeader) GetSave ¶
func (h *BufferHeader) GetSave() BufferSave
func (*BufferHeader) SetSave ¶
func (h *BufferHeader) SetSave(x BufferSave)
type BufferMain ¶
type BufferMain struct { sync.Mutex PoolByName map[string]*BufferPool // contains filtered or unexported fields }
func (*BufferMain) AddBufferPool ¶
func (m *BufferMain) AddBufferPool(p *BufferPool)
func (*BufferMain) DelBufferPool ¶
func (m *BufferMain) DelBufferPool(p *BufferPool)
func (*BufferMain) Foreach ¶
func (p *BufferMain) Foreach(f func(x *BufferPool))
func (*BufferMain) ForeachIndex ¶
func (p *BufferMain) ForeachIndex(f func(i uint))
type BufferPool ¶
type BufferPool struct { Name string ElogName elog.StringRef BufferTemplate // Number of bytes of dma memory allocated by this pool. DmaMemAllocBytes uint64 // contains filtered or unexported fields }
func (*BufferPool) AllocCachedRefs ¶
func (p *BufferPool) AllocCachedRefs() (r RefVec)
func (*BufferPool) AllocRefs ¶
func (p *BufferPool) AllocRefs(r *RefHeader, n uint)
func (*BufferPool) AllocRefsStride ¶
func (p *BufferPool) AllocRefsStride(r *RefHeader, want, stride uint)
func (*BufferPool) FreeBytes ¶
func (p *BufferPool) FreeBytes() uint64
func (*BufferPool) FreeLen ¶
func (p *BufferPool) FreeLen() uint
func (*BufferPool) FreeRefs ¶
func (p *BufferPool) FreeRefs(rh *RefHeader, n uint, freeNext bool)
Return all buffers to pool and reset for next usage. freeNext specifies whether or not to follow and free next pointers.
func (*BufferPool) Init ¶
func (p *BufferPool) Init()
func (*BufferPool) InitRefs ¶
func (p *BufferPool) InitRefs(refs []Ref)
Method to over-ride to initialize refs for this buffer pool. This is used for example to set packet lengths, adjust packet fields, etc.
func (*BufferPool) ValidateRefs ¶
func (p *BufferPool) ValidateRefs(h *RefHeader, want BufferState, n, stride uint)
type BufferSave ¶
type BufferSave uint32
type BufferState ¶
type BufferState uint8
const ( BufferUnknown BufferState = iota BufferKnownAllocated BufferKnownFree )
func (BufferState) String ¶
func (s BufferState) String() string
func (BufferState) TraceBuffer ¶
func (s BufferState) TraceBuffer(i int) string
type BufferTemplate ¶
type BufferTemplate struct { // Data size of buffers. Size uint Ref Buffer // If non-nil buffers will be initialized with this data. Data []byte // contains filtered or unexported fields }
func (*BufferTemplate) SizeIncludingOverhead ¶
func (t *BufferTemplate) SizeIncludingOverhead() uint
type BufferTracer ¶
type RefChain ¶
type RefChain struct {
// contains filtered or unexported fields
}
Chains of buffer references.
type RefHeader ¶
type RefHeader struct {
// contains filtered or unexported fields
}
func (*RefHeader) ChainSlice ¶
func (*RefHeader) DataSliceOffset ¶
func (*RefHeader) DataSliceOffsetLen ¶
func (*RefHeader) Flags ¶
func (r *RefHeader) Flags() BufferFlag
func (*RefHeader) NextIsValid ¶
func (*RefHeader) NextValidFlag ¶
func (r *RefHeader) NextValidFlag() BufferFlag
func (*RefHeader) SetDataLen ¶
func (*RefHeader) SetFlags ¶
func (r *RefHeader) SetFlags(f BufferFlag)
func (*RefHeader) Trace ¶
func (r *RefHeader) Trace(p *BufferPool, i BufferTracer, e int)
func (*RefHeader) ValidateState ¶
func (r *RefHeader) ValidateState(p *BufferPool, want BufferState)
Source Files ¶
Click to show internal directories.
Click to hide internal directories.