VirtualBox

Changeset 40763 in vbox


Ignore:
Timestamp:
Apr 4, 2012 2:40:09 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
77258
Message:

SUPR0VtgFireProbe -> SUPR0TracerFireProbe and other SUPDrv-tracer.cpp changes.

Location:
trunk
Files:
8 edited

Legend:

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

    r40761 r40763  
    12951295        /** Provider ID. */
    12961296        uintptr_t               idProvider;
    1297         /** The number of trace points. */
    1298         uint32_t volatile       cTracepoints;
     1297        /** The number of trace points provided. */
     1298        uint32_t volatile       cProvidedProbes;
     1299        /** Whether we've invalidated this bugger. */
     1300        bool                    fZombie;
    12991301    } DTrace;
    13001302} SUPDRVTRACERDATA;
     
    13151317    /** Pointer to the provider name (a copy that's always available). */
    13161318    const char                 *pszName;
     1319    /** Pointer to the module name. */
     1320    const char                 *pszModName;
    13171321} SUPDRVVDTPROVIDERCORE;
    13181322/** Pointer to a tracepoint provider core structure. */
     
    13251329typedef struct SUPDRVTRACERUSRCTX
    13261330{
     1331    /** The probe ID from the VTG location record.  */
     1332    uint32_t                idProbe;
     1333    /** 32 if X86, 64 if AMD64. */
     1334    uint8_t                 cBits;
     1335    /** Reserved padding. */
     1336    uint8_t                 abReserved[3];
     1337    /** Data which format is dictated by the cBits member. */
    13271338    union
    13281339    {
     
    13741385        } Amd64;
    13751386    } u;
    1376     /** 32 if X86, 64 if AMD64. */
    1377     uint8_t                 cBits;
    1378     /** Reserved padding. */
    1379     uint8_t                 abReserved[3];
    1380     /** The probe ID from the VTG location record.  */
    1381     uint32_t                idProbe;
    13821387} SUPDRVTRACERUSRCTX;
    13831388/** Pointer to the usermode probe context information. */
     
    14071412     * @param   uArg4           The fifth raw probe argument.
    14081413     *
    1409      * @remarks SUPR0VtgFireProbe will do a tail jump thru this member, so no extra
    1410      *          stack frames will be added.
     1414     * @remarks SUPR0TracerFireProbe will do a tail jump thru this member, so
     1415     *          no extra stack frames will be added.
    14111416     * @remarks This does not take a 'this' pointer argument because it doesn't map
    14121417     *          well onto VTG or DTrace.
    14131418     *
    14141419     */
    1415     DECLR0CALLBACKMEMBER(void, pfnFireKernelProbe, (struct VTGPROBELOC *pVtgProbeLoc, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
     1420    DECLR0CALLBACKMEMBER(void, pfnProbeFireKernel, (struct VTGPROBELOC *pVtgProbeLoc, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
    14161421                                                    uintptr_t uArg3, uintptr_t uArg4));
    14171422
     
    14221427     *
    14231428     * @param   pVtgProbeLoc    The probe location record.
     1429     * @param   pSession        The user session.
    14241430     * @param   pCtx            The usermode context info.
    14251431     */
    1426     DECLR0CALLBACKMEMBER(void, pfnFireUserProbe, (PCSUPDRVTRACERREG pThis, PCSUPDRVTRACERUSRCTX pCtx));
     1432    DECLR0CALLBACKMEMBER(void, pfnProbeFireUser, (PCSUPDRVTRACERREG pThis, PSUPDRVSESSION pSession, PCSUPDRVTRACERUSRCTX pCtx));
    14271433
    14281434    /**
     
    14381444     *                          set to a non-zero value on success.
    14391445     */
    1440     DECLR0CALLBACKMEMBER(int,   pfnOpenTracer, (PCSUPDRVTRACERREG pThis, PSUPDRVSESSION pSession, uint32_t uCookie, uintptr_t uArg,
     1446    DECLR0CALLBACKMEMBER(int,   pfnTracerOpen, (PCSUPDRVTRACERREG pThis, PSUPDRVSESSION pSession, uint32_t uCookie, uintptr_t uArg,
    14411447                                                uintptr_t *puSessionData));
    14421448
     
    14531459     * @param   piRetVal        The tracer specific return value.
    14541460     */
    1455     DECLR0CALLBACKMEMBER(int,   pfnIoctl, (PCSUPDRVTRACERREG pThis, PSUPDRVSESSION pSession, uintptr_t uSessionData,
    1456                                            uintptr_t uCmd, uintptr_t uArg, int32_t *piRetVal));
     1461    DECLR0CALLBACKMEMBER(int,   pfnTracerIoCtl, (PCSUPDRVTRACERREG pThis, PSUPDRVSESSION pSession, uintptr_t uSessionData,
     1462                                                 uintptr_t uCmd, uintptr_t uArg, int32_t *piRetVal));
    14571463
    14581464    /**
     
    14631469     * @param   uSessionData    The data assoicated with the session.
    14641470     */
    1465     DECLR0CALLBACKMEMBER(void,  pfnCloseTrace, (PCSUPDRVTRACERREG pThis, PSUPDRVSESSION pSession, uintptr_t uSessionData));
     1471    DECLR0CALLBACKMEMBER(void,  pfnTracerClose, (PCSUPDRVTRACERREG pThis, PSUPDRVSESSION pSession, uintptr_t uSessionData));
    14661472
    14671473    /**
     
    14711477     * @param   pThis           Pointer to the registration record.
    14721478     * @param   pCore           The provider core data.
     1479     *
     1480     * @todo Kernel vs. Userland providers.
    14731481     */
    1474     DECLR0CALLBACKMEMBER(int,   pfnRegisterProvider, (PCSUPDRVTRACERREG pThis, PSUPDRVVDTPROVIDERCORE pCore));
     1482    DECLR0CALLBACKMEMBER(int,   pfnProviderRegister, (PCSUPDRVTRACERREG pThis, PSUPDRVVDTPROVIDERCORE pCore));
    14751483
    14761484    /**
     
    14841492     * @param   pCore           The provider core data.
    14851493     */
    1486     DECLR0CALLBACKMEMBER(int,   pfnDeregisterProvider, (PCSUPDRVTRACERREG pThis, PSUPDRVVDTPROVIDERCORE pCore));
     1494    DECLR0CALLBACKMEMBER(int,   pfnProviderDeregister, (PCSUPDRVTRACERREG pThis, PSUPDRVVDTPROVIDERCORE pCore));
    14871495
    14881496    /**
     
    14931501     * @param   pCore           The provider core data.
    14941502     */
    1495     DECLR0CALLBACKMEMBER(int,   pfnDeregisterZombieProvider, (PCSUPDRVTRACERREG pThis, PSUPDRVVDTPROVIDERCORE pCore));
     1503    DECLR0CALLBACKMEMBER(int,   pfnProviderDeregisterZombie, (PCSUPDRVTRACERREG pThis, PSUPDRVVDTPROVIDERCORE pCore));
    14961504
    14971505    /** End marker (SUPDRVTRACERREG_MAGIC). */
     
    15221530#define SUPDRVTRACERHLP_VERSION RT_MAKE_U32(0, 1)
    15231531
    1524 SUPR0DECL(int)  SUPR0VtgRegisterDrv(PSUPDRVSESSION pSession, struct VTGOBJHDR *pVtgHdr, const char *pszName);
    1525 SUPR0DECL(void) SUPR0VtgDeregisterDrv(PSUPDRVSESSION pSession);
    1526 SUPR0DECL(void) SUPR0VtgFireProbe(uint32_t idProbe, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
    1527                                   uintptr_t uArg3, uintptr_t uArg4);
    1528 SUPR0DECL(int)  SUPR0VtgRegisterModule(void *hMod, struct VTGOBJHDR *pVtgHdr);
     1532SUPR0DECL(int)  SUPR0TracerRegisterImpl(void *hMod, PSUPDRVSESSION pSession, PCSUPDRVTRACERREG pReg, PCSUPDRVTRACERHLP *ppHlp);
     1533SUPR0DECL(int)  SUPR0TracerDeregisterImpl(PSUPDRVSESSION pSession);
     1534SUPR0DECL(int)  SUPR0TracerRegisterDrv(PSUPDRVSESSION pSession, struct VTGOBJHDR *pVtgHdr, const char *pszName);
     1535SUPR0DECL(void) SUPR0TracerDeregisterDrv(PSUPDRVSESSION pSession);
     1536SUPR0DECL(int)  SUPR0TracerRegisterModule(void *hMod, struct VTGOBJHDR *pVtgHdr);
     1537SUPR0DECL(void) SUPR0TracerFireProbe(uint32_t idProbe, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
     1538                                     uintptr_t uArg3, uintptr_t uArg4);
    15291539/** @}  */
    15301540
  • trunk/src/VBox/HostDrivers/Support/SUPDrv-dtrace.cpp

    r40756 r40763  
    2525 */
    2626
     27/** @todo Convert this to a generic tracer implementation. */
    2728
    2829/*******************************************************************************
     
    596597 * @param   pszName             The driver name.
    597598 */
    598 SUPR0DECL(int) SUPR0VtgRegisterDrv(PSUPDRVSESSION pSession, PVTGOBJHDR pVtgHdr, const char *pszName)
     599SUPR0DECL(int) SUPR0TracerRegisterDrv(PSUPDRVSESSION pSession, PVTGOBJHDR pVtgHdr, const char *pszName)
    599600{
    600601    int rc;
     
    622623 * @param   pVtgHdr             The VTG header.
    623624 */
    624 SUPR0DECL(void) SUPR0VtgDeregisterDrv(PSUPDRVSESSION pSession)
     625SUPR0DECL(void) SUPR0TracerDeregisterDrv(PSUPDRVSESSION pSession)
    625626{
    626627    PSUPDRVDTPROVIDER pProv, pProvNext;
     
    662663 * @param   pVtgHdr             The VTG header.
    663664 */
    664 SUPR0DECL(int) SUPR0VtgRegisterModule(void *hMod, PVTGOBJHDR pVtgHdr)
     665SUPR0DECL(int) SUPR0TracerRegisterModule(void *hMod, PVTGOBJHDR pVtgHdr)
    665666{
    666667    PSUPDRVLDRIMAGE pImage = (PSUPDRVLDRIMAGE)hMod;
     
    736737 * @returns VBox status code.
    737738 * @param   pDevExt             The device extension structure.
    738  * @param   pVtgFireProbe       Pointer to the SUPR0VtgFireProbe entry.
    739  */
    740 int VBOXCALL supdrvVtgInit(PSUPDRVDEVEXT pDevExt, PSUPFUNC pVtgFireProbe)
    741 {
    742     Assert(!strcmp(pVtgFireProbe->szName, "SUPR0VtgFireProbe"));
     739 * @param   pFireProbeEntry     Pointer to the SUPR0TracerFireProbe entry.
     740 */
     741int VBOXCALL supdrvVtgInit(PSUPDRVDEVEXT pDevExt, PSUPFUNC pFireProbeEntry)
     742{
     743    Assert(!strcmp(pFireProbeEntry->szName, "SUPR0TracerFireProbe"));
    743744
    744745    /*
     
    749750    {
    750751#ifdef RT_OS_SOLARIS
    751         pVtgFireProbe->pfn = (void *)(uintptr_t)dtrace_probe;
     752        pFireProbeEntry->pfn = (void *)(uintptr_t)dtrace_probe;
    752753#endif
    753754        RTListInit(&pDevExt->DtProviderList);
  • trunk/src/VBox/HostDrivers/Support/SUPDrv-tracer.cpp

    r40759 r40763  
    6565     * SUPR0VtgRegisterDrv.  NULL if pImage is set. */
    6666    PSUPDRVSESSION          pSession;
    67     /** The module name. */
    68     const char             *pszModName;
    6967
    7068    /** Set when the module is unloaded or the driver deregisters its probes. */
     
    9593
    9694
     95
     96/**
     97 * Validates a VTG string against length and characterset limitations.
     98 *
     99 * @returns VINF_SUCCESS, VERR_SUPDRV_VTG_BAD_STRING or
     100 *          VERR_SUPDRV_VTG_STRING_TOO_LONG.
     101 * @param   psz                 The string.
     102 */
    97103static int supdrvVtgValidateString(const char *psz)
    98104{
     
    120126    return VERR_SUPDRV_VTG_STRING_TOO_LONG;
    121127}
     128
    122129
    123130/**
     
    533540            pProv->Core.pHdr        = pVtgHdr;
    534541            pProv->Core.pszName     = &pProv->szName[0];
     542            pProv->Core.pszModName  = pszModName;
    535543            pProv->pImage           = pImage;
    536544            pProv->pSession         = pSession;
    537             pProv->pszModName       = pszModName;
    538545            pProv->fZombie          = false;
    539546            pProv->fRegistered      = true;
     
    598605 * @param   pszName             The driver name.
    599606 */
    600 SUPR0DECL(int) SUPR0VtgRegisterDrv(PSUPDRVSESSION pSession, PVTGOBJHDR pVtgHdr, const char *pszName)
     607SUPR0DECL(int) SUPR0TracerRegisterDrv(PSUPDRVSESSION pSession, PVTGOBJHDR pVtgHdr, const char *pszName)
    601608{
    602609    int rc;
     
    624631 * @param   pVtgHdr             The VTG header.
    625632 */
    626 SUPR0DECL(void) SUPR0VtgDeregisterDrv(PSUPDRVSESSION pSession)
     633SUPR0DECL(void) SUPR0TracerDeregisterDrv(PSUPDRVSESSION pSession)
    627634{
    628635    PSUPDRVTPPROVIDER pProv, pProvNext;
     
    664671 * @param   pVtgHdr             The VTG header.
    665672 */
    666 SUPR0DECL(int) SUPR0VtgRegisterModule(void *hMod, PVTGOBJHDR pVtgHdr)
     673SUPR0DECL(int) SUPR0TracerRegisterModule(void *hMod, PVTGOBJHDR pVtgHdr)
    667674{
    668675    PSUPDRVLDRIMAGE pImage = (PSUPDRVLDRIMAGE)hMod;
     
    704711
    705712/**
    706  * Registers the tracer.
     713 * Registers the tracer implementation.
    707714 *
    708715 * This should be called from the ModuleInit code or from a ring-0 session.
     
    714721 * @param   ppHlp               Where to return the tracer helper method table.
    715722 */
    716 SUPR0DECL(int) SUPR0TracerRegister(void *hMod, PSUPDRVSESSION pSession, PCSUPDRVTRACERREG pReg, PCSUPDRVTRACERHLP *ppHlp)
     723SUPR0DECL(int) SUPR0TracerRegisterImpl(void *hMod, PSUPDRVSESSION pSession, PCSUPDRVTRACERREG pReg, PCSUPDRVTRACERHLP *ppHlp)
    717724{
    718725    PSUPDRVLDRIMAGE pImage = (PSUPDRVLDRIMAGE)hMod;
     
    774781
    775782/**
    776  * Deregister a tracer associated with a ring-0 session.
     783 * Deregister a tracer implementation associated with a ring-0 session.
    777784 *
    778785 * @returns VBox status code.
    779786 * @param   pSession            Ring-0 session handle.
    780787 */
    781 SUPR0DECL(int) SUPR0TracerDeregister(PSUPDRVSESSION pSession)
     788SUPR0DECL(int) SUPR0TracerDeregisterImpl(PSUPDRVSESSION pSession)
    782789{
    783790    PSUPDRVDEVEXT   pDevExt;
  • trunk/src/VBox/HostDrivers/Support/SUPDrv.c

    r40756 r40763  
    163163    { "SUPR0AbsKernelFS",                       (void *)0 },
    164164    { "SUPR0AbsKernelGS",                       (void *)0 },
    165     { "SUPR0VtgFireProbe",                      (void *)SUPR0VtgFireProbe },
     165    { "SUPR0TracerFireProbe",                   (void *)SUPR0TracerFireProbe },
    166166        /* Normal function pointers: */
    167167    { "SUPR0ComponentRegisterFactory",          (void *)SUPR0ComponentRegisterFactory },
     
    204204    { "SUPR0GetPagingMode",                     (void *)SUPR0GetPagingMode },
    205205    { "SUPR0EnableVTx",                         (void *)SUPR0EnableVTx },
    206     { "SUPR0VtgRegisterModule",                 (void *)SUPR0VtgRegisterModule },
     206    { "SUPR0TracerRegisterModule",              (void *)SUPR0TracerRegisterModule },
    207207    { "SUPGetGIP",                              (void *)SUPGetGIP },
    208208    { "g_pSUPGlobalInfoPage",                   (void *)&g_pSUPGlobalInfoPage },
     
    36853685 * Stub function.
    36863686 */
    3687 SUPR0DECL(void) SUPR0VtgFireProbe(uint32_t idProbe, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
    3688                                   uintptr_t uArg3, uintptr_t uArg4)
     3687SUPR0DECL(void) SUPR0TracerFireProbe(uint32_t idProbe, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
     3688                                     uintptr_t uArg3, uintptr_t uArg4)
    36893689{
    36903690    NOREF(idProbe); NOREF(uArg0); NOREF(uArg1); NOREF(uArg2); NOREF(uArg3); NOREF(uArg4);
     
    36963696 * Stub function.
    36973697 */
    3698 SUPR0DECL(int) SUPR0VtgRegisterModule(void *hMod, struct VTGOBJHDR *pVtgHdr)
     3698SUPR0DECL(int) SUPR0TracerRegisterModule(void *hMod, struct VTGOBJHDR *pVtgHdr)
    36993699{
    37003700    NOREF(hMod); NOREF(pVtgHdr);
  • trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h

    r40636 r40763  
    193193 *          - None.
    194194 */
    195 #define SUPDRV_IOC_VERSION                              0x00190001
     195#define SUPDRV_IOC_VERSION                              0x00190002
    196196
    197197/** SUP_IOCTL_COOKIE. */
     
    325325 *
    326326 * @returns 0 on success.
    327  * @returns Appropriate error code on failure. 
     327 * @returns Appropriate error code on failure.
    328328 * @param   hMod        Image handle for use in APIs.
    329329 */
     
    334334/**
    335335 * Module termination callback function.
    336  * This is called once right before the module is being unloaded. 
    337  * 
     336 * This is called once right before the module is being unloaded.
     337 *
    338338 * @param   hMod        Image handle for use in APIs.
    339339 */
  • trunk/src/VBox/HostDrivers/Support/SUPLib.cpp

    r40636 r40763  
    268268        CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION;
    269269        const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00190000
    270                                    ? 0x00190001
     270                                   ? 0x00190002
    271271                                   : SUPDRV_IOC_VERSION & 0xffff0000;
    272272        CookieReq.u.In.u32MinVersion = uMinVersion;
  • trunk/src/VBox/VMM/VMMR0/VMMR0.cpp

    r40644 r40763  
    107107#ifdef VBOX_WITH_DTRACE_R0
    108108    /*
    109      * The first thing to do is register the static tracepoints. 
    110      * (Deregistration is automatic.) 
    111      */
    112     int rc2 = SUPR0VtgRegisterModule(hMod, &g_VTGObjHeader);
     109     * The first thing to do is register the static tracepoints.
     110     * (Deregistration is automatic.)
     111     */
     112    int rc2 = SUPR0TracerRegisterModule(hMod, &g_VTGObjHeader);
    113113    if (RT_FAILURE(rc2))
    114114        return rc2;
     
    194194/**
    195195 * Terminate the module.
    196  * This is called when we're finally unloaded. 
    197  * 
     196 * This is called when we're finally unloaded.
     197 *
    198198 * @param   hMod        Image handle for use in APIs.
    199199 */
  • trunk/src/bldprogs/VBoxTpG.cpp

    r40641 r40763  
    160160static unsigned             g_cAssemblerOptions         = 0;
    161161static const char          *g_apszAssemblerOptions[32];
    162 static const char          *g_pszProbeFnName            = "SUPR0VtgFireProbe";
     162static const char          *g_pszProbeFnName            = "SUPR0TracerFireProbe";
    163163static bool                 g_fProbeFnImported          = true;
    164164/** @} */
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