1. 25 Jul, 2016 5 commits
  2. 24 Jul, 2016 6 commits
  3. 23 Jul, 2016 4 commits
  4. 22 Jul, 2016 1 commit
  5. 19 Jul, 2016 1 commit
  6. 18 Jul, 2016 2 commits
  7. 17 Jul, 2016 2 commits
    • Mark Drayton's avatar
      Move open_{kprobes,uprobes,tracepoints} into BPF object · cb679d7b
      Mark Drayton authored
      * for #605, this diff moves probe storage from the BPF module to the BPF object,
        letting each instantiation clean up its own probes. A module-level counter
        for all open probes is provided for the quota check. It also adds a
        `cleanup()` function to force cleanup before the `atexit` handler runs.
      
      * for #614, it removes the `len(open_kprobes) == 0` check that prevented more
        than one autoload probe working. It fixes the tests that this change breaks by
        calling the `cleanup()` function added.
      cb679d7b
    • Mark Drayton's avatar
      Store kprobes with string keys, fix num_open_kprobes · 8fa8c0e8
      Mark Drayton authored
      Prior to this diff we used inconsistent types for keys in `open_kprobes`. The
      results from the regex match (`attach_kprobe(event_re=..)`) and the automatic
      `kprobe__` features were passed through `str.decode()`, yielding unicode keys,
      but specific matches (i.e. from `attach_kprobe(event=..)`) were stored with
      string keys passed down from the caller. Only probes under string keys were
      released in `cleanup_kprobes`, leaving attached probes on program exit.
      
      This diff makes all the keys regular strings. I erred on the side of using
      regular strings over `str.decode()`ing them because a) this data isn't passed
      outside of Python, b) it's more Python 3 compatible (there is no `.decode()` on
      a regular string object in Python 3 so such a change would ultimately need
      removing again).
      
      I also cleaned up a few other things:
      
      * removed the call to `awk` for getting probable functions
      
      * removed the `isinstance` checks when cleaning uprobes/tracepoints -- we
        should only have string keys in these dicts
      
      * made `num_open_kprobes` skip the perf_events buffers. People likely use this
        to check that the right number of probes have been placed so counting
        perf_events buffers doesn't make sense here
      8fa8c0e8
  8. 14 Jul, 2016 2 commits
  9. 13 Jul, 2016 5 commits
  10. 12 Jul, 2016 2 commits
  11. 11 Jul, 2016 3 commits
  12. 09 Jul, 2016 3 commits
    • Sasha Goldshtein's avatar
      tests: Test new tracepoint support · d9c243e6
      Sasha Goldshtein authored
      d9c243e6
    • Sasha Goldshtein's avatar
      cc: Rewrite probe functions that refer to tracepoint structures · fab68e3a
      Sasha Goldshtein authored
      When a probe function refers to a tracepoint arguments structure,
      such as `struct tracepoint__irq__irq_handler_entry`, add that structure
      on-the-fly using a Clang frontend action that runs before any other
      steps take place.
      
      Typically, the user will create tracepoint probe functions using
      the TRACEPOINT_PROBE macro, which avoids the need for specifying
      the tracepoint category and event twice in the signature of the
      probe function.
      fab68e3a
    • Sasha Goldshtein's avatar
      bcc: Auto-tracepoints similar to auto-kprobes · 619fc140
      Sasha Goldshtein authored
      When a function in the BPF program starts with "tracepoint__", parse
      the rest of the name as a tracepoint category and name and attach the
      tracepoint automatically. For example:
      
      ```
      int tracepoint__sched__sched_switch(...)
      ```
      
      As a result, the sched:sched_switch tracepoint is enabled and the function
      is attached to that tracepoint.
      619fc140
  13. 08 Jul, 2016 3 commits
  14. 02 Jul, 2016 1 commit