VirtualBox

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

VBoxDTrace: porting libdtrace... (r22)

Location:
trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common
Files:
27 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_aggregate.c

    r53634 r53652  
    2525 */
    2626
     27#ifndef VBOX
    2728#pragma ident   "%Z%%M% %I%     %E% SMI"
    2829
     
    3536#include <alloca.h>
    3637#include <limits.h>
     38#else  /* VBOX */
     39# include "dt_impl.h"
     40# ifdef _MSC_VER
     41#  pragma warning(disable:4018) /* signed/unsigned comparsion mismatch warning */
     42# endif
     43# include <iprt/mp.h>
     44#endif /* VBOX */
    3745
    3846#define DTRACE_AHASHSIZE        32779           /* big 'ol prime */
     
    4351 * they are protected by a global static lock, dt_qsort_lock.
    4452 */
     53#ifndef VBOX
    4554static pthread_mutex_t dt_qsort_lock = PTHREAD_MUTEX_INITIALIZER;
     55#else
     56RTCRITSECT dt_qsort_lock;
     57#endif
    4658
    4759static int dt_revsort;
     
    247259dt_aggregate_usym(dtrace_hdl_t *dtp, uint64_t *data)
    248260{
     261#ifndef VBOX
    249262        uint64_t pid = data[0];
    250263        uint64_t *pc = &data[1];
     
    265278        dt_proc_unlock(dtp, P);
    266279        dt_proc_release(dtp, P);
     280#endif
    267281}
    268282
     
    270284dt_aggregate_umod(dtrace_hdl_t *dtp, uint64_t *data)
    271285{
     286#ifndef VBOX
    272287        uint64_t pid = data[0];
    273288        uint64_t *pc = &data[1];
     
    288303        dt_proc_unlock(dtp, P);
    289304        dt_proc_release(dtp, P);
     305#endif
    290306}
    291307
     
    293309dt_aggregate_sym(dtrace_hdl_t *dtp, uint64_t *data)
    294310{
     311#ifndef VBOX
    295312        GElf_Sym sym;
    296313        uint64_t *pc = data;
     
    298315        if (dtrace_lookup_by_addr(dtp, *pc, &sym, NULL) == 0)
    299316                *pc = sym.st_value;
     317#endif
    300318}
    301319
     
    303321dt_aggregate_mod(dtrace_hdl_t *dtp, uint64_t *data)
    304322{
     323#ifndef VBOX
    305324        uint64_t *pc = data;
    306325        dt_module_t *dmp;
     
    325344                }
    326345        }
     346#endif
    327347}
    328348
     
    10081028        assert(agp->dtat_cpus == NULL);
    10091029
     1030#ifndef VBOX
    10101031        agp->dtat_maxcpu = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
    10111032        agp->dtat_ncpu = dt_sysconf(dtp, _SC_NPROCESSORS_MAX);
     1033#else
     1034        agp->dtat_maxcpu = RTMpGetMaxCpuId() + 1;
     1035        agp->dtat_ncpu = RTMpGetCount();
     1036#endif
    10121037        agp->dtat_cpus = malloc(agp->dtat_ncpu * sizeof (processorid_t));
    10131038
     
    12431268                sorted[i++] = h;
    12441269
     1270#ifndef VBOX
    12451271        (void) pthread_mutex_lock(&dt_qsort_lock);
     1272#else
     1273        RTCritSectEnter(&dt_qsort_lock);
     1274#endif
    12461275
    12471276        if (sfunc == NULL) {
     
    12571286        }
    12581287
     1288#ifndef VBOX
    12591289        (void) pthread_mutex_unlock(&dt_qsort_lock);
     1290#else
     1291        RTCritSectLeave(&dt_qsort_lock);
     1292#endif
    12601293
    12611294        for (i = 0; i < nentries; i++) {
     
    16521685         * comparison and sorting.
    16531686         */
     1687#ifndef VBOX
    16541688        (void) pthread_mutex_lock(&dt_qsort_lock);
     1689#else
     1690        RTCritSectEnter(&dt_qsort_lock);
     1691#endif
    16551692
    16561693        qsort(sorted, nentries, sizeof (dt_ahashent_t *),
     
    16811718
    16821719                if ((nbundle = dt_zalloc(dtp, bundlesize)) == NULL) {
     1720#ifndef VBOX
    16831721                        (void) pthread_mutex_unlock(&dt_qsort_lock);
     1722#else
     1723                        RTCritSectLeave(&dt_qsort_lock);
     1724#endif
    16841725                        goto out;
    16851726                }
    16861727
    1687                 for (j = start; j < i; j++) {
     1728                for (j = VBDTCAST(int)start; j < i; j++) {
    16881729                        dtrace_aggvarid_t id = dt_aggregate_aggvarid(sorted[j]);
    16891730
     
    17311772            dt_aggregate_bundlecmp);
    17321773
     1774#ifndef VBOX
    17331775        (void) pthread_mutex_unlock(&dt_qsort_lock);
     1776#else
     1777        RTCritSectLeave(&dt_qsort_lock);
     1778#endif
    17341779
    17351780        /*
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_as.h

    r53634 r53652  
    2828#define _DT_AS_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
    3132
    3233#include <sys/types.h>
     34#endif
    3335#include <sys/dtrace.h>
    3436
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_buf.h

    r53634 r53652  
    2828#define _DT_BUF_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_decl.h

    r53634 r53652  
    2828#define _DT_DECL_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
    3132
    3233#include <sys/types.h>
     34#endif
    3335#include <libctf.h>
    3436#include <dtrace.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_dof.h

    r53634 r53652  
    2828#define _DT_DOF_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#include <dtrace.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_error.c

    r53634 r53652  
    2424 */
    2525
     26#ifndef VBOX
    2627#include <strings.h>
     28#endif
    2729#include <dt_impl.h>
    2830
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_errtags.h

    r53634 r53652  
    2828#define _DT_ERRTAGS_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_ident.h

    r53634 r53652  
    2828#define _DT_IDENT_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#include <libctf.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_impl.h

    r53634 r53652  
    2828#define _DT_IMPL_H
    2929
     30#ifndef VBOX
    3031#include <sys/param.h>
    3132#include <sys/objfs.h>
     
    3536#include <gelf.h>
    3637#include <synch.h>
     38#else  /* VBOX */
     39# include <setjmp.h>
     40# include <libctf.h>
     41# include <dtrace.h>
     42# include <errno.h>
     43# include <iprt/assert.h>
     44# define assert(expr)   Assert(expr)
     45#endif /* VBOX*/
     46
    3747
    3848#ifdef  __cplusplus
     
    7989        uint_t (*do_syminit)(struct dt_module *);
    8090        void (*do_symsort)(struct dt_module *);
     91#ifndef VBOX
    8192        GElf_Sym *(*do_symname)(struct dt_module *,
    8293            const char *, GElf_Sym *, uint_t *);
    8394        GElf_Sym *(*do_symaddr)(struct dt_module *,
    8495            GElf_Addr, GElf_Sym *, uint_t *);
     96#endif
    8597} dt_modops_t;
    8698
     
    105117        struct dt_module *dm_next; /* pointer to next module in hash chain */
    106118        const dt_modops_t *dm_ops; /* pointer to data model's ops vector */
     119#ifndef VBOX
    107120        Elf *dm_elf;            /* libelf handle for module object */
    108121        objfs_info_t dm_info;   /* object filesystem private info */
     122#endif
    109123        ctf_sect_t dm_symtab;   /* symbol table for module */
    110124        ctf_sect_t dm_strtab;   /* string table for module */
     
    121135        uint_t dm_flags;        /* module flags (see below) */
    122136        int dm_modid;           /* modinfo(1M) module identifier */
     137#ifndef VBOX
    123138        GElf_Addr dm_text_va;   /* virtual address of text section */
    124139        GElf_Xword dm_text_size; /* size in bytes of text section */
     
    127142        GElf_Addr dm_bss_va;    /* virtual address of BSS */
    128143        GElf_Xword dm_bss_size; /* size in bytes of BSS */
     144#endif
    129145        dt_idhash_t *dm_extern; /* external symbol definitions */
    130146} dt_module_t;
     
    296312        void *dt_bufarg;        /* buffered handler argument */
    297313        dt_dof_t dt_dof;        /* DOF generation buffers (see dt_dof.c) */
     314#ifndef VBOX
    298315        struct utsname dt_uts;  /* uname(2) information for system */
     316#endif
    299317        dt_list_t dt_lib_dep;   /* scratch linked-list of lib dependencies */
    300318        dt_list_t dt_lib_dep_sorted;    /* dependency sorted library list */
     
    651669
    652670#endif  /* _DT_IMPL_H */
     671
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_inttab.h

    r53634 r53652  
    2828#define _DT_INTTAB_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#include <dtrace.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_list.h

    r53634 r53652  
    2828#define _DT_LIST_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_module.h

    r53634 r53652  
    2828#define _DT_MODULE_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#include <dt_impl.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_open.c

    r53634 r53652  
    2424 */
    2525
     26#ifndef VBOX
    2627#include <sys/types.h>
    2728#include <sys/modctl.h>
    2829#include <sys/systeminfo.h>
    29 #include <sys/resource.h>
    3030
    3131#include <libelf.h>
     
    4040#include <assert.h>
    4141
    42 #define _POSIX_PTHREAD_SEMANTICS
    43 #include <dirent.h>
    44 #undef  _POSIX_PTHREAD_SEMANTICS
     42#ifndef _MSC_VER
     43# define        _POSIX_PTHREAD_SEMANTICS
     44# include <dirent.h>
     45# undef _POSIX_PTHREAD_SEMANTICS
     46#endif
     47
     48#else  /* VBOX */
     49# ifndef _MSC_VER
     50# include <sys/resource.h>
     51# include <unistd.h>
     52# else
     53# include <io.h>
     54# endif
     55#endif /* VBOX */
    4556
    4657#include <dt_impl.h>
     
    662673int _dtrace_debug = 0;          /* debug messages enabled (off) */
    663674const char *const _dtrace_version = DT_VERS_STRING; /* API version string */
     675#ifndef VBOX
    664676int _dtrace_rdvers = RD_VERSION; /* rtld_db feature version */
     677#endif
    665678
    666679typedef struct dt_fdlist {
     
    670683} dt_fdlist_t;
    671684
     685
     686#ifdef VBOX
     687# include <iprt/critsect.h>
     688extern RTCRITSECT dt_qsort_lock; /* dt_aggregate.c */
     689
     690void dtrace_init(void)
     691#else  /* !VBOX */
    672692#pragma init(_dtrace_init)
    673693void
    674694_dtrace_init(void)
     695#endif /* !VBOX */
    675696{
    676697        _dtrace_debug = getenv("DTRACE_DEBUG") != NULL;
    677698
     699#ifndef VBOX
    678700        for (; _dtrace_rdvers > 0; _dtrace_rdvers--) {
    679701                if (rd_init(_dtrace_rdvers) == RD_OK)
    680702                        break;
    681703        }
     704#else
     705        RTCritSectInit(&dt_qsort_lock);
     706#endif
    682707}
    683708
     
    692717}
    693718
     719#ifndef VBOX
    694720static void
    695721dt_provmod_open(dt_provmod_t **provmod, dt_fdlist_t *dfp)
     
    745771        (void) closedir(dirp);
    746772}
     773#endif /* !VBOX */
    747774
    748775static void
     
    763790dt_get_sysinfo(int cmd, char *buf, size_t len)
    764791{
     792#ifndef VBOX
    765793        ssize_t rv = sysinfo(cmd, buf, len);
    766794        char *p = buf;
     
    771799        while ((p = strchr(p, '.')) != NULL)
    772800                *p++ = '_';
    773 
     801#else
     802        snprintf(buf, len, "%s", "Unknown");
     803#endif
    774804        return (buf);
    775805}
     
    785815        dt_provmod_t *provmod = NULL;
    786816        int i, err;
     817#ifndef _MSC_VER
    787818        struct rlimit rl;
     819#endif
    788820
    789821        const dt_intrinsic_t *dinp;
     
    795827        ctf_arinfo_t ctr;
    796828
     829#ifndef VBOX
    797830        dt_fdlist_t df = { NULL, 0, 0 };
     831#endif
    798832
    799833        char isadef[32], utsdef[32];
     834#ifndef VBOX
    800835        char s1[64], s2[64];
     836#endif
    801837
    802838        if (version <= 0)
     
    830866                return (set_open_errno(dtp, errp, EINVAL));
    831867
     868#ifndef VBOX
    832869        if (elf_version(EV_CURRENT) == EV_NONE)
    833870                return (set_open_errno(dtp, errp, EDT_ELFVERSION));
     871#endif
    834872
    835873        if (vector != NULL || (flags & DTRACE_O_NODEV))
    836874                goto alloc; /* do not attempt to open dtrace device */
    837875
     876#ifndef _MSC_VER
    838877        /*
    839878         * Before we get going, crank our limit on file descriptors up to the
     
    848887                (void) setrlimit(RLIMIT_NOFILE, &rl);
    849888        }
    850 
     889#endif
     890
     891#ifndef VBOX
    851892        /*
    852893         * Get the device path of each of the providers.  We hold them open
     
    892933        (void) fcntl(dtfd, F_SETFD, FD_CLOEXEC);
    893934        (void) fcntl(ftfd, F_SETFD, FD_CLOEXEC);
     935#else  /* VBOX */
     936        /** @todo open ring-0 dtrace module. */
     937#endif /* VBOX */
    894938
    895939alloc:
     
    926970        dtp->dt_varg = arg;
    927971        dt_dof_init(dtp);
     972#ifndef VBOX
    928973        (void) uname(&dtp->dt_uts);
     974#endif
    929975
    930976        if (dtp->dt_mods == NULL || dtp->dt_provs == NULL ||
     
    941987            (uint_t)(sizeof (void *) * NBBY));
    942988
     989#ifndef VBOX
    943990        (void) snprintf(utsdef, sizeof (utsdef), "-D__%s_%s",
    944991            dt_get_sysinfo(SI_SYSNAME, s1, sizeof (s1)),
    945992            dt_get_sysinfo(SI_RELEASE, s2, sizeof (s2)));
     993#endif
    946994
    947995        if (dt_cpp_add_arg(dtp, "-D__sun") == NULL ||
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_parser.h

    r53634 r53652  
    2727#define _DT_PARSER_H
    2828
     29#ifndef VBOX
    2930#pragma ident   "%Z%%M% %I%     %E% SMI"
    3031
     
    3536#include <stdarg.h>
    3637#include <stdio.h>
     38#else  /* VBOX */
     39# include <sys/dtrace.h>
     40# include <stdio.h>
     41#endif /* VBOX */
    3742
    3843#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_pcb.h

    r53634 r53652  
    2828#define _DT_PCB_H
    2929
    30 #pragma ident   "%Z%%M% %I%     %E% SMI"
     30#ifndef VBOX
     31# pragma ident  "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#include <dtrace.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_pid.h

    r53634 r53652  
    2828#ifndef _DT_PID_H
    2929#define _DT_PID_H
     30#ifndef VBOX
    3031
    3132#pragma ident   "%Z%%M% %I%     %E% SMI"
     
    5859    dtrace_hdl_t *, fasttrap_probe_spec_t *, const GElf_Sym *, const char *);
    5960
     61#endif /* !VBOX */
    6062#ifdef  __cplusplus
    6163}
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_printf.h

    r53634 r53652  
    2828#define _DT_PRINTF_H
    2929
    30 #pragma ident   "%Z%%M% %I%     %E% SMI"
     30#ifndef VBOX
     31# pragma ident  "%Z%%M% %I%     %E% SMI"
    3132
    3233#include <sys/types.h>
     34#endif
    3335#include <libctf.h>
    3436#include <dtrace.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_proc.c

    r53634 r53652  
    7777 */
    7878
     79#ifndef VBOX
    7980#include <sys/wait.h>
    8081#include <sys/lwp.h>
     
    8384#include <assert.h>
    8485#include <errno.h>
     86#endif
    8587
    8688#include <dt_proc.h>
    8789#include <dt_pid.h>
    8890#include <dt_impl.h>
     91
     92#ifndef VBOX
    8993
    9094#define IS_SYS_EXEC(w)  (w == SYS_execve)
     
    10331037        assert(err == 0); /* check for unheld lock */
    10341038}
     1039#endif /* !VBOX */
    10351040
    10361041void
     
    10401045            sizeof (dt_proc_t *) * _dtrace_pidbuckets - 1)) != NULL) {
    10411046
     1047#ifndef VBOX /** @todo This needs more work... */
    10421048                (void) pthread_mutex_init(&dtp->dt_procs->dph_lock, NULL);
    10431049                (void) pthread_cond_init(&dtp->dt_procs->dph_cv, NULL);
     1050#else
     1051
     1052#endif
    10441053
    10451054                dtp->dt_procs->dph_hashlen = _dtrace_pidbuckets;
     
    10521061{
    10531062        dt_proc_hash_t *dph = dtp->dt_procs;
     1063#ifndef VBOX
    10541064        dt_proc_t *dpr;
    10551065
    10561066        while ((dpr = dt_list_next(&dph->dph_lrulist)) != NULL)
    10571067                dt_proc_destroy(dtp, dpr->dpr_proc);
     1068#endif
    10581069
    10591070        dtp->dt_procs = NULL;
     
    10611072}
    10621073
     1074#ifndef VBOX
     1075
    10631076struct ps_prochandle *
    10641077dtrace_proc_create(dtrace_hdl_t *dtp, const char *file, char *const *argv)
     
    10961109        dt_proc_continue(dtp, P);
    10971110}
     1111#endif /* !VBOX */
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_proc.h

    r53634 r53652  
    2828#define _DT_PROC_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
    3132
     
    3435#include <pthread.h>
    3536#include <dt_list.h>
     37#else  /* VBOX */
     38# include <dtrace.h>
     39# include <dt_list.h>
     40# include <iprt/critsect.h>
     41#endif /* VBOX */
     42
    3643
    3744#ifdef  __cplusplus
     
    4552        struct ps_prochandle *dpr_proc; /* proc handle for libproc calls */
    4653        char dpr_errmsg[BUFSIZ];        /* error message */
     54#ifndef VBOX
    4755        rd_agent_t *dpr_rtld;           /* rtld handle for librtld_db calls */
    4856        pthread_mutex_t dpr_lock;       /* lock for manipulating dpr_hdl */
    4957        pthread_cond_t dpr_cv;          /* cond for dpr_stop/quit/done */
     58#else
     59        RTCRITSECT dpr_lock;
     60        RTSEMEVENT dpr_cv;
     61#endif
    5062        pid_t dpr_pid;                  /* pid of process */
    5163        uint_t dpr_refs;                /* reference count */
     
    5769        uint8_t dpr_stale;              /* proc flag: been deprecated */
    5870        uint8_t dpr_rdonly;             /* proc flag: opened read-only */
     71#ifndef VBOX
    5972        pthread_t dpr_tid;              /* control thread (or zero if none) */
     73#else
     74        RTTHREAD dpr_tid;
     75#endif
    6076        dt_list_t dpr_bps;              /* list of dt_bkpt_t structures */
    6177} dt_proc_t;
     
    87103
    88104typedef struct dt_proc_hash {
     105#ifndef VBOX
    89106        pthread_mutex_t dph_lock;       /* lock protecting dph_notify list */
    90107        pthread_cond_t dph_cv;          /* cond for waiting for dph_notify */
     108#else
     109        RTSEMEVENT dph_event;
     110#endif
    91111        dt_proc_notify_t *dph_notify;   /* list of pending proc notifications */
    92112        dt_list_t dph_lrulist;          /* list of dt_proc_t's in lru order */
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_program.h

    r53634 r53652  
    2828#define _DT_PROGRAM_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_provider.h

    r53634 r53652  
    2828#define _DT_PROVIDER_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#include <dt_impl.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_regset.h

    r53634 r53652  
    2828#define _DT_REGSET_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
    3132
    3233#include <sys/types.h>
     34#endif
    3335
    3436#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_string.h

    r53634 r53652  
    2727#define _DT_STRING_H
    2828
     29#ifndef VBOX
    2930#include <sys/types.h>
    3031#include <strings.h>
     32#else  /* VBOX */
     33# include <iprt/string.h>
     34#endif /* VBOX */
    3135
    3236#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_strtab.h

    r53634 r53652  
    2828#define _DT_STRTAB_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
    3132
    3233#include <sys/types.h>
     34#endif
    3335
    3436#ifdef  __cplusplus
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_work.c

    r53634 r53652  
    2626 */
    2727
     28#ifndef VBOX
    2829#pragma ident   "%Z%%M% %I%     %E% SMI"
    2930
     
    3334#include <assert.h>
    3435#include <time.h>
     36#else  /* VBOX */
     37# include <dt_impl.h>
     38//# include <stddef.h>
     39//# include <time.h>
     40# include <iprt/semaphore.h>
     41#endif /* VBOX */
    3542
    3643static const struct {
     
    5259
    5360        hrtime_t earliest = INT64_MAX;
     61#ifndef VBOX
    5462        struct timespec tv;
     63#endif
    5564        hrtime_t now;
    5665        int i;
     
    7483        }
    7584
     85#ifndef VBOX
    7686        (void) pthread_mutex_lock(&dph->dph_lock);
     87#endif
    7788
    7889        now = gethrtime();
    7990
    8091        if (earliest < now) {
     92#ifndef VBOX
    8193                (void) pthread_mutex_unlock(&dph->dph_lock);
     94#endif
    8295                return; /* sleep duration has already past */
    8396        }
    8497
     98#ifndef VBOX
    8599        tv.tv_sec = (earliest - now) / NANOSEC;
    86100        tv.tv_nsec = (earliest - now) % NANOSEC;
     101#endif
    87102
    88103        /*
     
    91106         * awaken, iterate over any pending notifications and process them.
    92107         */
     108#ifndef VBOX
    93109        (void) pthread_cond_reltimedwait_np(&dph->dph_cv, &dph->dph_lock, &tv);
     110#else
     111        RTSemEventWait(dph->dph_event, (earliest - now) / RT_NS_1MS);
     112#endif
    94113
    95114        while ((dprn = dph->dph_notify) != NULL) {
     
    107126        }
    108127
     128#ifndef VBOX
    109129        (void) pthread_mutex_unlock(&dph->dph_lock);
     130#endif
    110131}
    111132
     
    124145
    125146        if (dtp->dt_laststatus != 0) {
    126                 if (now - dtp->dt_laststatus < interval)
     147                if (now - dtp->dt_laststatus < VBDTCAST(hrtime_t)interval)
    127148                        return (DTRACE_STATUS_NONE);
    128149
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_xlator.h

    r53634 r53652  
    2828#define _DT_XLATOR_H
    2929
     30#ifndef VBOX
    3031#pragma ident   "%Z%%M% %I%     %E% SMI"
     32#endif
    3133
    3234#include <libctf.h>
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dtrace.h

    r53646 r53652  
    3030#ifndef VBOX
    3131#pragma ident   "%Z%%M% %I%     %E% SMI"
    32 #endif
    3332
    3433#include <sys/dtrace.h>
    3534#include <stdarg.h>
    3635#include <stdio.h>
    37 #ifndef VBOX
    3836#include <gelf.h>
    39 #endif
     37#else  /* VBOX */
     38# include <sys/dtrace.h>
     39# include <stdio.h>
     40#endif /* VBOX */
    4041
    4142#ifdef  __cplusplus
     
    435436 * be flushed and not used subsequently by the client program.
    436437 */
    437 #ifndef VBOX
    438438
    439439#define DTRACE_OBJ_EXEC  ((const char *)0L)     /* primary executable file */
     
    451451        uint_t dto_flags;                       /* object flags (see below) */
    452452
     453#ifndef VBOX
    453454        GElf_Addr dto_text_va;                  /* address of text section */
    454455        GElf_Xword dto_text_size;               /* size of text section */
     
    457458        GElf_Addr dto_bss_va;                   /* address of BSS */
    458459        GElf_Xword dto_bss_size;                /* size of BSS */
     460#endif
    459461} dtrace_objinfo_t;
    460462
     
    473475} dtrace_syminfo_t;
    474476
     477#ifndef VBOX
    475478extern int dtrace_lookup_by_name(dtrace_hdl_t *, const char *, const char *,
    476479    GElf_Sym *, dtrace_syminfo_t *);
     
    576579extern int _dtrace_debug;
    577580
     581#ifdef VBOX
     582extern void dtrace_init(void);
     583#endif
     584
    578585#ifdef  __cplusplus
    579586}
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