frysk.ftrace
Class FtraceController

java.lang.Object
  extended by frysk.ftrace.FtraceController
All Implemented Interfaces:
Ftrace.Controller, Ftrace.StackTracedSymbolsProvider, Ftrace.TracedSignalProvider, Ftrace.TracedSyscallProvider

public class FtraceController
extends Object
implements Ftrace.Controller, Ftrace.StackTracedSymbolsProvider, Ftrace.TracedSyscallProvider, Ftrace.TracedSignalProvider


Nested Class Summary
(package private) static interface FtraceController.RuleHandler
           
 
Field Summary
private  List addrRules
           
private static Log fine
           
private  List sigRules
           
private  boolean stackTraceEverything
           
private  List symRules
           
private  List sysRules
           
private  HashSet tracePointStackTraceSet
           
private static Log warning
           
 
Constructor Summary
FtraceController()
           
 
Method Summary
private  void applyAddrRules(Task task, ObjectFile objf, long bias, List rules, Ftrace.Driver driver)
           
private  void applySymbolRules(Task task, ObjectFile objf, List tracePoints, List rules, FtraceController.RuleHandler handler)
           
 Map computeSignalWorkingSet(Task task)
          Answers Map<String, Boolean>, where the boolean value is whether to stack trace on given signal.
 Map computeSyscallWorkingSet(Task task)
          Answers Map<Syscall, Boolean>, where the boolean value is whether to stack trace on given syscall.
private  Map computeWorkingSet(Task task, String what, List rules, ArrayList candidates)
           
 void fileMapped(Task task, ObjectFile objf, DwflModule module, Ftrace.Driver driver)
          New library FILE was mapped in task TASK.
 void fileUnmapped(Task task, ObjectFile objf, DwflModule module, Ftrace.Driver driver)
          New library FILE was unmapped from task TASK.
 void gotAddrRules(List rules)
           
 void gotSigRules(List rules)
           
 void gotSymRules(List rules)
           
 void gotSysRules(List rules)
           
private  boolean isInterpOf(ObjectFile objf, String exe)
           
 boolean shouldStackTraceOnTracePoint(Object tracePoint)
           
 void stackTraceEverything()
           
private  List traceablesForModule(DwflModule module)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

warning

private static final Log warning

fine

private static final Log fine

symRules

private final List symRules

addrRules

private final List addrRules

sysRules

private final List sysRules

sigRules

private final List sigRules

tracePointStackTraceSet

private HashSet tracePointStackTraceSet

stackTraceEverything

private boolean stackTraceEverything
Constructor Detail

FtraceController

public FtraceController()
Method Detail

stackTraceEverything

public void stackTraceEverything()

shouldStackTraceOnTracePoint

public boolean shouldStackTraceOnTracePoint(Object tracePoint)
Specified by:
shouldStackTraceOnTracePoint in interface Ftrace.StackTracedSymbolsProvider
Parameters:
tracePoint - is either DwflSymbol or PLTEntry.

gotSymRules

public void gotSymRules(List rules)

gotAddrRules

public void gotAddrRules(List rules)

gotSysRules

public void gotSysRules(List rules)

gotSigRules

public void gotSigRules(List rules)

computeWorkingSet

private Map computeWorkingSet(Task task,
                              String what,
                              List rules,
                              ArrayList candidates)

computeSyscallWorkingSet

public Map computeSyscallWorkingSet(Task task)
Description copied from interface: Ftrace.TracedSyscallProvider
Answers Map<Syscall, Boolean>, where the boolean value is whether to stack trace on given syscall.

Specified by:
computeSyscallWorkingSet in interface Ftrace.TracedSyscallProvider

computeSignalWorkingSet

public Map computeSignalWorkingSet(Task task)
Description copied from interface: Ftrace.TracedSignalProvider
Answers Map<String, Boolean>, where the boolean value is whether to stack trace on given signal.

Specified by:
computeSignalWorkingSet in interface Ftrace.TracedSignalProvider

isInterpOf

private boolean isInterpOf(ObjectFile objf,
                           String exe)

applySymbolRules

private void applySymbolRules(Task task,
                              ObjectFile objf,
                              List tracePoints,
                              List rules,
                              FtraceController.RuleHandler handler)
                       throws ElfException
Throws:
ElfException

applyAddrRules

private void applyAddrRules(Task task,
                            ObjectFile objf,
                            long bias,
                            List rules,
                            Ftrace.Driver driver)

traceablesForModule

private List traceablesForModule(DwflModule module)

fileMapped

public void fileMapped(Task task,
                       ObjectFile objf,
                       DwflModule module,
                       Ftrace.Driver driver)
Description copied from interface: Ftrace.Controller
New library FILE was mapped in task TASK. Use DRIVER to tell ltrace what to do.

Specified by:
fileMapped in interface Ftrace.Controller

fileUnmapped

public void fileUnmapped(Task task,
                         ObjectFile objf,
                         DwflModule module,
                         Ftrace.Driver driver)
Description copied from interface: Ftrace.Controller
New library FILE was unmapped from task TASK. Use DRIVER to tell ltrace what to do.

Specified by:
fileUnmapped in interface Ftrace.Controller