blob: 56b7df4933d9bb10e8d75ff68ba487d28e2cb5ce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <fcntl.h>
#include <poll.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
enum { BufSize = 64*1024 };
void _start()
{
char buf[BufSize];
int kernelFd = open( "/sys/kernel/debug/tracing/trace_pipe", O_RDONLY );
if( kernelFd < 0 ) exit( 0 );
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 );
}
exit( 0 );
}
|