VirtualBox

Changeset 40761 in vbox


Ignore:
Timestamp:
Apr 4, 2012 7:56:12 AM (13 years ago)
Author:
vboxsync
Message:

sup.h: User mode vs. kernel mode probes firing.

File:
1 edited

Legend:

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

    r40759 r40761  
    13201320
    13211321
     1322/**
     1323 * Usermode probe context information.
     1324 */
     1325typedef struct SUPDRVTRACERUSRCTX
     1326{
     1327    union
     1328    {
     1329        /** X86 context info. */
     1330        struct
     1331        {
     1332            uint32_t        uVtgProbeLoc;   /**< Location record address. */
     1333            uint32_t        aArgs[20];      /**< Raw arguments. */
     1334            uint32_t        eip;
     1335            uint32_t        eflags;
     1336            uint32_t        eax;
     1337            uint32_t        ecx;
     1338            uint32_t        edx;
     1339            uint32_t        ebx;
     1340            uint32_t        esp;
     1341            uint32_t        ebp;
     1342            uint32_t        esi;
     1343            uint32_t        edi;
     1344            uint16_t        cs;
     1345            uint16_t        ss;
     1346            uint16_t        ds;
     1347            uint16_t        es;
     1348            uint16_t        fs;
     1349            uint16_t        gs;
     1350        } X86;
     1351
     1352        /** AMD64 context info. */
     1353        struct
     1354        {
     1355            uint64_t        uVtgProbeLoc;   /**< Location record address. */
     1356            uint64_t        aArgs[10];      /**< Raw arguments. */
     1357            uint64_t        rip;
     1358            uint64_t        rflags;
     1359            uint64_t        rax;
     1360            uint64_t        rcx;
     1361            uint64_t        rdx;
     1362            uint64_t        rbx;
     1363            uint64_t        rsp;
     1364            uint64_t        rbp;
     1365            uint64_t        rsi;
     1366            uint64_t        rdi;
     1367            uint64_t        r8;
     1368            uint64_t        r9;
     1369            uint64_t        r10;
     1370            uint64_t        r11;
     1371            uint64_t        r12;
     1372            uint64_t        r13;
     1373            uint64_t        r14;
     1374        } Amd64;
     1375    } 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;
     1382} SUPDRVTRACERUSRCTX;
     1383/** Pointer to the usermode probe context information. */
     1384typedef SUPDRVTRACERUSRCTX const *PCSUPDRVTRACERUSRCTX;
     1385
     1386
    13221387/** Pointer to a tracer registration record. */
    13231388typedef struct SUPDRVTRACERREG const *PCSUPDRVTRACERREG;
     
    13331398
    13341399    /**
    1335      * Fire off a probe.
     1400     * Fire off a kernel probe.
    13361401     *
    1337      * @param   pVtgProbeLoc            The probe location record.
    1338      * @param   uArg0                   The first raw probe argument.
    1339      * @param   uArg1                   The second raw probe argument.
    1340      * @param   uArg2                   The third raw probe argument.
    1341      * @param   uArg3                   The fourth raw probe argument.
    1342      * @param   uArg4                   The fifth raw probe argument.
     1402     * @param   pVtgProbeLoc    The probe location record.
     1403     * @param   uArg0           The first raw probe argument.
     1404     * @param   uArg1           The second raw probe argument.
     1405     * @param   uArg2           The third raw probe argument.
     1406     * @param   uArg3           The fourth raw probe argument.
     1407     * @param   uArg4           The fifth raw probe argument.
    13431408     *
    13441409     * @remarks SUPR0VtgFireProbe will do a tail jump thru this member, so no extra
     
    13481413     *
    13491414     */
    1350     DECLR0CALLBACKMEMBER(void, pfnFireProbe, (struct VTGPROBELOC *pVtgProbeLoc, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
    1351                                               uintptr_t uArg3, uintptr_t uArg4));
     1415    DECLR0CALLBACKMEMBER(void, pfnFireKernelProbe, (struct VTGPROBELOC *pVtgProbeLoc, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
     1416                                                    uintptr_t uArg3, uintptr_t uArg4));
     1417
     1418    /**
     1419     * Fire off a user-mode probe.
     1420     *
     1421     * @param   pThis           Pointer to the registration record.
     1422     *
     1423     * @param   pVtgProbeLoc    The probe location record.
     1424     * @param   pCtx            The usermode context info.
     1425     */
     1426    DECLR0CALLBACKMEMBER(void, pfnFireUserProbe, (PCSUPDRVTRACERREG pThis, PCSUPDRVTRACERUSRCTX pCtx));
    13521427
    13531428    /**
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