VirtualBox

Changeset 53663 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jan 2, 2015 12:31:45 PM (10 years ago)
Author:
vboxsync
Message:

VBoxDTrace: working on the interfaces between the two modules... (r40)

Location:
trunk/src/VBox/ExtPacks/VBoxDTrace
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ExtPacks/VBoxDTrace/VBoxDTraceR0/VBoxDTraceR0.cpp

    r53645 r53663  
    5454struct VBoxDtMutex      g_DummyMtx;
    5555
     56void           (*dtrace_cpu_init)(processorid_t);
     57void           (*dtrace_modload)(struct modctl *);
     58void           (*dtrace_modunload)(struct modctl *);
     59void           (*dtrace_helpers_cleanup)(void);
     60void           (*dtrace_helpers_fork)(proc_t *, proc_t *);
     61void           (*dtrace_cpustart_init)(void);
     62void           (*dtrace_cpustart_fini)(void);
     63void           (*dtrace_cpc_fire)(uint64_t);
     64void           (*dtrace_debugger_init)(void);
     65void           (*dtrace_debugger_fini)(void);
     66dtrace_cacheid_t dtrace_predcache_id = DTRACE_CACHEIDNONE + 1;
     67
     68
     69void dtrace_toxic_ranges(void (*pfnAddOne)(uintptr_t uBase, uintptr_t cbRange))
     70{
     71    /** @todo ? */
     72}
     73
    5674
    5775
     
    156174    }
    157175    return u64;
     176}
     177
     178
     179/** copyin implementation */
     180int  VBoxDtCopyIn(void const *pvUser, void *pvDst, size_t cb)
     181{
     182    int rc = RTR0MemUserCopyFrom(pvDst, (uintptr_t)pvUser, cb);
     183    return RT_SUCCESS(rc) ? 0 : -1;
     184}
     185
     186
     187/** copyout implementation */
     188int  VBoxDtCopyOut(void const *pvSrc, void *pvUser, size_t cb)
     189{
     190    int rc = RTR0MemUserCopyTo((uintptr_t)pvUser, pvSrc, cb);
     191    return RT_SUCCESS(rc) ? 0 : -1;
    158192}
    159193
     
    451485}
    452486
     487
     488/** uprintf implementation */
     489void VBoxDtUPrintf(const char *pszFormat, ...)
     490{
     491    va_list va;
     492    va_start(va, pszFormat);
     493    VBoxDtUPrintfV(pszFormat, va);
     494    va_end(va);
     495}
     496
     497
     498/** vuprintf implementation */
     499void VBoxDtUPrintfV(const char *pszFormat, va_list va)
     500{
     501    SUPR0Printf("%N", pszFormat, va);
     502}
     503
     504
     505/* CRED implementation. */
     506cred_t *VBoxDtGetCurrentCreds(void)
     507{
     508    struct VBoxDtThread *pThread = VBoxDtGetCurrentThread();
     509    if (!pThread)
     510        return NULL;
     511    return pThread->t_proc->p_cred;
     512}
     513
     514
     515/* crhold implementation */
     516void VBoxDtCredHold(struct VBoxDtCred *pCred)
     517{
     518    int32_t cRefs = ASMAtomicIncS32(&pCred->cr_refs);
     519    Assert(cRefs > 1);
     520}
     521
     522
     523/* crfree implementation */
     524void VBoxDtCredFree(struct VBoxDtCred *pCred)
     525{
     526    int32_t cRefs = ASMAtomicDecS32(&pCred->cr_refs);
     527    Assert(cRefs >= 0);
     528    if (!cRefs)
     529        RTMemFree(pCred);
     530}
     531
     532
    453533#if 0
    454 dtrace_probe_error
    455 
    456 VBoxDtGetCurrentCreds
     534VBoxDtDdiDriverMajor
     535VBoxDtDdiReportDev
     536VBoxDtDdiSoftStateAllocZ
     537VBoxDtDdiSoftStateFree
     538VBoxDtDdiSoftStateGet
     539VBoxDtDdiSoftStateInit
     540VBoxDtDdiSoftStateTerm
     541
    457542VBoxDtGetCurrentProc
    458543VBoxDtGetCurrentThread
    459544VBoxDtGetKernelBase
     545
    460546VBoxDtKMemAlloc
    461547VBoxDtKMemAllocZ
     548VBoxDtKMemCacheAlloc
     549VBoxDtKMemCacheCreate
     550VBoxDtKMemCacheDestroy
     551VBoxDtKMemCacheFree
    462552VBoxDtKMemFree
    463553VBoxDtMutexEnter
     
    465555VBoxDtMutexIsOwner
    466556VBoxDtVMemAlloc
     557VBoxDtVMemCreate
     558VBoxDtVMemDestroy
    467559VBoxDtVMemFree
     560
     561
     562dtrace_xcall
     563nocrt_strncpy
     564RTErrConvertToErrno
    468565#endif
  • trunk/src/VBox/ExtPacks/VBoxDTrace/include/VBoxDTraceTypes.h

    r53659 r53663  
    189189typedef struct VBoxDtCred
    190190{
     191    int32_t                 cr_refs;
    191192    RTUID                   cr_uid;
    192193    RTUID                   cr_ruid;
     
    219220    uintptr_t               t_dtrace_astpc;
    220221    uint32_t                t_predcache;
     222    struct VBoxDtProcess   *t_proc;
    221223} kthread_t;
    222 extern kthread_t *VBoxDtGetCurrentThread(void);
     224struct VBoxDtThread *VBoxDtGetCurrentThread(void);
    223225#define curthread               (VBoxDtGetCurrentThread())
    224226
     
    229231    RTPROCESS               p_pid;
    230232    struct dtrace_helpers  *p_dtrace_helpers;
     233    struct VBoxDtCred      *p_cred;
    231234} proc_t;
    232235proc_t *VBoxDtGetCurrentProc(void);
     
    280283#define cpu_core                (g_aVBoxDtCpuCores)
    281284
    282 cred_t *VBoxDtGetCurrentCreds(void);
     285struct VBoxDtCred *VBoxDtGetCurrentCreds(void);
    283286#define CRED()                  VBoxDtGetCurrentCreds()
    284287
     
    386389void    VBoxDtDdiReportDev(struct VBoxDtDevInfo *pDevInfo);
    387390
     391/*
     392 * DTrace bits we've made external.
     393 */
     394extern int dtrace_attach(dev_info_t *devi, ddi_attach_cmd_t cmd);
     395extern int dtrace_ioctl(dev_t dev, int cmd, intptr_t arg, int md, cred_t *cr, int *rv);
     396
    388397#endif /* IN_RING0 */
    389398
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_subr.c

    r53662 r53663  
    4747#  include <unistd.h>
    4848# endif
     49# include <VBox/sup.h>
    4950#endif /* VBOX */
    5051
     
    483484{
    484485        const dtrace_vector_t *v = dtp->dt_vector;
     486#ifdef VBOX
     487        int rc;
     488#endif
    485489
    486490        if (v != NULL)
     
    491495                return (ioctl(dtp->dt_fd, val, arg));
    492496#else
     497# if 1
     498        rc = SUPR3CallR0Service(RT_STR_TUPLE("VBoxDTrace"), val, (uintptr_t)arg, NULL);
     499        if (RT_SUCCESS(rc)) {
     500
     501        }
     502# else
    493503        /* Fake ioctl */
    494504        switch (val) {
     
    531541
    532542        }
    533         AssertFailed(); /** @todo FIXME */
     543# endif
    534544#endif
    535545
     
    538548}
    539549
     550#ifndef /* VBOX - who needs this? */
    540551int
    541552dt_status(dtrace_hdl_t *dtp, processorid_t cpu)
     
    553564        return (v->dtv_status(dtp->dt_varg, cpu));
    554565}
     566#endif
    555567
    556568#ifndef VBOX
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/uts/common/dtrace/dtrace.c

    r53647 r53663  
    1469514695 * DTrace Driver Cookbook Functions
    1469614696 */
     14697#ifndef VBOX
    1469714698/*ARGSUSED*/
    1469814699static int
    1469914700dtrace_attach(dev_info_t *devi, ddi_attach_cmd_t cmd)
     14701#else
     14702int dtrace_attach(dev_info_t *devi, ddi_attach_cmd_t cmd)
     14703#endif
    1470014704{
    1470114705        dtrace_provider_id_t id;
     
    1503715041
    1503815042/*ARGSUSED*/
     15043#ifndef VBOX
    1503915044static int
    1504015045dtrace_ioctl(dev_t dev, int cmd, intptr_t arg, int md, cred_t *cr, int *rv)
     15046#else
     15047int dtrace_ioctl(dev_t dev, int cmd, intptr_t arg, int md, cred_t *cr, int *rv)
     15048#endif
    1504115049{
    1504215050        minor_t minor = getminor(dev);
     
    1579315801}
    1579415802
     15803#ifndef VBOX
    1579515804/*ARGSUSED*/
    1579615805static int
    1579715806dtrace_detach(dev_info_t *dip, ddi_detach_cmd_t cmd)
     15807#else
     15808int dtrace_detach(dev_info_t *dip, ddi_detach_cmd_t cmd)
     15809#endif
    1579815810{
    1579915811        dtrace_state_t *state;
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