[PATCH] D38995: [XRay][compiler-rt] Always place the CPU record first for every buffer
Dean Michael Berris via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 17 03:33:39 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL315987: [XRay][compiler-rt] Always place the CPU record first for every buffer (authored by dberris).
Repository:
rL LLVM
https://reviews.llvm.org/D38995
Files:
compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
compiler-rt/trunk/lib/xray/xray_fdr_logging_impl.h
Index: compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
===================================================================
--- compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
+++ compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
@@ -206,17 +206,17 @@
void fdrLoggingHandleArg0(int32_t FuncId,
XRayEntryType Entry) XRAY_NEVER_INSTRUMENT {
auto TSC_CPU = getTimestamp();
- __xray_fdr_internal::processFunctionHook(
- FuncId, Entry, std::get<0>(TSC_CPU), std::get<1>(TSC_CPU), 0,
- clock_gettime, *BQ);
+ __xray_fdr_internal::processFunctionHook(FuncId, Entry, std::get<0>(TSC_CPU),
+ std::get<1>(TSC_CPU), 0,
+ clock_gettime, *BQ);
}
void fdrLoggingHandleArg1(int32_t FuncId, XRayEntryType Entry,
uint64_t Arg) XRAY_NEVER_INSTRUMENT {
auto TSC_CPU = getTimestamp();
- __xray_fdr_internal::processFunctionHook(
- FuncId, Entry, std::get<0>(TSC_CPU), std::get<1>(TSC_CPU), Arg,
- clock_gettime, *BQ);
+ __xray_fdr_internal::processFunctionHook(FuncId, Entry, std::get<0>(TSC_CPU),
+ std::get<1>(TSC_CPU), Arg,
+ clock_gettime, *BQ);
}
void fdrLoggingHandleCustomEvent(void *Event,
@@ -248,7 +248,7 @@
// - The metadata record we're going to write. (16 bytes)
// - The additional data we're going to write. Currently, that's the size of
// the event we're going to dump into the log as free-form bytes.
- if (!prepareBuffer(clock_gettime, MetadataRecSize + EventSize)) {
+ if (!prepareBuffer(TSC, CPU, clock_gettime, MetadataRecSize + EventSize)) {
TLD.LocalBQ = nullptr;
return;
}
Index: compiler-rt/trunk/lib/xray/xray_fdr_logging_impl.h
===================================================================
--- compiler-rt/trunk/lib/xray/xray_fdr_logging_impl.h
+++ compiler-rt/trunk/lib/xray/xray_fdr_logging_impl.h
@@ -532,7 +532,8 @@
return true;
}
-inline bool prepareBuffer(int (*wall_clock_reader)(clockid_t,
+inline bool prepareBuffer(uint64_t TSC, unsigned char CPU,
+ int (*wall_clock_reader)(clockid_t,
struct timespec *),
size_t MaxSize) XRAY_NEVER_INSTRUMENT {
auto &TLD = getThreadLocalData();
@@ -549,6 +550,9 @@
return false;
}
setupNewBuffer(wall_clock_reader);
+
+ // Always write the CPU metadata as the first record in the buffer.
+ writeNewCPUIdMetadata(CPU, TSC);
}
return true;
}
@@ -599,6 +603,9 @@
}
setupNewBuffer(wall_clock_reader);
+
+ // Always write the CPU metadata as the first record in the buffer.
+ writeNewCPUIdMetadata(CPU, TSC);
}
if (TLD.CurrentCPU == std::numeric_limits<uint16_t>::max()) {
@@ -728,7 +735,7 @@
// bytes in the end of the buffer, we need to write out the EOB, get a new
// Buffer, set it up properly before doing any further writing.
size_t MaxSize = FunctionRecSize + 2 * MetadataRecSize;
- if (!prepareBuffer(wall_clock_reader, MaxSize)) {
+ if (!prepareBuffer(TSC, CPU, wall_clock_reader, MaxSize)) {
TLD.LocalBQ = nullptr;
return;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38995.119282.patch
Type: text/x-patch
Size: 3267 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171017/5c6f05c4/attachment.bin>
More information about the llvm-commits
mailing list