dxd - dynax driver framework 2.2.0d109
cross platform open source driver development framework
Loading...
Searching...
No Matches
dxd::multichannel::stream< channel_t >::clock::monitor Class Reference

clock::monitor buffer to be shared with user client mappings to measure jitter and latencies at various levels (IRQ, DPC, ASIO) More...

#include <dxd_stream.h>

+ Inheritance diagram for dxd::multichannel::stream< channel_t >::clock::monitor:
+ Collaboration diagram for dxd::multichannel::stream< channel_t >::clock::monitor:

Public Member Functions

void free ()
 kernel map free
 
void free ()
 
dxd::os_result initialize ()
 
os_result initialize (::IOMemoryDescriptor *iokit_memory_descriptor)
 IOKit memory initializer.
 
os_result initialize (::IOMemoryDescriptor *iokit_memory_descriptor, size_t offset, size_t size)
 IOKit memory initializer.
 
os_result initialize (::IOMemoryDescriptor *iokit_memory_descriptor, size_t offset=0)
 IOKit kernel map initializer.
 
os_result initialize (const void *data, size_t size)
 IOKit memory initializer.
 
os_result initialize (const::MDL *mdl)
 
os_result initialize (const::MDL *mdl, size_t offset, size_t size)
 
os_result initialize (size_t size, unsigned int limit=limit_t, unsigned int alignment=alignment_t, bool contigous=contigous_t)
 IOKit buffer initializer.
 
os_result initialize (void *data, size_t size)
 IOKit memory initializer.
 
 operator const vm_t * () const
 
 operator const::IOMemoryDescriptor * () const
 IOKit IOMemoryDescriptor* implicit cast.
 
 operator const::IOMemoryMap * () const
 
 operator uint64_t () const
 IOKit physical address (only relevant for contigous memory)
 
 operator vm_t * () const
 
vm_t * operator-> ()
 
const vm_t * operator-> () const
 operator to use mapping like pointer
 
 operator::IOMemoryDescriptor * ()
 
 operator::IOMemoryMap * ()
 
 operator::MDL * () const
 
size_t size () const
 IOKit memory size.
 
size_t size () const
 kernel mapping size
 

Public Attributes

dx::stream::clock::monitorcache =nullptr
 
os_result status =not_initialized
 IOKit memory status.
 
os_result status =not_initialized
 status of mapping object
 

Protected Attributes

vm_t * _vm =nullptr
 kernel virtual address mapping
 
::IOMemoryMap * iokit_memory_map =nullptr
 

Detailed Description

template<typename channel_t = int>
class dxd::multichannel::stream< channel_t >::clock::monitor

clock::monitor buffer to be shared with user client mappings to measure jitter and latencies at various levels (IRQ, DPC, ASIO)

Member Function Documentation

◆ free() [1/2]

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
void dxd::map< scope_t, vm_t >::free ( )
inlineinherited

kernel map free

Checks if kernel mapping already exists and

does not call unmap(): IOMemoryMap instances will unmap themselves upon free, ie. when the last client with a reference calls release. unmap() forces the IOMemoryMap to destroy the mapping it represents, regardless of the number of clients. releases the map object.

+ Here is the caller graph for this function:

◆ free() [2/2]

template<dx::scope scope_t = dx::kernel, unsigned int limit_t = 64, unsigned int alignment_t = 0, bool contigous_t = false>
void dxd::buffer< scope_t, limit_t, alignment_t, contigous_t >::free ( )
inlineinherited
+ Here is the caller graph for this function:

◆ initialize() [1/9]

template<typename channel_t = int>
dxd::os_result dxd::multichannel::stream< channel_t >::clock::monitor::initialize ( )
inline
+ Here is the call graph for this function:

◆ initialize() [2/9]

template<dx::scope scope_t = dx::kernel>
os_result dxd::memory< scope_t >::initialize ( ::IOMemoryDescriptor * iokit_memory_descriptor)
inlineinherited

IOKit memory initializer.

+ Here is the call graph for this function:

◆ initialize() [3/9]

template<dx::scope scope_t = dx::kernel>
os_result dxd::memory< scope_t >::initialize ( ::IOMemoryDescriptor * iokit_memory_descriptor,
size_t offset,
size_t size )
inlineinherited

IOKit memory initializer.

+ Here is the call graph for this function:

◆ initialize() [4/9]

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
os_result dxd::map< scope_t, vm_t >::initialize ( ::IOMemoryDescriptor * iokit_memory_descriptor,
size_t offset = 0 )
inlineinherited

IOKit kernel map initializer.

map<kernel> maps an IOMemoryDescriptor (typically cast of a dxd::memory or buffer class) into the kernel address space.

https://developer.apple.com/library/content/qa/qa1197/_index.html

Allows re-initialization.

Checks buffer object,

maps the buffer into the kernel (will fail if offset is given)

and obtains a kernel virtual address (apply offset here instead).

