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...
|
| | 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 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
|
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