mirror of
https://github.com/wolfpld/tracy.git
synced 2025-03-20 07:40:02 +08:00
Remove the 'payload' stuff now that we're just doing IO.
This unifies the android and other-linux code paths. The rationale for just doing IO now is as in the previous commit: we need the whole process to be run as root, so we don't need to isolate this particular IO in a separate `su -c` command anymore.
This commit is contained in:
parent
ff6537abff
commit
a9c391b9e3
@ -609,10 +609,6 @@ void SysTraceSendExternalName( uint64_t thread )
|
|||||||
# include "TracyRingBuffer.hpp"
|
# include "TracyRingBuffer.hpp"
|
||||||
# include "TracyThread.hpp"
|
# include "TracyThread.hpp"
|
||||||
|
|
||||||
# ifdef __ANDROID__
|
|
||||||
# include "TracySysTracePayload.hpp"
|
|
||||||
# endif
|
|
||||||
|
|
||||||
namespace tracy
|
namespace tracy
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -625,7 +621,6 @@ static const char SchedSwitch[] = "events/sched/sched_switch/enable";
|
|||||||
static const char SchedWakeup[] = "events/sched/sched_wakeup/enable";
|
static const char SchedWakeup[] = "events/sched/sched_wakeup/enable";
|
||||||
static const char BufferSizeKb[] = "buffer_size_kb";
|
static const char BufferSizeKb[] = "buffer_size_kb";
|
||||||
static const char TracePipe[] = "trace_pipe";
|
static const char TracePipe[] = "trace_pipe";
|
||||||
static const char PayloadPath[] = "/data/tracy_systrace";
|
|
||||||
|
|
||||||
static std::atomic<bool> traceActive { false };
|
static std::atomic<bool> traceActive { false };
|
||||||
static Thread* s_threadSampling = nullptr;
|
static Thread* s_threadSampling = nullptr;
|
||||||
@ -846,36 +841,6 @@ static bool TraceWrite( const char* path, size_t psz, const char* val, size_t vs
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
|
||||||
// The whole idea of the payload in a separate on-disk binary seems to have
|
|
||||||
// been motivated by the need to run that code as root. However, on current
|
|
||||||
// versions of Android, it now seems necessary to run all of the sampling
|
|
||||||
// code as root anyway, which in practice means running the whole workload
|
|
||||||
// as root. It may thus be possible to drop all this and simply run the
|
|
||||||
// payload as part of our process.
|
|
||||||
void SysTraceInjectPayload()
|
|
||||||
{
|
|
||||||
#if defined __aarch64__
|
|
||||||
const auto* payload_data = tracy_systrace_aarch64_data;
|
|
||||||
int payload_size = tracy_systrace_aarch64_size;
|
|
||||||
#elif defined __ARM_ARCH
|
|
||||||
const auto* payload_data = tracy_systrace_armv7_data;
|
|
||||||
int payload_size = tracy_systrace_armv7_size;
|
|
||||||
#else
|
|
||||||
#error No payload for target CPU architecture
|
|
||||||
#endif
|
|
||||||
int fd = open(PayloadPath, O_CREAT | O_TRUNC | O_WRONLY, S_IRWXU);
|
|
||||||
if (fd == -1) {
|
|
||||||
TRACY_LOG_ERROR_ERRNO_FMT("failed to open %s for write", PayloadPath);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!WriteBufferToFd(fd, payload_data, payload_size)) {
|
|
||||||
TRACY_LOG_ERROR_ERRNO_FMT("failed to write to %s", PayloadPath);
|
|
||||||
}
|
|
||||||
close(fd);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool SysTraceStart( int64_t& samplingPeriod )
|
bool SysTraceStart( int64_t& samplingPeriod )
|
||||||
{
|
{
|
||||||
#ifndef CLOCK_MONOTONIC_RAW
|
#ifndef CLOCK_MONOTONIC_RAW
|
||||||
@ -897,10 +862,6 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
|||||||
if( !TraceWrite( SchedWakeup, sizeof( SchedWakeup ), "1", 2 ) ) return false;
|
if( !TraceWrite( SchedWakeup, sizeof( SchedWakeup ), "1", 2 ) ) return false;
|
||||||
if( !TraceWrite( BufferSizeKb, sizeof( BufferSizeKb ), "4096", 5 ) ) return false;
|
if( !TraceWrite( BufferSizeKb, sizeof( BufferSizeKb ), "4096", 5 ) ) return false;
|
||||||
|
|
||||||
#if defined __ANDROID__ && ( defined __aarch64__ || defined __ARM_ARCH )
|
|
||||||
SysTraceInjectPayload();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( !TraceWrite( TracingOn, sizeof( TracingOn ), "1", 2 ) ) return false;
|
if( !TraceWrite( TracingOn, sizeof( TracingOn ), "1", 2 ) ) return false;
|
||||||
traceActive.store( true, std::memory_order_relaxed );
|
traceActive.store( true, std::memory_order_relaxed );
|
||||||
|
|
||||||
@ -1157,46 +1118,8 @@ static void ProcessTraceLines( int fd )
|
|||||||
tracy_free( buf );
|
tracy_free( buf );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SysTraceWorker( void* ptr )
|
|
||||||
{
|
|
||||||
ThreadExitHandler threadExitHandler;
|
|
||||||
SetThreadName( "Tracy SysTrace" );
|
|
||||||
int pipefd[2];
|
|
||||||
if( pipe( pipefd ) == 0 )
|
|
||||||
{
|
|
||||||
const auto pid = fork();
|
|
||||||
if( pid == 0 )
|
|
||||||
{
|
|
||||||
// child
|
|
||||||
close( pipefd[0] );
|
|
||||||
dup2( pipefd[1], STDERR_FILENO );
|
|
||||||
if( dup2( pipefd[1], STDOUT_FILENO ) >= 0 )
|
|
||||||
{
|
|
||||||
close( pipefd[1] );
|
|
||||||
sched_param sp = { 4 };
|
|
||||||
pthread_setschedparam( pthread_self(), SCHED_FIFO, &sp );
|
|
||||||
#if defined __ANDROID__ && ( defined __aarch64__ || defined __ARM_ARCH )
|
|
||||||
if (execl( PayloadPath, PayloadPath, nullptr ) == -1) {
|
|
||||||
TRACY_LOG_ERROR_ERRNO_FMT("failed to exec %s", PayloadPath);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
execlp( "cat", "cat", "/sys/kernel/debug/tracing/trace_pipe", (char*)nullptr );
|
|
||||||
#endif
|
|
||||||
exit( 1 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( pid > 0 )
|
|
||||||
{
|
|
||||||
// parent
|
|
||||||
close( pipefd[1] );
|
|
||||||
sched_param sp = { 5 };
|
|
||||||
pthread_setschedparam( pthread_self(), SCHED_FIFO, &sp );
|
|
||||||
ProcessTraceLines( pipefd[0] );
|
|
||||||
close( pipefd[0] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static void ProcessTraceLines( int fd )
|
static void ProcessTraceLines( int fd )
|
||||||
{
|
{
|
||||||
char* buf = (char*)tracy_malloc( 64*1024 );
|
char* buf = (char*)tracy_malloc( 64*1024 );
|
||||||
@ -1235,6 +1158,7 @@ static void ProcessTraceLines( int fd )
|
|||||||
|
|
||||||
tracy_free( buf );
|
tracy_free( buf );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void SysTraceWorker( void* ptr )
|
void SysTraceWorker( void* ptr )
|
||||||
{
|
{
|
||||||
@ -1245,13 +1169,15 @@ void SysTraceWorker( void* ptr )
|
|||||||
memcpy( tmp + sizeof( BasePath ) - 1, TracePipe, sizeof( TracePipe ) );
|
memcpy( tmp + sizeof( BasePath ) - 1, TracePipe, sizeof( TracePipe ) );
|
||||||
|
|
||||||
int fd = open( tmp, O_RDONLY );
|
int fd = open( tmp, O_RDONLY );
|
||||||
if( fd < 0 ) return;
|
if( fd < 0 ) {
|
||||||
|
TRACY_LOG_ERROR_ERRNO_FMT("failed to open %s for read", tmp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
sched_param sp = { 5 };
|
sched_param sp = { 5 };
|
||||||
pthread_setschedparam( pthread_self(), SCHED_FIFO, &sp );
|
pthread_setschedparam( pthread_self(), SCHED_FIFO, &sp );
|
||||||
ProcessTraceLines( fd );
|
ProcessTraceLines( fd );
|
||||||
close( fd );
|
close( fd );
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void SysTraceSendExternalName( uint64_t thread )
|
void SysTraceSendExternalName( uint64_t thread )
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,80 +0,0 @@
|
|||||||
// File: '/home/wolf/desktop/tracy_systrace.armv7' (1210 bytes)`
|
|
||||||
// File: '/home/wolf/desktop/tracy_systrace.aarch64' (1650 bytes)
|
|
||||||
|
|
||||||
// Exported using binary_to_compressed_c.cpp
|
|
||||||
|
|
||||||
namespace tracy
|
|
||||||
{
|
|
||||||
|
|
||||||
static const unsigned int tracy_systrace_armv7_size = 1210;
|
|
||||||
static const unsigned int tracy_systrace_armv7_data[1212/4] =
|
|
||||||
{
|
|
||||||
0x464c457f, 0x00010101, 0x00000000, 0x00000000, 0x00280003, 0x00000001, 0x00000208, 0x00000034, 0x00000000, 0x05000200, 0x00200034, 0x00280007,
|
|
||||||
0x00000000, 0x00000006, 0x00000034, 0x00000034, 0x00000034, 0x000000e0, 0x000000e0, 0x00000004, 0x00000004, 0x00000003, 0x00000114, 0x00000114,
|
|
||||||
0x00000114, 0x00000013, 0x00000013, 0x00000004, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x000003ed, 0x000003ed, 0x00000005,
|
|
||||||
0x00001000, 0x00000001, 0x000003ed, 0x000013ed, 0x000013ed, 0x000000cd, 0x000000cf, 0x00000006, 0x00001000, 0x00000002, 0x000003f0, 0x000013f0,
|
|
||||||
0x000013f0, 0x000000b8, 0x000000b8, 0x00000006, 0x00000004, 0x6474e551, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
|
|
||||||
0x00000010, 0x70000001, 0x00000394, 0x00000394, 0x00000394, 0x00000008, 0x00000008, 0x00000004, 0x00000004, 0x7379732f, 0x2f6d6574, 0x2f6e6962,
|
|
||||||
0x6b6e696c, 0x00007265, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000012, 0x00000016, 0x00000000,
|
|
||||||
0x00000000, 0x00000012, 0x6f6c6400, 0x006e6570, 0x4342494c, 0x62696c00, 0x732e6c64, 0x6c64006f, 0x006d7973, 0x00000001, 0x00000003, 0x00000001,
|
|
||||||
0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000003, 0x00000002, 0x00000000, 0x00000000, 0x00000001, 0x00020000, 0x00000002, 0x00010001,
|
|
||||||
0x0000000d, 0x00000010, 0x00000000, 0x00050d63, 0x00020000, 0x00000008, 0x00000000, 0x000014b4, 0x00000116, 0x000014b8, 0x00000216, 0xe52de004,
|
|
||||||
0xe59fe004, 0xe08fe00e, 0xe5bef008, 0x000012bc, 0xe28fc600, 0xe28cca01, 0xe5bcf2bc, 0xe28fc600, 0xe28cca01, 0xe5bcf2b4, 0xe92d4ff0, 0xe28db01c,
|
|
||||||
0xe24dd01c, 0xe24dd801, 0xe59f0154, 0xe3a01001, 0xe08f0000, 0xebfffff1, 0xe59f1148, 0xe1a07000, 0xe08f1001, 0xebfffff0, 0xe59f113c, 0xe1a09000,
|
|
||||||
0xe1a00007, 0xe08f1001, 0xebffffeb, 0xe59f112c, 0xe1a04000, 0xe1a00007, 0xe08f1001, 0xebffffe6, 0xe59f111c, 0xe1a05000, 0xe1a00007, 0xe08f1001,
|
|
||||||
0xebffffe1, 0xe59f110c, 0xe1a06000, 0xe1a00007, 0xe08f1001, 0xebffffdc, 0xe58d0004, 0xe1a00007, 0xe59f10f4, 0xe08f1001, 0xebffffd7, 0xe1a0a000,
|
|
||||||
0xe59f00e8, 0xe3a01000, 0xe3a08000, 0xe08f0000, 0xe12fff39, 0xe1a07000, 0xe3700001, 0xca000001, 0xe3a00000, 0xe12fff34, 0xe3a00009, 0xe58d4000,
|
|
||||||
0xe1cd01b4, 0xe3090680, 0xe3400098, 0xe28d4010, 0xe58d000c, 0xe28d9018, 0xe58d8008, 0xe28d8008, 0xe58d7010, 0xea000003, 0xe1a02000, 0xe3a00001,
|
|
||||||
0xe1a01009, 0xe12fff3a, 0xe1a00004, 0xe3a01001, 0xe3a02000, 0xe12fff35, 0xe3500000, 0xca000008, 0xe1a00008, 0xe3a01000, 0xe12fff36, 0xe1a00004,
|
|
||||||
0xe3a01001, 0xe3a02000, 0xe12fff35, 0xe3500001, 0xbafffff6, 0xe59d3004, 0xe1a00007, 0xe1a01009, 0xe3a02801, 0xe12fff33, 0xe3500001, 0xaaffffe5,
|
|
||||||
0xe59d1000, 0xe3a00000, 0xe12fff31, 0xe24bd01c, 0xe8bd8ff0, 0x00000174, 0x0000016c, 0x0000015d, 0x0000014e, 0x0000013f, 0x00000135, 0x00000126,
|
|
||||||
0x00000114, 0x7ffffe74, 0x00000001, 0x6362696c, 0x006f732e, 0x6e65706f, 0x69786500, 0x6f700074, 0x6e006c6c, 0x736f6e61, 0x7065656c, 0x61657200,
|
|
||||||
0x72770064, 0x00657469, 0x7379732f, 0x72656b2f, 0x2f6c656e, 0x75626564, 0x72742f67, 0x6e696361, 0x72742f67, 0x5f656361, 0x65706970, 0x00000000,
|
|
||||||
0x00000003, 0x000014a8, 0x00000002, 0x00000010, 0x00000017, 0x000001cc, 0x00000014, 0x00000011, 0x00000015, 0x00000000, 0x00000006, 0x00000128,
|
|
||||||
0x0000000b, 0x00000010, 0x00000005, 0x00000158, 0x0000000a, 0x0000001c, 0x6ffffef5, 0x00000174, 0x00000004, 0x0000018c, 0x00000001, 0x0000000d,
|
|
||||||
0x0000001e, 0x00000008, 0x6ffffffb, 0x00000001, 0x6ffffff0, 0x000001a4, 0x6ffffffe, 0x000001ac, 0x6fffffff, 0x00000001, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x000001dc, 0x000001dc,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const unsigned int tracy_systrace_aarch64_size = 1650;
|
|
||||||
static const unsigned int tracy_systrace_aarch64_data[1652/4] =
|
|
||||||
{
|
|
||||||
0x464c457f, 0x00010102, 0x00000000, 0x00000000, 0x00b70003, 0x00000001, 0x00000300, 0x00000000, 0x00000040, 0x00000000, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00380040, 0x00400006, 0x00000000, 0x00000006, 0x00000005, 0x00000040, 0x00000000, 0x00000040, 0x00000000, 0x00000040, 0x00000000,
|
|
||||||
0x00000150, 0x00000000, 0x00000150, 0x00000000, 0x00000008, 0x00000000, 0x00000003, 0x00000004, 0x00000190, 0x00000000, 0x00000190, 0x00000000,
|
|
||||||
0x00000190, 0x00000000, 0x00000015, 0x00000000, 0x00000015, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000005, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000004d1, 0x00000000, 0x000004d1, 0x00000000, 0x00010000, 0x00000000, 0x00000001, 0x00000006,
|
|
||||||
0x000004d8, 0x00000000, 0x000104d8, 0x00000000, 0x000104d8, 0x00000000, 0x0000019a, 0x00000000, 0x000001a0, 0x00000000, 0x00010000, 0x00000000,
|
|
||||||
0x00000002, 0x00000006, 0x000004d8, 0x00000000, 0x000104d8, 0x00000000, 0x000104d8, 0x00000000, 0x00000170, 0x00000000, 0x00000170, 0x00000000,
|
|
||||||
0x00000008, 0x00000000, 0x6474e551, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x7379732f, 0x2f6d6574, 0x2f6e6962, 0x6b6e696c, 0x34367265, 0x00000000, 0x00000001, 0x00000004,
|
|
||||||
0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000a0003, 0x00000300, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x0000000a, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000011, 0x00000012, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x62696c00, 0x732e6c64, 0x6c64006f, 0x6e65706f, 0x736c6400, 0x4c006d79, 0x00434249, 0x00000000, 0x00020002, 0x00000000,
|
|
||||||
0x00010001, 0x00000001, 0x00000010, 0x00000000, 0x00050d63, 0x00020000, 0x00000017, 0x00000000, 0x00010668, 0x00000000, 0x00000402, 0x00000002,
|
|
||||||
0x00000000, 0x00000000, 0x00010670, 0x00000000, 0x00000402, 0x00000003, 0x00000000, 0x00000000, 0xa9bf7bf0, 0x90000090, 0xf9433211, 0x91198210,
|
|
||||||
0xd61f0220, 0xd503201f, 0xd503201f, 0xd503201f, 0x90000090, 0xf9433611, 0x9119a210, 0xd61f0220, 0x90000090, 0xf9433a11, 0x9119c210, 0xd61f0220,
|
|
||||||
0xf81b0ffc, 0xa9015ff8, 0xa90257f6, 0xa9034ff4, 0xa9047bfd, 0x910103fd, 0xd14043ff, 0xd10043ff, 0x90000000, 0x91120000, 0x320003e1, 0x97ffffed,
|
|
||||||
0x90000001, 0x91122021, 0xaa0003f7, 0x97ffffed, 0x90000001, 0xaa0003f8, 0x91123421, 0xaa1703e0, 0x97ffffe8, 0x90000001, 0xaa0003f3, 0x91124821,
|
|
||||||
0xaa1703e0, 0x97ffffe3, 0x90000001, 0xaa0003f4, 0x91125c21, 0xaa1703e0, 0x97ffffde, 0x90000001, 0xaa0003f5, 0x91128421, 0xaa1703e0, 0x97ffffd9,
|
|
||||||
0x90000001, 0xaa0003f6, 0x91129821, 0xaa1703e0, 0x97ffffd4, 0xaa0003f7, 0x90000000, 0x9112b000, 0x2a1f03e1, 0xd63f0300, 0x2a0003f8, 0x36f80060,
|
|
||||||
0x2a1f03e0, 0xd63f0260, 0x90000008, 0x3dc11d00, 0x52800128, 0xb81c83b8, 0x781cc3a8, 0x3d8003e0, 0x14000005, 0x93407c02, 0x320003e0, 0x910043e1,
|
|
||||||
0xd63f02e0, 0xd100e3a0, 0x320003e1, 0x2a1f03e2, 0xd63f0280, 0x7100001f, 0x5400014c, 0x910003e0, 0xaa1f03e1, 0xd63f02a0, 0xd100e3a0, 0x320003e1,
|
|
||||||
0x2a1f03e2, 0xd63f0280, 0x7100041f, 0x54ffff0b, 0x910043e1, 0x321003e2, 0x2a1803e0, 0xd63f02c0, 0x7100041f, 0x54fffd0a, 0x2a1f03e0, 0xd63f0260,
|
|
||||||
0x914043ff, 0x910043ff, 0xa9447bfd, 0xa9434ff4, 0xa94257f6, 0xa9415ff8, 0xf84507fc, 0xd65f03c0, 0x00000000, 0x00000000, 0x00989680, 0x00000000,
|
|
||||||
0x6362696c, 0x006f732e, 0x6e65706f, 0x69786500, 0x6f700074, 0x6e006c6c, 0x736f6e61, 0x7065656c, 0x61657200, 0x72770064, 0x00657469, 0x7379732f,
|
|
||||||
0x72656b2f, 0x2f6c656e, 0x75626564, 0x72742f67, 0x6e696361, 0x72742f67, 0x5f656361, 0x65706970, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
|
|
||||||
0x00000001, 0x00000000, 0x00000004, 0x00000000, 0x000001a8, 0x00000000, 0x6ffffef5, 0x00000000, 0x000001c8, 0x00000000, 0x00000005, 0x00000000,
|
|
||||||
0x00000248, 0x00000000, 0x00000006, 0x00000000, 0x000001e8, 0x00000000, 0x0000000a, 0x00000000, 0x0000001c, 0x00000000, 0x0000000b, 0x00000000,
|
|
||||||
0x00000018, 0x00000000, 0x00000015, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00000000, 0x00010650, 0x00000000, 0x00000002, 0x00000000,
|
|
||||||
0x00000030, 0x00000000, 0x00000014, 0x00000000, 0x00000007, 0x00000000, 0x00000017, 0x00000000, 0x00000290, 0x00000000, 0x0000001e, 0x00000000,
|
|
||||||
0x00000008, 0x00000000, 0x6ffffffb, 0x00000000, 0x00000001, 0x00000000, 0x6ffffffe, 0x00000000, 0x00000270, 0x00000000, 0x6fffffff, 0x00000000,
|
|
||||||
0x00000001, 0x00000000, 0x6ffffff0, 0x00000000, 0x00000264, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000104d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
|
||||||
0x00000000, 0x00000000, 0x000002c0, 0x00000000, 0x000002c0,
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user