Parameters
iokit_memory_descriptorIOMemoryDescriptor to be mapped into the kernel address space
offsetoffset into memory descriptor to create mapping
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initialize() [5/9]

template<dx::scope scope_t = dx::kernel>
os_result dxd::memory< scope_t >::initialize ( const void * data,
size_t size )
inherited

IOKit memory initializer.

Parameters
datavirtual base address of range to create memory descriptor from
sizesize of range to create memory descriptor from
+ Here is the caller graph for this function:

◆ initialize() [6/9]

template<dx::scope scope_t = dx::kernel>
os_result dxd::memory< scope_t >::initialize ( const::MDL * mdl)
inlineinherited

in contrast to an IOKit MemoryDescriptor MDLs do not support reference counting. take care when creating a dxd::memory from a dxd::buffer: although the dxd::memory holds an MDL to the buffer the buffer itself is not retained after the dxd::buffer is released!

+ Here is the call graph for this function:

◆ initialize() [7/9]

template<dx::scope scope_t = dx::kernel>
os_result dxd::memory< scope_t >::initialize ( const::MDL * mdl,
size_t offset,
size_t size )
inlineinherited
+ Here is the call graph for this function:

◆ initialize() [8/9]

template<dx::scope scope_t = dx::kernel, unsigned int limit_t = 64, unsigned int alignment_t = 0, bool contigous_t = false>
os_result dxd::buffer< scope_t, limit_t, alignment_t, contigous_t >::initialize ( size_t size,
unsigned int limit = limit_t,
unsigned int alignment = alignment_t,
bool contigous = contigous_t )
inlineinherited

IOKit buffer initializer.

Allows re-initialization.

Creates a buffer and associated memory descriptor.

Wires down the backing store memory.

Parameters
sizesize to be alloced by buffer object
limitlimit physical memory address space
alignmentenforce physical memory alignment
contigousenforce contiguos physical memory
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initialize() [9/9]

template<dx::scope scope_t = dx::kernel>
os_result dxd::memory< scope_t >::initialize ( void * data,
size_t size )
inherited

IOKit memory initializer.

Parameters
datavirtual base address of range to create memory descriptor from
sizesize of range to create memory descriptor from

◆ operator const vm_t *()

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator const vm_t * ( ) const
inlineinherited

◆ operator const::IOMemoryDescriptor *()

template<dx::scope scope_t = dx::kernel>
dxd::memory< scope_t >::operator const::IOMemoryDescriptor * ( ) const
inlineinherited

IOKit IOMemoryDescriptor* implicit cast.

◆ operator const::IOMemoryMap *()

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator const::IOMemoryMap * ( ) const
inlineinherited

◆ operator uint64_t()

template<dx::scope scope_t = dx::kernel>
dxd::memory< scope_t >::operator uint64_t ( ) const
inlineinherited

IOKit physical address (only relevant for contigous memory)

◆ operator vm_t *()

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator vm_t * ( ) const
inlineinherited

◆ operator->() [1/2]

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
vm_t * dxd::map< scope_t, vm_t >::operator-> ( )
inlineinherited

◆ operator->() [2/2]

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
const vm_t * dxd::map< scope_t, vm_t >::operator-> ( ) const
inlineinherited

operator to use mapping like pointer

◆ operator::IOMemoryDescriptor *()

template<dx::scope scope_t = dx::kernel>
dxd::memory< scope_t >::operator::IOMemoryDescriptor * ( )
inlineinherited

◆ operator::IOMemoryMap *()

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator::IOMemoryMap * ( )
inlineinherited

◆ operator::MDL *()

template<dx::scope scope_t = dx::kernel>
dxd::memory< scope_t >::operator::MDL * ( ) const
inlineinherited

◆ size() [1/2]

template<dx::scope scope_t = dx::kernel>
size_t dxd::memory< scope_t >::size ( ) const
inlineinherited

IOKit memory size.

◆ size() [2/2]

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
size_t dxd::map< scope_t, vm_t >::size ( ) const
inlineinherited

kernel mapping size

Member Data Documentation

◆ _vm

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
vm_t* dxd::map< scope_t, vm_t >::_vm =nullptr
protectedinherited

kernel virtual address mapping

◆ cache

template<typename channel_t = int>
dx::stream::clock::monitor* dxd::multichannel::stream< channel_t >::clock::monitor::cache =nullptr

◆ iokit_memory_map

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
::IOMemoryMap* dxd::map< scope_t, vm_t >::iokit_memory_map =nullptr
protectedinherited

◆ status [1/2]

template<dx::scope scope_t = dx::kernel>
os_result dxd::memory< scope_t >::status =not_initialized
inherited

IOKit memory status.

status of memory object

◆ status [2/2]

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
os_result dxd::map< scope_t, vm_t >::status =not_initialized
inherited

status of mapping object


The documentation for this class was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on Mon Apr 21 2025

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.