VirtualBox

Changeset 58920 in vbox


Ignore:
Timestamp:
Nov 30, 2015 2:10:59 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
104422
Message:

VBoxTpG,SupDrv: Added a per provider enabled probe counter: VTGDESCPROVIDER::cProbesEnabled, <PROVIDER>_ANY_PROBES_ENABLED()

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/VBoxTpG.h

    r58106 r58920  
    305305    VTGDESCATTR     AttrArguments;
    306306    uint8_t         bReserved;
     307    uint32_t        cProbesEnabled;
    307308} VTGDESCPROVIDER;
     309AssertCompileSize(VTGDESCPROVIDER, 28);
    308310/** Pointer to a VTG provider descriptor. */
    309311typedef VTGDESCPROVIDER    *PVTGDESCPROVIDER;
     
    412414
    413415/** The current VTGOBJHDR::szMagic value. */
    414 #define VTGOBJHDR_MAGIC     "VTG Object Header v1.5\0"
     416#define VTGOBJHDR_MAGIC     "VTG Object Header v1.6\0"
    415417
    416418/** The name of the VTG data object header symbol in the object file. */
  • trunk/src/VBox/ExtPacks/VBoxDTrace/VBoxDTraceR0.cpp

    r57358 r58920  
    15121512                pProbeLocEn->fEnabled = 1;
    15131513                ASMAtomicIncU32(&pProv->pacProbeEnabled[idxProbe]);
     1514                ASMAtomicIncU32(&pProv->pDesc->cProbesEnabled);
    15141515            }
    15151516        }
     
    15211522                pProv->paR0ProbeLocs[idxProbeLoc].fEnabled = 1;
    15221523                ASMAtomicIncU32(&pProv->paR0Probes[idxProbe].cEnabled);
     1524                ASMAtomicIncU32(&pProv->pDesc->cProbesEnabled);
    15231525            }
    15241526
     
    15571559                pProbeLocEn->fEnabled = 0;
    15581560                ASMAtomicDecU32(&pProv->pacProbeEnabled[idxProbe]);
     1561                ASMAtomicDecU32(&pProv->pDesc->cProbesEnabled);
    15591562            }
    15601563        }
     
    15661569                pProv->paR0ProbeLocs[idxProbeLoc].fEnabled = 0;
    15671570                ASMAtomicDecU32(&pProv->paR0Probes[idxProbe].cEnabled);
     1571                ASMAtomicDecU32(&pProv->pDesc->cProbesEnabled);
    15681572            }
    15691573
  • trunk/src/VBox/HostDrivers/Support/SUPDrv-dtrace.cpp

    r58340 r58920  
    451451                pProbeLocEn->fEnabled = 1;
    452452                ASMAtomicIncU32(&pProv->pacProbeEnabled[idxProbe]);
     453                ASMAtomicIncU32(&pProv->pDesc->cProbesEnabled);
    453454            }
    454455        }
     
    460461                pProv->paR0ProbeLocs[idxProbeLoc].fEnabled = 1;
    461462                ASMAtomicIncU32(&pProv->paR0Probes[idxProbe].cEnabled);
     463                ASMAtomicIncU32(&pProv->pDesc->cProbesEnabled);
    462464            }
    463465
     
    496498                pProbeLocEn->fEnabled = 0;
    497499                ASMAtomicDecU32(&pProv->pacProbeEnabled[idxProbe]);
     500                ASMAtomicIncU32(&pProv->pDesc->cProbesEnabled);
    498501            }
    499502        }
     
    505508                pProv->paR0ProbeLocs[idxProbeLoc].fEnabled = 0;
    506509                ASMAtomicDecU32(&pProv->paR0Probes[idxProbe].cEnabled);
     510                ASMAtomicDecU32(&pProv->pDesc->cProbesEnabled);
    507511            }
    508512
  • trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h

    r58340 r58920  
    215215 *          - nothing.
    216216 */
    217 #define SUPDRV_IOC_VERSION                              0x00240000
     217#define SUPDRV_IOC_VERSION                              0x00250000
    218218
    219219/** SUP_IOCTL_COOKIE. */
  • trunk/src/VBox/HostDrivers/Support/SUPDrvTracer.cpp

    r58340 r58920  
    538538        MY_VALIDATE_ATTR(pProvider->AttrArguments);
    539539        MY_CHECK_RET(pProvider->bReserved == 0, VERR_SUPDRV_VTG_BAD_PROVIDER);
     540        MY_CHECK_RET(pProvider->cProbesEnabled == 0, VERR_SUPDRV_VTG_BAD_PROVIDER);
    540541    }
    541542
  • trunk/src/bldprogs/VBoxTpG.cpp

    r57353 r58920  
    533533                    "                ;0         1         2         3\n"
    534534                    "                ;012345678901234567890123456789012\n"
    535                     "    db          'VTG Object Header v1.5', 0, 0\n"
     535                    "    db          'VTG Object Header v1.6', 0, 0\n"
    536536                    "    dd          %u\n"
    537537                    "    dd          NAME(g_acVTGProbeEnabled_End) - NAME(g_VTGObjHeader)\n"
     
    738738                        "    db %d, %d, %d ; AttrArguments\n"
    739739                        "    db 0       ; reserved\n"
     740                        "VTG_GLOBAL g_cVTGProviderProbesEnabled_%s, data\n"
     741                        "    dd 0\n"
    740742                        ,
    741743                        iProvider, pProvider->pszName,
     
    747749                        pProvider->AttrFunctions.enmCode,   pProvider->AttrFunctions.enmData,   pProvider->AttrFunctions.enmDataDep,
    748750                        pProvider->AttrName.enmCode,        pProvider->AttrName.enmData,        pProvider->AttrName.enmDataDep,
    749                         pProvider->AttrArguments.enmCode,   pProvider->AttrArguments.enmData,   pProvider->AttrArguments.enmDataDep);
     751                        pProvider->AttrArguments.enmCode,   pProvider->AttrArguments.enmData,   pProvider->AttrArguments.enmDataDep,
     752                        pProvider->pszName);
    750753        iProvider++;
    751754    }
     
    909912
    910913
     914static RTEXITCODE generateProviderDefineName(char *pszBuf, size_t cbBuf, const char *pszProvider)
     915{
     916    size_t cbMax = strlen(pszProvider) + 1;
     917    if (cbMax > cbBuf || cbMax > 80)
     918        return RTMsgErrorExit(RTEXITCODE_FAILURE, "Provider '%s' ends up with a too long defined\n", pszProvider);
     919
     920    while (*pszProvider)
     921        *pszBuf++ = RT_C_TO_UPPER(*pszProvider++);
     922
     923    *pszBuf = '\0';
     924    return RTEXITCODE_SUCCESS;
     925}
     926
     927
    911928/**
    912929 * Called via generateFile to generate the header file.
     
    980997    RTListForEach(&g_ProviderHead, pProv, VTGPROVIDER, ListEntry)
    981998    {
     999        /* This macro is not available in ring-3 because we don't have
     1000           anything similar available for native dtrace. */
     1001        ScmStreamPrintf(pStrm, "\n\n");
     1002        if (g_fTypeContext != VTG_TYPE_CTX_R3)
     1003        {
     1004            generateProviderDefineName(szTmp, sizeof(szTmp), pProv->pszName);
     1005            ScmStreamPrintf(pStrm,
     1006                            "extern uint32_t        g_cVTGProviderProbesEnabled_%s;\n"
     1007                            "# define %s_ANY_PROBES_ENABLED() \\\n"
     1008                            "    (RT_UNLIKELY(g_cVTGProviderProbesEnabled_%s))\n"
     1009                            "\n",
     1010                            pProv->pszName,
     1011                            szTmp, pProv->pszName);
     1012        }
     1013
    9821014        RTListForEach(&pProv->ProbeHead, pProbe, VTGPROBE, ListEntry)
    9831015        {
     
    12861318}
    12871319
     1320
    12881321/**
    12891322 * Handles a C++ one line comment.
     
    12971330    return RTEXITCODE_SUCCESS;
    12981331}
     1332
    12991333
    13001334/**
Note: See TracChangeset for help on using the changeset viewer.

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