]> granicus.if.org Git - llvm/commitdiff
[XRay][docs] Define requirements on installed log handlers.
authorDean Michael Berris <dberris@google.com>
Wed, 16 Nov 2016 02:18:23 +0000 (02:18 +0000)
committerDean Michael Berris <dberris@google.com>
Wed, 16 Nov 2016 02:18:23 +0000 (02:18 +0000)
Summary:
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.

Reviewers: rSerge, rengolin

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287073 91177308-0d34-0410-b5e6-96231b3b80d8

docs/XRay.rst

index 17dde1234837ef85e33631fc8f3a3ce60efdd2d5..222cc8f2e049c0e898af2c97a3ca6181e8c7f7e6 100644 (file)
@@ -162,6 +162,19 @@ functions we list below:
 - ``__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
 --------------------