dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::monitor Class Reference

the device's performance counters in shared memory, so a second process (the test app's clock monitor) reads what the streaming session measures; every fetch initializes an unused buffer More...

#include <dx_stream_device.h>

Inheritance diagram for dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::monitor:
Collaboration diagram for dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::monitor:

Public Member Functions

 catch (...)
 catch (...)
void free () noexcept
void free () noexcept
reference & initialize (const std::string &name)
memory & initialize (const std::string &name, uint32_t version, size_t size=0)
memory & initialize (const std::string &name, uint32_t version, size_t size=0)
memory & initialize (size_t size, bool leftovers)
memory & initialize (size_t size=0)
memory & initialize (size_t size=0)
 operator bool () const noexcept
 true if this shared memory is currently in use by some process - a cheap, non-destructive existence probe (shm_open without O_CREAT, then immediately close) that neither maps nor creates anything itself.
 operator bool () const noexcept
 true if this shared memory is currently in use by some process - a cheap, non-destructive existence probe (open, then immediately close, the underlying file mapping object by name) that neither maps nor creates anything itself. Crash-safe without any separate refcounting primitive: the OS keeps the file mapping kernel object alive exactly as long as any process holds a real (mapped) handle to it, closing it automatically on that process' crash/exit.
 operator const os_event () const noexcept
 operator const os_event () const noexcept
 operator dx::stream::clock::monitor & ()
 operator dx::stream::clock::monitor & ()
 operator dx::stream::clock::monitor & ()
 operator dx::stream::clock::monitor & ()
 operator dx::stream::clock::monitor * ()
 operator dx::stream::clock::monitor * ()
 operator dx::stream::clock::monitor * ()
 operator dx::stream::clock::monitor * ()
template<typename monitor_t = dx::stream::clock::monitor>
 operator monitor_t * ()
 operator os_event () noexcept
 operator os_event () noexcept
 operator struct ::stat ()
dx::stream::clock::monitor & operator* ()
dx::stream::clock::monitor & operator* ()
dx::stream::clock::monitor * operator-> ()
dx::stream::clock::monitor * operator-> ()
 operator::HANDLE () const noexcept
 operator::HANDLE () const noexcept
bool release () noexcept
 releases this hold
bool release () noexcept
 releases this hold
size_t size () const

Static Public Member Functions

static bool exists (const std::string &name) noexcept
 the same probe on a name alone, for a side that must attach to another's segment rather than create one
static bool exists (const std::string &name) noexcept
 the same probe on a name alone, for a side that must attach to another's segment rather than create one
static std::string path (const std::string &name)
 the name a segment carries in the system: the uid, hashed where it exceeds what a shared memory name takes
static std::string path (const std::string &name)
 the name a file mapping carries in the system: the uid, made a valid name and global

Public Attributes

bool joined
 true if initialize() found another holder already present, false if this was the first

Protected Attributes

::HANDLE process
::HANDLE process

Detailed Description

template<typename super_device_t, typename _desc_t, typename _stream_t, typename _group_t = void>
class dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::monitor

the device's performance counters in shared memory, so a second process (the test app's clock monitor) reads what the streaming session measures; every fetch initializes an unused buffer

Member Function Documentation

◆ catch() [1/2]

dx::shared::memory< dx::stream::clock::monitor >::catch ( ...)
inlineinherited
Here is the call graph for this function:

◆ catch() [2/2]

dx::shared::memory< dx::stream::clock::monitor >::catch ( ...)
inlineinherited
Here is the call graph for this function:

◆ exists() [1/2]

bool dx::shared::memory< dx::stream::clock::monitor >::exists ( const std::string & name)
inlinestaticnoexceptinherited

the same probe on a name alone, for a side that must attach to another's segment rather than create one

Here is the caller graph for this function:

◆ exists() [2/2]

bool dx::shared::memory< dx::stream::clock::monitor >::exists ( const std::string & name)
inlinestaticnoexceptinherited

the same probe on a name alone, for a side that must attach to another's segment rather than create one

◆ free() [1/2]

void dx::shared::memory< dx::stream::clock::monitor >::free ( )
inlinevirtualnoexceptinherited

Reimplemented from dx::resource< nullptr >.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ free() [2/2]

void dx::shared::memory< dx::stream::clock::monitor >::free ( )
inlinevirtualnoexceptinherited

Reimplemented from dx::resource< nullptr >.

Here is the call graph for this function:

◆ initialize() [1/6]

reference & dx::shared::reference::initialize ( const std::string & name)
inlineinherited

◆ initialize() [2/6]

memory & dx::shared::memory< dx::stream::clock::monitor >::initialize ( const std::string & name,
uint32_t version,
size_t size = 0 )
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialize() [3/6]

memory & dx::shared::memory< dx::stream::clock::monitor >::initialize ( const std::string & name,
uint32_t version,
size_t size = 0 )
inlineinherited
Here is the call graph for this function:

◆ initialize() [4/6]

memory & dx::shared::memory< dx::stream::clock::monitor >::initialize ( size_t size,
bool leftovers )
inlineinherited

