Package frysk.proc

This package implements frysk's process model of the target system.

See:
          Description

Interface Summary
FindProc Interface to be used with Host.requestFindProc.
HostRefreshBuilder [Re-]build the information on the processes running on a host.
Observer Root Observer interface.
ProcBlockObserver An interface perform a one time check of all tasks while each is in the blocked state.
ProcTasksObserver An interface for clients to correctly know about all tasks of a Proc.
TaskAttachedObserverXXX Interface used to notify of a Task that has has been attached, and is about to resume execution in that state.
TaskObserver Observable events generated by a Task.
TaskObserver.Cloned Interface used to notify of Task clone events.
TaskObserver.Code Interface used to notify of a Task that the task's execution has reached a specific point in the code address space.
TaskObserver.Execed Interface used to notify of a Task exec (overlaying the process image with that of a new program).
TaskObserver.Forked Interface used to notify of Task forked (creating a new child process that contains one Task) events.
TaskObserver.Instruction Interface used to notify that a Task has executed a single instruction.
TaskObserver.Signaled Interface used to notify that a Task has a pending signal.
TaskObserver.Syscalls Interface used to notify of a Task either entering, or exiting a system call.
TaskObserver.Terminated Interface used to notify that Task has terminated (the task no longer exits).
TaskObserver.Terminating Interface used to notify of a Task that is terminating.
TaskObserver.Watch  
 

Class Summary
Action An Observer return this Action to indicate what should happen next.
Auxv  
Environ The environment vector.
Host A host machine.
HostEvent Possible host events.
Manager Manager of all operations within the proc model.
MemoryMap Represent a memory map as modelled in /proc/$$/maps.
Observable Observable element of the proc model.
Observation The binding between an Observer and its Observable.
Proc A UNIX Process, containing tasks, memory, ...
ProcBlockAction This class blocks all of the threads in a process and performs a given action defined by the method existingTask(Task task) on each task.
ProcEvent  
ProcEventObservable  
ProcTasksAction Provides a mechanism for tracing all clone events within a process.
StressAttachDetachManyTasks Test attaching to a process with many many tasks.
StressAttachDetachRapidlyCloningMainTask Observer stress test.
StressAttachDetachRapidlyForkingMainTask Check that the observer TaskObserver.Forked works.
StressAttachDetachSignaledTask Test attaching to a process with many many tasks.
StressAttachDetachSignaledTask.SignalStorm A signal class; that just adds then delets itself.
StressTestAbandon  
Task  
TaskEvent  
TaskId Light weight identifier for a task.
TestAbandon  
TestBreakpoints  
TestBreakpoints.InstructionObserver  
TestComparable  
TestEnviron Test an Environment vector.
TestExec Test the exec event.
TestFindProc  
TestHostGet Test Host's public get methods.
TestInstructions  
TestInstructions.InstructionObserver  
TestInstructions.Symbol  
TestMapGet  
TestProcForceDetach  
TestProcGet Test Proc's public get methods.
TestProcTasksObserver Test that the Proc's ProcTasks Observer correctly reports the tasks belonging to a process.
TestProcTasksObserver.ProcTasksTester  
TestRun Check that a program can be run to completion.
TestSyscallRunning XXX: This code should be simplified, eliminating local parallelism by performing everything in a single test-thread.
TestSyscallSignal XXX: This code should be simplified, eliminating local parallelism by performing everything in a single test-thread.
TestTaskClonedObserver Check that clone (task create and delete) events are detected.
TestTaskForkedObserver Check that the observer TaskObserver.Forked works.
TestTaskObserver Generic observer tests - that the framework functions ok.
TestTaskObserverDetach Check that random events, arriving mid-way through a detach, are handled.
TestTaskObserverInstruction  
TestTaskObserverInstruction.InstructionObserver  
TestTaskObserverInstructionAndCode  
TestTaskObserverInstructionAndCode.CodeObserver  
TestTaskObserverInstructionAndCode.InstructionObserver  
TestTaskObserverInstructionAndCode.TerminatedObserver  
TestTaskObserverInstructionAndCode.TestObserver  
TestTaskObserverInstructionSigReturn  
TestTaskObserverWatchpoint  
TestTaskObserverWatchpoint.AddFailWatchObserver  
TestTaskObserverWatchpoint.CodeObserver  
TestTaskObserverWatchpoint.FailingWatchObserver  
TestTaskObserverWatchpoint.InstructionObserver  
TestTaskObserverWatchpoint.OkToTerminateObserver  
TestTaskObserverWatchpoint.Symbol  
TestTaskObserverWatchpoint.TerminatedObserver  
TestTaskObserverWatchpoint.TestObserver  
TestTaskObserverWatchpoint.WatchObserver  
TestTaskSyscallObserver Check that syscall events are detected.
TestTaskSyscallObserver.SyscallObserver  
TestTaskTerminateObserver Check the Task terminating and terminated observers.
TestTaskTerminateObserver.TerminatingCounter  
 

Package frysk.proc Description

This package implements frysk's process model of the target system.

Overview

FRYSK's process model provides a process-level view of the target system. The model consists of hosts (Host), processes (Proc), and tasks (Task, a.k.a., threads). Frysk provides both behavioral and relational views of that model.

The following sections describe each of those views.

Relational View: A Process Tree

Consistent with the underlying linux system, FRYSK's process model can be viewed as a collection of hosts, each host having a tree of processes:

Process Tree

Process 1 forms the root of the process tree.

The tasks, within a process, form a simple two level tree:

Task Tree

Methods for iterating over, and searching for, a host's process and tasks are provided.

Behavioral View: Message Passing State Machines

The process model can also be viewed as a collection of independent state-machines. Each state-machine instance tracks the state of the corresponding host, process, or task.

For instance, a process(or Proc object) has the following states:

Process State Model

The client manipulates a state-machine instance by sending it request messages. The state-machine, in turn, notifies interested client of state transitions that result from these requests, and other asynchronous events, using observers.

Finally, the individual state-machine uses internal messages to co-ordinate the systems overall state.