frysk.proc.live
Class LinuxPtraceTaskState.Running

java.lang.Object
  extended by frysk.proc.live.State
      extended by frysk.proc.live.LinuxPtraceTaskState
          extended by frysk.proc.live.LinuxPtraceTaskState.Running
Direct Known Subclasses:
LinuxPtraceTaskState.Stepping
Enclosing class:
LinuxPtraceTaskState

private static class LinuxPtraceTaskState.Running
extends LinuxPtraceTaskState

Keep the task running.


Nested Class Summary
 
Nested classes/interfaces inherited from class frysk.proc.live.LinuxPtraceTaskState
LinuxPtraceTaskState.StartClonedTask
 
Field Summary
private  boolean insyscall
           
 
Fields inherited from class frysk.proc.live.LinuxPtraceTaskState
detaching, inSyscallRunning, running, stepping
 
Constructor Summary
protected LinuxPtraceTaskState.Running(String state, boolean insyscall)
           
 
Method Summary
(package private)  LinuxPtraceTaskState blockedContinue()
          Returns a blocked LinuxPtraceTaskState depending on whether we are syscall tracing the LinuxPtraceTask and being inside or outside a syscall.
(package private)  int checkWatchpoint(LinuxPtraceTask task)
          Returns the number of blockers if a watchpoint was hit, or -1 when no watchpoint was hit for this Task.
(package private)  LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task, TaskObservation observation)
           
(package private)  LinuxPtraceTaskState handleClonedEvent(LinuxPtraceTask task, LinuxPtraceTask clone)
           
(package private)  LinuxPtraceTaskState handleContinue(LinuxPtraceTask task)
           
(package private)  LinuxPtraceTaskState handleDeleteObservation(LinuxPtraceTask task, TaskObservation observation)
           
(package private)  LinuxPtraceTaskState handleDetach(LinuxPtraceTask task, boolean shouldRemoveObservers)
           
(package private)  LinuxPtraceTaskState handleExecedEvent(LinuxPtraceTask task)
           
(package private)  LinuxPtraceTaskState handleForkedEvent(LinuxPtraceTask task, LinuxPtraceTask fork)
           
(package private)  LinuxPtraceTaskState handleSignaledEvent(LinuxPtraceTask task, Signal sig)
           
(package private)  LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task, Signal signal)
           
(package private)  LinuxPtraceTaskState handleSyscalledEvent(LinuxPtraceTask task)
           
(package private)  LinuxPtraceTaskState handleTerminatedEvent(LinuxPtraceTask task, Signal signal, int status)
          The process was terminated (can happen at any time and hence must always be handled).
(package private)  LinuxPtraceTaskState handleTerminatingEvent(LinuxPtraceTask task, Signal signal, int status)
           
(package private)  LinuxPtraceTaskState handleTrappedEvent(LinuxPtraceTask task)
          Handles traps caused by breakpoints or instruction stepping.
(package private)  LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task, TaskObserver observer)
           
(package private)  LinuxPtraceTaskState.Running sendContinue(LinuxPtraceTask task, Signal sig)
          Tells the LinuxPtraceTask to continue, keeping in kind pending breakpoints, with or without syscall tracing.
 
Methods inherited from class frysk.proc.live.LinuxPtraceTaskState
clonedState, detachedState, handleAttach, handleRemoval, mainState
 
Methods inherited from class frysk.proc.live.State
toString, unhandled, unhandled
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

insyscall

private final boolean insyscall
Constructor Detail

LinuxPtraceTaskState.Running

protected LinuxPtraceTaskState.Running(String state,
                                       boolean insyscall)
Method Detail

sendContinue

LinuxPtraceTaskState.Running sendContinue(LinuxPtraceTask task,
                                          Signal sig)
Tells the LinuxPtraceTask to continue, keeping in kind pending breakpoints, with or without syscall tracing. Returns the new Running (sub) state of the Task.


blockedContinue

LinuxPtraceTaskState blockedContinue()
Returns a blocked LinuxPtraceTaskState depending on whether we are syscall tracing the LinuxPtraceTask and being inside or outside a syscall.


handleSignaledEvent

LinuxPtraceTaskState handleSignaledEvent(LinuxPtraceTask task,
                                         Signal sig)

handleStoppedEvent

LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
                                        Signal signal)
Overrides:
handleStoppedEvent in class LinuxPtraceTaskState

handleTerminatingEvent

LinuxPtraceTaskState handleTerminatingEvent(LinuxPtraceTask task,
                                            Signal signal,
                                            int status)
Overrides:
handleTerminatingEvent in class LinuxPtraceTaskState

handleTerminatedEvent

LinuxPtraceTaskState handleTerminatedEvent(LinuxPtraceTask task,
                                           Signal signal,
                                           int status)
Description copied from class: LinuxPtraceTaskState
The process was terminated (can happen at any time and hence must always be handled).

Specified by:
handleTerminatedEvent in class LinuxPtraceTaskState

handleExecedEvent

LinuxPtraceTaskState handleExecedEvent(LinuxPtraceTask task)
Overrides:
handleExecedEvent in class LinuxPtraceTaskState

handleContinue

LinuxPtraceTaskState handleContinue(LinuxPtraceTask task)
Overrides:
handleContinue in class LinuxPtraceTaskState

handleDetach

LinuxPtraceTaskState handleDetach(LinuxPtraceTask task,
                                  boolean shouldRemoveObservers)
Overrides:
handleDetach in class LinuxPtraceTaskState

handleClonedEvent

LinuxPtraceTaskState handleClonedEvent(LinuxPtraceTask task,
                                       LinuxPtraceTask clone)
Overrides:
handleClonedEvent in class LinuxPtraceTaskState

handleForkedEvent

LinuxPtraceTaskState handleForkedEvent(LinuxPtraceTask task,
                                       LinuxPtraceTask fork)
Overrides:
handleForkedEvent in class LinuxPtraceTaskState

checkWatchpoint

int checkWatchpoint(LinuxPtraceTask task)
Returns the number of blockers if a watchpoint was hit, or -1 when no watchpoint was hit for this Task.


handleTrappedEvent

LinuxPtraceTaskState handleTrappedEvent(LinuxPtraceTask task)
Handles traps caused by breakpoints or instruction stepping. If there are any Code observers at the address of the trap they get notified. If none of the Code observers blocks we continue over the breakpoint (breakpoint stepping state), otherwise we block till all blocking observers are happy (breakpoint stopped state). If there are no Code observers installed at the address, but we are stepping then all instruction observers are notified. Otherwise it is a real trap event and we pass it on to the task itself.


handleAddObservation

LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
                                          TaskObservation observation)
Overrides:
handleAddObservation in class LinuxPtraceTaskState

handleDeleteObservation

LinuxPtraceTaskState handleDeleteObservation(LinuxPtraceTask task,
                                             TaskObservation observation)
Overrides:
handleDeleteObservation in class LinuxPtraceTaskState

handleUnblock

LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task,
                                   TaskObserver observer)
Overrides:
handleUnblock in class LinuxPtraceTaskState

handleSyscalledEvent

LinuxPtraceTaskState handleSyscalledEvent(LinuxPtraceTask task)
Overrides:
handleSyscalledEvent in class LinuxPtraceTaskState