dxd - dynax driver framework 2.1.0d71
cross platform open source driver development framework
|
generic kernel multichannel stream More...
#include <dxd_stream.h>
Classes | |
class | clock |
class | in |
kernel stream mapped client reference counted in channel buffers More... | |
class | umap |
stream user mapping More... | |
Public Member Functions | |
os_result | attach (unsigned int iosize, channel_t **channel[2]) |
attach user client owned out channels | |
os_result | attach (unsigned int iosize, const uint64_t *channel_map) |
create stream local in channels | |
void | detach (channel_t **channel[2]) |
void | detach (const uint64_t *channel_map) |
template<typename return_t = os_result, typename exec_t > | |
return_t | each (exec_t exec) |
void | free () |
kernel map free | |
void | free () |
os_result | initialize (::IOMemoryDescriptor *iokit_memory_descriptor) |
IOKit memory initializer. | |
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, 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 void *data, size_t size) |
IOKit memory initializer. | |
os_result | initialize (const::MDL *mdl) |
os_result | initialize (const::MDL *mdl) |
os_result | initialize (const::MDL *mdl, size_t offset, size_t size) |
os_result | initialize (const::MDL *mdl, size_t offset, size_t size) |
os_result | initialize (size_t size, unsigned int limit=64, unsigned int alignment=0, bool contigous=false) |
IOKit buffer initializer. | |
os_result | initialize (size_t size, unsigned int limit=64, unsigned int alignment=0, bool contigous=false) |
os_result | initialize (void *data, size_t size) |
IOKit memory initializer. | |
os_result | initialize (void *data, size_t size) |
IOKit memory initializer. | |
operator const dx::circular * () const | |
operator const::IOMemoryDescriptor * () const | |
IOKit IOMemoryDescriptor* implicit cast. | |
operator const::IOMemoryDescriptor * () const | |
IOKit IOMemoryDescriptor* implicit cast. | |
operator const::IOMemoryMap * () const | |
operator dx::circular * () const | |
operator uint64_t () const | |
IOKit physical address (only relevant for contigous memory) | |
operator uint64_t () const | |
IOKit physical address (only relevant for contigous memory) | |
dx::circular * | operator-> () |
const dx::circular * | operator-> () const |
operator to use mapping like pointer | |
operator::IOMemoryDescriptor * () | |
operator::IOMemoryDescriptor * () | |
operator::IOMemoryMap * () | |
operator::MDL * () const | |
operator::MDL * () const | |
item_t * | pop () |
pop item from head | |
doubly::linked::abstract::event * | pop (doubly::linked::abstract::event *item) |
pop item | |
list & | print () |
doubly::linked::abstract::event * | push (doubly::linked::abstract::event *item) |
push item to head | |
item_t * | push (item_t *item) |
push item to head | |
template<typename reference_t > | |
int | release (reference_t &reference) |
void | retain () |
void | rx (int64_t timestamp) |
os_result | signal () |
size_t | size () const |
IOKit memory size. | |
size_t | size () const |
IOKit memory size. | |
size_t | size () const |
kernel mapping size | |
virtual os_result | start (bool force=false)=0 |
virtual os_result | stop (bool force=false)=0 |
void | tx (int64_t timestamp) |
Public Attributes | ||
struct { | ||
uint64_t advance = 0 | ||
dxd::buffer< dx::user > buffer {sizeof(dx::stream::channel::control)} | ||
bool in | ||
unsigned int iosize = 0 | ||
dxd::map< dx::kernel, dx::stream::channel::control > map {buffer} | ||
} | control | |
atomic< int > | references {} | |
os_result | status | |
IOKit memory status. | ||
os_result | status =not_initialized | |
IOKit memory status. | ||
os_result | status | |
status of mapping object | ||
Protected Member Functions | |
void | __lock () |
void | __lock () |
bool | __trylock () |
void | __unlock () |
void | __unlock () |
operator const::KSPIN_LOCK & () const | |
operator const::KSPIN_LOCK * () const | |
operator::KSPIN_LOCK & () | |
operator::KSPIN_LOCK * () | |
~stream () | |
Protected Attributes | ||
dx::circular * | _vm | |
kernel virtual address mapping | ||
union { | ||
channel_t ** in [2] | ||
in channel array [switch] [channels] More... | ||
channel_t *const *const *volatile out [2] | ||
client out channel array [switch] [client] -> umap out channels [channels] More... | ||
} | cache | |
unsigned int | channels = 0 | |
stream channels | ||
dxd::multichannel::stream::in * | in [2] | |
::IOMemoryMap * | iokit_memory_map | |
atomic< int > | out = 0 | |
client outs atached | ||
os_result | status =not_initialized | |
generic kernel multichannel stream
|
inlineprotectedvirtual |
Reimplemented from dxd::stream.
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inline |
attach user client owned out channels
|
inline |
create stream local in channels
|
inline |
|
inline |
|
inlineinherited |
|
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.
|
inlineinherited |
|
inlineinherited |
IOKit memory initializer.
|
inlineinherited |
IOKit memory initializer.
|
inlineinherited |
IOKit memory initializer.
|
inlineinherited |
IOKit memory initializer.
|
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).
iokit_memory_descriptor | IOMemoryDescriptor to be mapped into the kernel address space |
offset | offset into memory descriptor to create mapping |
|
inherited |
IOKit memory initializer.
data | virtual base address of range to create memory descriptor from |
size | size of range to create memory descriptor from |
|
inherited |
IOKit memory initializer.
data | virtual base address of range to create memory descriptor from |
size | size of range to create memory descriptor from |
|
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!
|
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!
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
IOKit buffer initializer.
Allows re-initialization.
Creates a buffer and associated memory descriptor.
Wires down the backing store memory.
size | size to be alloced by buffer object |
limit | limit physical memory address space |
alignment | enforce physical memory alignment |
contigous | enforce contiguos physical memory |
|
inlineinherited |
Allows re-initialization
size | size to be alloced by buffer object |
limit | limit physical memory address space |
alignment | enforce physical memory alignment |
contigous | enforce contiguos physical memory |
|
inherited |
IOKit memory initializer.
data | virtual base address of range to create memory descriptor from |
size | size of range to create memory descriptor from |
|
inherited |
IOKit memory initializer.
data | virtual base address of range to create memory descriptor from |
size | size of range to create memory descriptor from |
|
inlineinherited |
|
inlineinherited |
IOKit IOMemoryDescriptor* implicit cast.
|
inlineinherited |
IOKit IOMemoryDescriptor* implicit cast.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
IOKit physical address (only relevant for contigous memory)
|
inlineinherited |
IOKit physical address (only relevant for contigous memory)
|
inlineinherited |
|
inlineinherited |
operator to use mapping like pointer
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
pop item from head
|
inlineinherited |
pop item
|
inlineinherited |
|
inlineinherited |
push item to head
|
inlineinherited |
push item to head
|
inlineinherited |
|
inlineinherited |
|
inline |
|
inlineinherited |
|
inlineinherited |
IOKit memory size.
|
inlineinherited |
IOKit memory size.
|
inlineinherited |
kernel mapping size
|
pure virtualinherited |
Implemented in dxd::usb_stream_device::stream.
|
pure virtualinherited |
|
inline |
|
protectedinherited |
kernel virtual address mapping
uint64_t dxd::multichannel::stream< channel_t >::advance = 0 |
dxd::buffer<dx::user> dxd::multichannel::stream< channel_t >::buffer {sizeof(dx::stream::channel::control)} |
union { ... } dxd::multichannel::stream< channel_t >::cache |
|
protected |
stream channels
struct { ... } dxd::multichannel::stream< channel_t >::control |
|
protected |
channel_t** dxd::multichannel::stream< channel_t >::in[2] |
in channel array [switch] [channels]
bool dxd::multichannel::stream< channel_t >::in |
|
protectedinherited |
unsigned int dxd::multichannel::stream< channel_t >::iosize = 0 |
dxd::map<dx::kernel, dx::stream::channel::control> dxd::multichannel::stream< channel_t >::map {buffer} |
|
protected |
client outs atached
channel_t* const* const* volatile dxd::multichannel::stream< channel_t >::out[2] |
client out channel array [switch] [client] -> umap out channels [channels]
|
inherited |
|
inherited |
IOKit memory status.
status of memory object
|
inherited |
IOKit memory status.
status of memory object
|
inherited |
status of mapping object
|
inherited |
(c) copyright 2009 dynamic acoustics e.U. | generated on Wed Oct 2 2024 |