VirtualBox

Changeset 71492 in vbox


Ignore:
Timestamp:
Mar 24, 2018 10:23:10 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
121464
Message:

Runtime: Introduce RTTraceLog* API for creating and parsing binary trace log files. The format and API is designed with the

following goals in mind:

  1. Allow streaming the data via network or write it to a file.
  2. Embed the structure of the traced data into the log allowing arbitrary structured data to be embedded without requiring adaptions on the parsing side.
  3. Allow grouping of traced data belonging together to easily follow chains of events later on.
  4. Trace events can have a parent assigned to check where an event originally originated from.
  5. Low overhead on the creation side.

The current state implements the absolute basics on the creation and parsing side and is work in progress. This will
be used later on in the device emulation fuzzer to capture device and examine device states and changes.

Location:
trunk
Files:
6 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/mangling.h

    r71127 r71492  
    23682368# define RTTraceBufRetain                               RT_MANGLER(RTTraceBufRetain)
    23692369# define RTTraceGetDefaultBuf                           RT_MANGLER(RTTraceGetDefaultBuf)
     2370# define RTTraceLogRdrCreate                            RT_MANGLER(RTTraceLogRdrCreate)
     2371# define RTTraceLogRdrCreateFromFile                    RT_MANGLER(RTTraceLogRdrCreateFromFile)
     2372# define RTTraceLogRdrDestroy                           RT_MANGLER(RTTraceLogRdrDestroy)
     2373# define RTTraceLogRdrEvtFillVals                       RT_MANGLER(RTTraceLogRdrEvtFillVals)
     2374# define RTTraceLogRdrEvtGetDesc                        RT_MANGLER(RTTraceLogRdrEvtGetDesc)
     2375# define RTTraceLogRdrEvtGetSeqNo                       RT_MANGLER(RTTraceLogRdrEvtGetSeqNo)
     2376# define RTTraceLogRdrEvtGetTs                          RT_MANGLER(RTTraceLogRdrEvtGetTs)
     2377# define RTTraceLogRdrEvtIsGrouped                      RT_MANGLER(RTTraceLogRdrEvtIsGrouped)
     2378# define RTTraceLogRdrEvtPoll                           RT_MANGLER(RTTraceLogRdrEvtPoll)
     2379# define RTTraceLogRdrEvtQueryVal                       RT_MANGLER(RTTraceLogRdrEvtQueryVal)
     2380# define RTTraceLogRdrIteratorFree                      RT_MANGLER(RTTraceLogRdrIteratorFree)
     2381# define RTTraceLogRdrIteratorNext                      RT_MANGLER(RTTraceLogRdrIteratorNext)
     2382# define RTTraceLogRdrIteratorQueryEvent                RT_MANGLER(RTTraceLogRdrIteratorQueryEvent)
     2383# define RTTraceLogRdrQueryIterator                     RT_MANGLER(RTTraceLogRdrQueryIterator)
     2384# define RTTraceLogRdrQueryLastEvt                      RT_MANGLER(RTTraceLogRdrQueryLastEvt)
     2385# define RTTraceLogWrAddEvtDesc                         RT_MANGLER(RTTraceLogWrAddEvtDesc)
     2386# define RTTraceLogWrCreate                             RT_MANGLER(RTTraceLogWrCreate)
     2387# define RTTraceLogWrCreateFile                         RT_MANGLER(RTTraceLogWrCreateFile)
     2388# define RTTraceLogWrCreateTcpClient                    RT_MANGLER(RTTraceLogWrCreateTcpClient)
     2389# define RTTraceLogWrCreateTcpServer                    RT_MANGLER(RTTraceLogWrCreateTcpServer)
     2390# define RTTraceLogWrDestroy                            RT_MANGLER(RTTraceLogWrDestroy)
     2391# define RTTraceLogWrEvtAdd                             RT_MANGLER(RTTraceLogWrEvtAdd)
     2392# define RTTraceLogWrEvtAddSg                           RT_MANGLER(RTTraceLogWrEvtAddSg)
    23702393# define RTTraceSetDefaultBuf                           RT_MANGLER(RTTraceSetDefaultBuf)
    23712394# define RTUdpCreateClientSocket                        RT_MANGLER(RTUdpCreateClientSocket)
  • trunk/src/VBox/Runtime/Makefile.kmk

    r70917 r71492  
    451451        common/log/tracebuf.cpp \
    452452        common/log/tracedefault.cpp \
     453        common/log/tracelogreader.cpp \
     454        common/log/tracelogwriter.cpp \
    453455        common/math/bignum.cpp \
    454456        common/misc/RTAssertMsg1Weak.cpp \
  • trunk/src/VBox/Runtime/include/internal/magics.h

    r69893 r71492  
    55
    66/*
    7  * Copyright (C) 2007-2017 Oracle Corporation
     7 * Copyright (C) 2007-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    217217/** Magic value of RTTRACEBUFINT::u32Magic after the final release. */
    218218#define RTTRACEBUF_MAGIC_DEAD           UINT32_C(0x19500121)
     219/** The value of RTTRACELOGRDRINT::u32Magic. (John Michael Scalzi) */
     220#define RTTRACELOGRDR_MAGIC             UINT32_C(0x19690510)
     221/** The value of RTTRACELOGRDRINT::u32Magic after RTTraceLogRdrDestroy(). */
     222#define RTTRACELOGRDR_MAGIC_DEAD        (~RTTRACELOGRDR_MAGIC)
     223/** The value of RTTRACELOGWRINT::u32Magic. (Herbert George Wells) */
     224#define RTTRACELOGWR_MAGIC              UINT32_C(0x18660921)
     225/** The value of RTTRACELOGWRINT::u32Magic after RTTraceLogWrDestroy(). */
     226#define RTTRACELOGWR_MAGIC_DEAD         UINT32_C(0x19460813)
    219227/** The value of RTVFSOBJINTERNAL::u32Magic. (Yasunari Kawabata) */
    220228#define RTVFSOBJ_MAGIC                  UINT32_C(0x18990614)
  • trunk/src/VBox/Runtime/testcase/Makefile.kmk

    r69643 r71492  
    135135        tstRTThreadExecutionTime \
    136136        tstRTTime \
     137        tstRTTraceLog \
    137138        tstTime-2 \
    138139        tstTime-3 \
     
    661662tstRTTime_SOURCES = tstRTTime.cpp
    662663
     664tstRTTraceLog_TEMPLATE = VBOXR3TSTEXE
     665tstRTTraceLog_SOURCES = tstRTTraceLog.cpp
     666
    663667tstTime-2_TEMPLATE = VBOXR3TSTEXE
    664668tstTime-2_SOURCES = tstTime-2.cpp
  • trunk/src/VBox/Runtime/tools/Makefile.kmk

    r70397 r71492  
    179179 RTSignTool_LIBS = $(PATH_STAGE_LIB)/SUPR3$(VBOX_SUFF_LIB)
    180180
     181 # RTTraceLogTool - Trace log collection and dissection tool.
     182 PROGRAMS += RTTraceLogTool
     183 RTTraceLogTool_TEMPLATE = VBoxR3Tool
     184 RTTraceLogTool_SOURCES = RTTraceLogTool.cpp
     185
    181186 if1of ($(KBUILD_TARGET), darwin linux solaris win)
    182187  # RTKrnlModInfo - our lsmod/kextstat clone (for testing the RTKrnlMod code).
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette