|
The Pedigree Project 0.1
|
Inheritance diagram for LinuxAmd64Signal::AsyncEvent:
Collaboration diagram for LinuxAmd64Signal::AsyncEvent:Public Member Functions | |
| AsyncEvent (uintptr_t handler, size_t signal, uint64_t signalMask, bool deferSignal, uint32_t flags, uintptr_t restorer, bool useAlternateStack, bool isDeletable=false) | |
| bool | requiresExactUserReturnState () const override |
| Event::UserReturnDelivery | deliverAtUserReturn (InterruptState &state) override |
| Event::UserReturnDelivery | deliverAtUserReturn (SyscallState &state) override |
| Event * | cloneForDelivery () override |
| SignalEvent * | cloneForDisposition () override |
| uint32_t | getFlags () const |
| uintptr_t | getRestorer () const |
Public Member Functions inherited from SignalEvent | |
| SignalEvent (uintptr_t handlerAddress, size_t signalNum, size_t specificNestingLevel=~0UL, uint64_t signalMask=0, bool deferSignal=true, bool isDeletable=false, HandlerPrivilege handlerPrivilege=HandlerPrivilege::Kernel, DeliveryDisposition disposition=DeliveryDisposition::CaughtHandler, bool useAlternateUserStack=false, size_t continuationEpoch=0) | |
| SignalEvent (const SignalEvent &other) | |
| void | setChildStatus (int32_t status, uint64_t userTime, uint64_t systemTime) |
| int32_t | childStatus () const |
| uint64_t | childUserTime () const |
| uint64_t | childSystemTime () const |
| uint64_t | rebindGeneration () const |
| void | setRebindGeneration (uint64_t value) |
| uint64_t | queueSequence () const |
| void | setQueueSequence (uint64_t value) |
| bool | deliveryActive () const |
| bool | queuedIndividually () const |
| bool | hasDeliveryState () const |
| void | setDeliveryState (const SharedPointer< SignalEventState > &state) |
| void | transferDeliveryStateTo (SignalEvent &event) |
| const void * | deliverySource () const |
| void | timerInfo (int32_t &timerId, int32_t &overrun) const |
| void | rejectSignalDelivery () const |
| void | completeSignalDelivery (int32_t overrun=0) const |
| void | setTraceBypass (bool value=true) |
| bool | consumeTraceBypass () |
| virtual size_t | serialize (uint8_t *pBuffer) |
| virtual bool | isSignalEvent () const |
| virtual bool | prefersAlternateUserStack () const |
| virtual bool | isDeliverableWhileProcessSuspended () const |
| void | setProcessDirected (bool processDirected) |
| bool | isProcessDirected () const |
| void | setSignalOrigin (int32_t signalCode, int32_t senderProcess, uint32_t senderUser) |
| int32_t | getSignalCode () const |
| int32_t | getSenderProcess () const |
| void | setSignalValue (uint64_t value) |
| uint64_t | getSignalValue () const |
| uint32_t | getSenderUser () const |
| uint64_t | getDeliverySignalMask () const |
| bool | defersDeliveredSignal () const |
| void | setContinuationEpoch (size_t continuationEpoch) |
| size_t | getContinuationEpoch () const |
| virtual size_t | getNumber () |
Public Member Functions inherited from Event | |
| Event (uintptr_t handlerAddress, bool isDeletable, size_t specificNestingLevel=~0UL, HandlerPrivilege handlerPrivilege=HandlerPrivilege::Kernel) | |
| virtual bool | isDeletable () |
| uintptr_t | getHandlerAddress () |
| HandlerPrivilege | getHandlerPrivilege () const |
| bool | isValidHandlerMapping (size_t mappingFlags) const |
| size_t | getSpecificNestingLevel () |
| Event (const Event &other) | |
| Event & | operator= (const Event &other) |
| size_t | pendingCount () |
| bool | tryAcquireRegistration (SendLease ®istration) |
| virtual void | waitForDeliveries () |
| void | retire () |
| void | beginRetirement (Retirement &retirement) |
Private Member Functions | |
| AsyncEvent (const AsyncEvent &other, bool isDeletable) | |
Private Attributes | |
| uint32_t | m_Flags |
| uintptr_t | m_Restorer |
Additional Inherited Members | |
Public Types inherited from SignalEvent | |
| enum class | DeliveryDisposition { DefaultAction , CaughtHandler } |
Public Types inherited from Event | |
| enum class | HandlerPrivilege { Kernel , User } |
| enum class | UserReturnDelivery { NotApplicable , Delivered , Failed } |
Static Public Member Functions inherited from SignalEvent | |
| static bool | unserialize (uint8_t *pBuffer, Event &event) |
Static Public Member Functions inherited from Event | |
| static uintptr_t | getTrampoline () |
| static uintptr_t | getSecondaryTrampoline () |
| static uintptr_t | getHandlerBuffer () |
| static size_t | getHandlerBufferSize () |
| static uintptr_t | getLastHandlerBuffer () |
| static bool | unserialize (uint8_t *pBuffer, Event &event) |
| static size_t | getEventType (uint8_t *pBuffer) |
Protected Member Functions inherited from SignalEvent | |
| SignalEvent (const SignalEvent &other, bool isDeletable) | |
Protected Attributes inherited from Event | |
| uintptr_t | m_HandlerAddress |
| HandlerPrivilege | m_HandlerPrivilege |
| bool | m_bIsDeletable |
| size_t | m_NestingLevel |
| uint64_t | m_Magic |
| List< Thread * > | m_Threads |
| Spinlock | m_Lock |
Definition at line 33 of file linux-amd64-signal.h.
| LinuxAmd64Signal::AsyncEvent::AsyncEvent | ( | uintptr_t | handler, |
| size_t | signal, | ||
| uint64_t | signalMask, | ||
| bool | deferSignal, | ||
| uint32_t | flags, | ||
| uintptr_t | restorer, | ||
| bool | useAlternateStack, | ||
| bool | isDeletable = false |
||
| ) |
Definition at line 406 of file linux-amd64-signal.cc.
|
private |
Definition at line 415 of file linux-amd64-signal.cc.
|
overridevirtual |
Returns the instance to enqueue for one delivery. Most events enqueue themselves; signal dispositions return an independently owned snapshot.
Reimplemented from SignalEvent.
Definition at line 418 of file linux-amd64-signal.cc.
References Event::isDeletable().
|
overridevirtual |
Copies a stable signal-disposition event without slicing subclasses.
Reimplemented from SignalEvent.
Definition at line 425 of file linux-amd64-signal.cc.
|
overridevirtual |
Delivers this event by editing an interrupt return frame in place.
Reimplemented from Event.
Definition at line 429 of file linux-amd64-signal.cc.
References ProcessorBase::information().
|
overridevirtual |
Delivers this event by editing a syscall return frame in place.
Reimplemented from Event.
Definition at line 454 of file linux-amd64-signal.cc.
References ProcessorBase::information().
|
inline |
Definition at line 47 of file linux-amd64-signal.h.
|
inline |
Definition at line 51 of file linux-amd64-signal.h.
|
inlineoverridevirtual |
Returns true when this event cannot run without the raw user context.
Reimplemented from Event.
Definition at line 38 of file linux-amd64-signal.h.
|
private |
Definition at line 58 of file linux-amd64-signal.h.
|
private |
Definition at line 59 of file linux-amd64-signal.h.