llvm-project/compiler-rt/lib/xray
Dean Michael Berris 35824efb45 [XRay][compiler-rt] Add APIs for processing logs in memory
Summary:
This change adds APIs to allow logging implementations to provide a
function for iterating through in-memory buffers (if they hold in-memory
buffers) and a way for users to generically deal with these buffers
in-process. These APIs are:

  - __xray_log_set_buffer_iterator(...) and
    __xray_log_remove_buffer_iterator(): installs and removes an
    iterator function that takes an XRayBuffer and yields the next one.

  - __xray_log_process_buffers(...): takes a function pointer that can
    take a mode identifier (string) and an XRayBuffer to process this
    data as they see fit.

The intent is to have the FDR mode implementation's buffers be
available through this `__xray_log_process_buffers(...)` API, so that
they can be streamed from memory instead of flushed to disk (useful for
getting the data to a network, or doing in-process analysis).

Basic mode logging will not support this mechanism as it's designed to
write the data mostly to disk.

Future implementations will may depend on this API as well, to allow for
programmatically working through the XRay buffers exposed to the
users in some fashion.

Reviewers: eizan, kpw, pelikan

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D43495

llvm-svn: 326866
2018-03-07 02:45:14 +00:00
..
tests [XRay][compiler-rt] Make unit tests depend on implementation files 2018-03-06 23:06:09 +00:00
CMakeLists.txt [compiler-rt][xray][cmake] Fix a build issue caused by set/item mixup 2017-12-06 14:03:41 +00:00
weak_symbols.txt [XRay][compiler-rt][Darwin] Minimal XRay build support in Darwin 2017-11-28 11:49:22 +00:00
xray_AArch64.cc [XRay][compiler-rt] Fix misspeling of XRaySledEntry 2017-05-12 01:33:55 +00:00
xray_always_instrument.txt [XRay][compiler-rt][NFC] Add example always/never instrument files. 2017-06-28 04:44:36 +00:00
xray_arm.cc [XRay][compiler-rt] Fix misspeling of XRaySledEntry 2017-05-12 01:33:55 +00:00
xray_buffer_queue.cc [XRay] Rename Buffer.Buffer to Buffer.Data 2018-02-10 09:07:34 +00:00
xray_buffer_queue.h [XRay] Rename Buffer.Buffer to Buffer.Data 2018-02-10 09:07:34 +00:00
xray_defs.h [XRay][compiler-rt] Disable XRay instrumentation of the XRay runtime. 2016-11-16 01:01:13 +00:00
xray_fdr_log_records.h [XRay] Use optimistic logging model for FDR mode 2017-11-21 07:16:57 +00:00
xray_fdr_logging.cc [XRay] Rename Buffer.Buffer to Buffer.Data 2018-02-10 09:07:34 +00:00
xray_fdr_logging.h [XRay] [compiler-rt] FDR logging arg1 handler 2017-09-28 05:29:59 +00:00
xray_fdr_logging_impl.h Add Xray instrumentation support to FreeBSD 2018-02-15 14:17:15 +00:00
xray_flags.cc [scudo] Allow options to be defined at compile time 2018-02-08 16:29:48 +00:00
xray_flags.h [XRay][compiler-rt] Coalesce calls to mprotect to reduce patching overhead 2017-12-14 02:51:20 +00:00
xray_flags.inc Add Xray instrumentation support to FreeBSD 2018-02-15 14:17:15 +00:00
xray_init.cc [XRay][compiler-rt][Darwin] Use dynamic initialisation as an alternative 2017-11-29 22:06:12 +00:00
xray_inmemory_log.cc Add Xray instrumentation support to FreeBSD 2018-02-15 14:17:15 +00:00
xray_inmemory_log.h [XRay][compiler-rt] Migrate basic mode logging to the XRay framework 2017-11-21 07:29:21 +00:00
xray_interface.cc [XRay][compiler-rt] Coalesce calls to mprotect to reduce patching overhead 2017-12-14 02:51:20 +00:00
xray_interface_internal.h [XRay][compiler-rt] Support sled versioning for custom event sleds 2017-08-23 04:42:37 +00:00
xray_log_interface.cc [XRay][compiler-rt] Add APIs for processing logs in memory 2018-03-07 02:45:14 +00:00
xray_mips.cc [XRay][compiler-rt] Runtime changes to support custom event logging 2017-05-12 01:07:41 +00:00
xray_mips64.cc [XRay][compiler-rt] Runtime changes to support custom event logging 2017-05-12 01:07:41 +00:00
xray_never_instrument.txt [XRay][compiler-rt][NFC] Add example always/never instrument files. 2017-06-28 04:44:36 +00:00
xray_powerpc64.cc [XRay][compiler-rt] Runtime changes to support custom event logging 2017-05-12 01:07:41 +00:00
xray_powerpc64.inc Re-commit r295017, since we have a potential fix of the tests, r295248, landed. 2017-02-15 22:40:29 +00:00
xray_trampoline_AArch64.S Add NO_EXEC_STACK_DIRECTIVE to xray assembly files. 2017-03-15 21:18:47 +00:00
xray_trampoline_arm.S Add NO_EXEC_STACK_DIRECTIVE to xray assembly files. 2017-03-15 21:18:47 +00:00
xray_trampoline_mips.S [Compiler-rt][XRAY][MIPS] Support xray on mips/mipsel/mips64/mips64el 2017-02-15 10:54:09 +00:00
xray_trampoline_mips64.S [Compiler-rt][XRAY][MIPS] Support xray on mips/mipsel/mips64/mips64el 2017-02-15 10:54:09 +00:00
xray_trampoline_powerpc64.cc Re-commit r295017, since we have a potential fix of the tests, r295248, landed. 2017-02-15 22:40:29 +00:00
xray_trampoline_powerpc64_asm.S [XRay] Fix XRay PPC return value bug. 2017-05-10 16:28:21 +00:00
xray_trampoline_x86_64.S [XRay][compiler-rt+llvm] Update XRay register stashing semantics 2018-02-01 02:21:54 +00:00
xray_tsc.h [XRay][compiler-rt] Support TSC emulation even for x86_64 2017-03-15 02:28:00 +00:00
xray_utils.cc [XRay][compiler-rt] Reduce XRay log spam 2017-12-13 06:37:13 +00:00
xray_utils.h [XRay] Refactor TSC related functions into a single header. NFC. 2017-02-10 20:30:43 +00:00
xray_x86_64.cc Add initial XRay support for NetBSD 2018-02-16 14:45:20 +00:00
xray_x86_64.inc Add Xray instrumentation support to FreeBSD 2018-02-15 14:17:15 +00:00