[PATCH] D26651: [XRay][docs] Define requirements on installed log handlers.

Dean Michael Berris via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 14 16:49:40 PST 2016


dberris created this revision.
dberris added reviewers: rSerge, rengolin.
dberris added a subscriber: llvm-commits.

We update the documentation to define what the requirements are for the
provided XRay log handler. This is to make it clear that the function
pointer provided must do internal synchronisation and that there are no
guarantees provided by XRay on when the function shall be invoked once
it has been installed as a log handler.


https://reviews.llvm.org/D26651

Files:
  docs/XRay.rst


Index: docs/XRay.rst
===================================================================
--- docs/XRay.rst
+++ docs/XRay.rst
@@ -162,6 +162,19 @@
 - ``__xray_unpatch()``: Unpatch the instrumentation points defined in the
   binary.
 
+There are some requirements on the logging handler to be installed for the
+thread-safety of operations to be performed by the XRay runtime library:
+
+- The function should be thread-safe, as multiple threads may be invoking the
+  function at the same time. If the logging function needs to do
+  synchronisation, it must do so internally as XRay does not provide any
+  synchronisation guarantees outside from the atomicity of updates to the
+  pointer.
+- The pointer provided to ``__xray_set_handler(...)`` must be live even after
+  calls to ``__xray_remove_handler()`` and ``__xray_unpatch()`` have succeeded.
+  XRay cannot guarantee that all threads that have ever gotten a copy of the
+  pointer will not invoke the function.
+
 
 Trace Analysis Tools
 --------------------


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26651.77918.patch
Type: text/x-patch
Size: 1019 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161115/c5007a79/attachment.bin>


More information about the llvm-commits mailing list