Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extra/systrace/tracy_systrace.c')
-rw-r--r--extra/systrace/tracy_systrace.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/extra/systrace/tracy_systrace.c b/extra/systrace/tracy_systrace.c
new file mode 100644
index 00000000..3ecc0f4d
--- /dev/null
+++ b/extra/systrace/tracy_systrace.c
@@ -0,0 +1,36 @@
+#include <fcntl.h>
+#include <poll.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+enum { BufSize = 64*1024 };
+
+int main()
+{
+ char buf[BufSize];
+
+ int kernelFd = open( "/sys/kernel/debug/tracing/trace_pipe", O_RDONLY );
+ if( kernelFd == -1 ) return -1;
+
+ struct pollfd pfd;
+ pfd.fd = kernelFd;
+ pfd.events = POLLIN | POLLERR;
+
+ struct timespec sleepTime;
+ sleepTime.tv_sec = 0;
+ sleepTime.tv_nsec = 1000 * 1000 * 10;
+
+ for(;;)
+ {
+ while( poll( &pfd, 1, 0 ) <= 0 ) nanosleep( &sleepTime, NULL );
+ const int rd = read( kernelFd, buf, BufSize );
+ if( rd <= 0 ) break;
+ write( STDOUT_FILENO, buf, rd );
+ }
+
+ close( kernelFd );
+ return 0;
+}