a segment of another build, and this caller is the side that sizes it: the leftover of a host that never unlinked it is dropped, so this host creates its own. A hosted side, which states no size, has nothing to create and says so below

Todo
shared::memory: buffer initialization @ version mismatch!
Here is the call graph for this function:

◆ initialize() [5/6]

memory & dx::shared::memory< dx::stream::clock::monitor >::initialize ( size_t size = 0)
inlineinherited
Here is the call graph for this function:

◆ initialize() [6/6]

memory & dx::shared::memory< dx::stream::clock::monitor >::initialize ( size_t size = 0)
inlineinherited
Here is the call graph for this function:

◆ operator bool() [1/2]

dx::shared::memory< dx::stream::clock::monitor >::operator bool ( ) const
inlinenoexceptinherited

true if this shared memory is currently in use by some process - a cheap, non-destructive existence probe (shm_open without O_CREAT, then immediately close) that neither maps nor creates anything itself.

◆ operator bool() [2/2]

dx::shared::memory< dx::stream::clock::monitor >::operator bool ( ) const
inlinenoexceptinherited

true if this shared memory is currently in use by some process - a cheap, non-destructive existence probe (open, then immediately close, the underlying file mapping object by name) that neither maps nor creates anything itself. Crash-safe without any separate refcounting primitive: the OS keeps the file mapping kernel object alive exactly as long as any process holds a real (mapped) handle to it, closing it automatically on that process' crash/exit.

◆ operator const os_event() [1/2]

dx::resource< invalid_t >::operator const os_event ( ) const
inlinenoexceptinherited

◆ operator const os_event() [2/2]

dx::resource< invalid_t >::operator const os_event ( ) const
inlinenoexceptinherited

◆ operator dx::stream::clock::monitor &() [1/4]

◆ operator dx::stream::clock::monitor &() [2/4]

◆ operator dx::stream::clock::monitor &() [3/4]

◆ operator dx::stream::clock::monitor &() [4/4]

◆ operator dx::stream::clock::monitor *() [1/4]

dx::shared::memory< dx::stream::clock::monitor >::operator dx::stream::clock::monitor * ( )
inlineexplicitinherited

◆ operator dx::stream::clock::monitor *() [2/4]

dx::shared::memory< dx::stream::clock::monitor >::operator dx::stream::clock::monitor * ( )
inlineexplicitinherited

◆ operator dx::stream::clock::monitor *() [3/4]

dx::shared::memory< dx::stream::clock::monitor >::operator dx::stream::clock::monitor * ( )
inlineexplicitinherited

◆ operator dx::stream::clock::monitor *() [4/4]

dx::shared::memory< dx::stream::clock::monitor >::operator dx::stream::clock::monitor * ( )
inlineexplicitinherited

◆ operator monitor_t *()

template<typename super_device_t, typename _desc_t, typename _stream_t, typename _group_t = void>
template<typename monitor_t = dx::stream::clock::monitor>
dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::monitor::operator monitor_t * ( )
inline

◆ operator os_event() [1/2]

dx::resource< invalid_t >::operator os_event ( )
inlinenoexceptinherited

◆ operator os_event() [2/2]

dx::resource< invalid_t >::operator os_event ( )
inlinenoexceptinherited

◆ operator struct ::stat()

dx::shared::memory< dx::stream::clock::monitor >::operator struct ::stat ( )
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator*() [1/2]

◆ operator*() [2/2]

◆ operator->() [1/2]

◆ operator->() [2/2]

◆ operator::HANDLE() [1/2]

dx::resource< invalid_t >::operator::HANDLE ( ) const
inlinenoexceptinherited

◆ operator::HANDLE() [2/2]

dx::resource< invalid_t >::operator::HANDLE ( ) const
inlinenoexceptinherited

◆ path() [1/2]

std::string dx::shared::memory< dx::stream::clock::monitor >::path ( const std::string & name)
inlinestaticinherited

the name a segment carries in the system: the uid, hashed where it exceeds what a shared memory name takes

Here is the call graph for this function:
Here is the caller graph for this function:

◆ path() [2/2]

std::string dx::shared::memory< dx::stream::clock::monitor >::path ( const std::string & name)
inlinestaticinherited

the name a file mapping carries in the system: the uid, made a valid name and global

Here is the call graph for this function:

◆ release() [1/2]

bool dx::shared::reference::release ( )
inlinenoexceptinherited

releases this hold

Returns
true if this was the last holder of this name - i.e. no other process currently has it open, and cleanup guarded by this name is now safe
Here is the caller graph for this function:

◆ release() [2/2]

bool dx::shared::reference::release ( )
inlinenoexceptinherited

releases this hold

Returns
true if this was the last holder of this name - i.e. no other process currently has it open, and cleanup guarded by this name is now safe

◆ size()

size_t dx::shared::memory< dx::stream::clock::monitor >::size ( ) const
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ joined

true if initialize() found another holder already present, false if this was the first

◆ process [1/2]

::HANDLE dx::resource< invalid_t >::process
protectedinherited

◆ process [2/2]

::HANDLE dx::resource< invalid_t >::process
protectedinherited

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

(c) copyright 2009 dynamic acoustics e.U. generated on

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.