|
The Pedigree Project 0.1
|
#include <mqueue-netlink.h>
Inheritance diagram for MqueueNetlinkSocket:
Collaboration diagram for MqueueNetlinkSocket:Public Member Functions | |
| MqueueNetlinkSocket (int type, int protocol) | |
| bool | create () override |
| bool | reserveCookie () |
| void | deliverCookie (const uint8_t cookie[32], bool removed) |
| void | lastDescriptorClosed () override |
| bool | canPoll () const override |
| ReadyMask | queryReady (bool reading, bool writing) override |
| ReadinessGenerations | readinessGenerations () override |
| int | connect (const struct sockaddr_storage *, socklen_t) override |
| ssize_t | sendto_msg (const struct msghdr *, const SharedPointer< SocketRights > &) override |
| ssize_t | recvfrom_msg (struct msghdr *, SharedPointer< SocketRights > *) override |
| int | listen (int) override |
| int | bind (const struct sockaddr_storage *, socklen_t) override |
| int | accept (struct sockaddr_storage *, socklen_t *, int, DescriptorLease *) override |
| int | shutdown (int) override |
| int | getpeername (struct sockaddr_storage *, socklen_t *) override |
| int | getsockname (struct sockaddr_storage *, socklen_t *) override |
| int | setsockopt (int, int, const void *, socklen_t) override |
| int | getsockopt (int, int, void *, socklen_t *) override |
Public Member Functions inherited from NetworkSyscalls | |
| NetworkSyscalls (int domain, int type, int protocol) | |
| virtual ssize_t | sendto (const void *buffer, size_t bufferlen, int flags, const struct sockaddr_storage *address, socklen_t addrlen) |
| virtual ssize_t | recvfrom (void *buffer, size_t bufferlen, int flags, struct sockaddr_storage *address, socklen_t *addrlen) |
| virtual bool | poll (bool &read, bool &write, bool &error, Semaphore *waiter) |
| virtual void | unPoll (Semaphore *waiter) |
| ReadinessGenerations | readinessGenerations () override |
| MUST_USE_RESULT bool | addDescriptorOwner () |
| void | removeDescriptorOwner () |
| void | retainDescriptorLifetime (const SharedPointer< NetworkSyscalls > &lifetime) |
| virtual bool | monitor (Thread *pThread, Event *pEvent) |
| virtual bool | unmonitor (Event *pEvent) |
| void | associate (FileDescriptor *fd) |
| int | getDomain () const |
| int | getType () const |
| int | getProtocol () const |
| bool | isBlocking () const |
| virtual void | setBlocking (bool blocking) |
| int | takeReceiveError () |
| void | deferReceiveError (int error) |
Public Member Functions inherited from ReadinessSource | |
| MUST_USE_RESULT bool | subscribeReadiness (ReadyMask interest, const SharedPointer< ReadinessObserver > &observer, ReadinessSubscription &subscription) |
Private Attributes | |
| Mutex | m_Lock |
| ConditionVariable | m_Changed |
| uint8_t | m_Cookies [64][32] |
| size_t | m_Head |
| size_t | m_Count |
| size_t | m_Reserved |
| bool | m_Closed |
| ReadinessGenerations | m_Generations |
Additional Inherited Members | |
Protected Member Functions inherited from NetworkSyscalls | |
| ReadyMask | pendingReceiveReadiness () const |
| ReadinessGenerations | withReceiveErrorGeneration (ReadinessGenerations generations) const |
| bool | beginDescriptorClose () |
| bool | hasLastDescriptorClosed () const |
| SharedPointer< NetworkSyscalls > | acquireDescriptorLifetime () const |
| SharedPointer< NetworkSyscalls > | releaseDescriptorLifetime () |
Protected Member Functions inherited from ReadinessSource | |
| void | notifyReadiness (ReadyMask mask) |
| void | closeReadiness (ReadyMask mask=ReadyInvalid|ReadyHangup) |
Protected Attributes inherited from NetworkSyscalls | |
| int | m_Domain |
| int | m_Type |
| int | m_Protocol |
| Atomic< bool > | m_Blocking |
| Mutex | m_ReceiveErrorLock |
| int | m_ReceiveError = 0 |
| uint64_t | m_ReceiveErrorGeneration = 0 |
| OperationBarrier | m_ReadinessNotifications |
Netlink cookie delivery used by Linux SIGEV_THREAD message queue notifications.
Definition at line 10 of file mqueue-netlink.h.
| MqueueNetlinkSocket::MqueueNetlinkSocket | ( | int | type, |
| int | protocol | ||
| ) |
Definition at line 18 of file mqueue-netlink.cc.
|
override |
Definition at line 29 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 174 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 171 of file mqueue-netlink.cc.
|
overridevirtual |
Reimplemented from NetworkSyscalls.
Definition at line 89 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 162 of file mqueue-netlink.cc.
|
overridevirtual |
Implementation-specific final socket creation logic, implementations must set a SYSCALL_ERROR on failure.
Reimplemented from NetworkSyscalls.
Definition at line 33 of file mqueue-netlink.cc.
| void MqueueNetlinkSocket::deliverCookie | ( | const uint8_t | cookie[32], |
| bool | removed | ||
| ) |
Definition at line 55 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 180 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 184 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 198 of file mqueue-netlink.cc.
|
overridevirtual |
Retire the transport after the final descriptor alias closes.
Readiness users may retain this wrapper after the transport is gone, so implementations leave queryReady() returning a stable terminal state.
Reimplemented from NetworkSyscalls.
Definition at line 74 of file mqueue-netlink.cc.
References NetworkSyscalls::beginDescriptorClose(), ConditionVariable::broadcast(), OperationBarrier::closeAndWait(), ReadinessSource::closeReadiness(), and NetworkSyscalls::m_ReadinessNotifications.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 168 of file mqueue-netlink.cc.
|
overridevirtual |
Return a level-triggered snapshot for the requested I/O directions.
Reimplemented from NetworkSyscalls.
Definition at line 93 of file mqueue-netlink.cc.
|
overridevirtual |
Return source-serialized rising-edge sequences where available.
A source increments the corresponding sequence while holding the same lock which changes its readiness predicate. Consumers can then recover a drain/refill transition even if the two callback deliveries are reordered.
Reimplemented from ReadinessSource.
Definition at line 102 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 107 of file mqueue-netlink.cc.
| bool MqueueNetlinkSocket::reserveCookie | ( | ) |
Definition at line 41 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 165 of file mqueue-netlink.cc.
|
overridevirtual |
Implements NetworkSyscalls.
Definition at line 194 of file mqueue-netlink.cc.
|
overridevirtual |
Reimplemented from NetworkSyscalls.
Definition at line 177 of file mqueue-netlink.cc.
|
private |
Definition at line 35 of file mqueue-netlink.h.
|
private |
Definition at line 38 of file mqueue-netlink.h.
|
private |
Definition at line 36 of file mqueue-netlink.h.
|
private |
Definition at line 37 of file mqueue-netlink.h.
|
private |
Definition at line 39 of file mqueue-netlink.h.
|
private |
Definition at line 37 of file mqueue-netlink.h.
|
private |
Definition at line 34 of file mqueue-netlink.h.
|
private |
Definition at line 37 of file mqueue-netlink.h.