VirtualBox

Ignore:
Timestamp:
Jun 24, 2011 1:25:07 PM (13 years ago)
Author:
vboxsync
Message:

coredumper-solaris.*,tstRTCoreDump: Don't use RTFile*; rewrote testcase to use RTTest and not crash.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/solaris/coredumper-solaris.h

    r31980 r37631  
    11/* $Id$ */
    22/** @file
    3  * IPRT Testcase - Core dump, header.
     3 * IPRT - Custom Core Dumper, Solaris.
    44 */
    55
    66/*
    7  * Copyright (C) 2010 Oracle Corporation
     7 * Copyright (C) 2010-2011 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2525 */
    2626
    27 #include <iprt/process.h>
    28 #include <iprt/file.h>
     27#include <iprt/types.h>
    2928
    3029#ifdef RT_OS_SOLARIS
     
    6261#ifdef RT_OS_SOLARIS
    6362/**
    64  * VBOXSOLMAPINFO: Memory mapping description.
     63 * Memory mapping descriptor employed by the solaris core dumper.
    6564 */
    66 typedef struct VBOXSOLMAPINFO
     65typedef struct RTSOLCOREMAPINFO
    6766{
    68     prmap_t                         pMap;                       /* Proc description of this mapping */
    69     int                             fError;                     /* Any error reading this mapping (errno) */
    70     struct VBOXSOLMAPINFO          *pNext;                      /* Pointer to the next mapping */
    71 } VBOXSOLMAPINFO;
    72 typedef VBOXSOLMAPINFO *PVBOXSOLMAPINFO;
     67    prmap_t                         pMap;                       /**< Proc description of this mapping */
     68    int                             fError;                     /**< Any error reading this mapping (errno) */
     69    struct RTSOLCOREMAPINFO            *pNext;                      /**< Pointer to the next mapping */
     70} RTSOLCOREMAPINFO;
     71/** Pointer to a solaris memory mapping descriptor. */
     72typedef RTSOLCOREMAPINFO *PRTSOLCOREMAPINFO;
    7373
    7474/**
    75  * VBOXSOLCORETYPE: Whether this is an old or new style core.
     75 * Whether this is an old or new style solaris core.
    7676 */
    77 typedef enum VBOXSOLCORETYPE
     77typedef enum RTSOLCORETYPE
    7878{
    79     enmOldEra       = 0x01d,        /* old */
    80     enmNewEra       = 0x5c1f1       /* sci-fi */
    81 } VBOXSOLCORETYPE;
     79    enmOldEra = 0x01d,   /**< old */
     80    enmNewEra = 0x5c1f1  /**< sci-fi */
     81} RTSOLCORETYPE;
    8282
    8383/**
    84  * VBOXSOLTHREADINFO: Per-Thread information.
     84 * Per-Thread information employed by the solaris core dumper.
    8585 */
    86 typedef struct VBOXSOLTHREADINFO
     86typedef struct RTSOLCORETHREADINFO
    8787{
    88     lwpsinfo_t                      Info;                       /* Proc description of this thread */
    89     lwpstatus_t                    *pStatus;                    /* Proc description of this thread's status (can be NULL, zombie lwp) */
    90     struct VBOXSOLTHREADINFO       *pNext;                      /* Pointer to the next thread */
    91 } VBOXSOLTHREADINFO;
    92 typedef VBOXSOLTHREADINFO *PVBOXSOLTHREADINFO;
     88    lwpsinfo_t                      Info;                       /**< Proc description of this thread */
     89    lwpstatus_t                    *pStatus;                    /**< Proc description of this thread's status (can be NULL, zombie lwp) */
     90    struct RTSOLCORETHREADINFO     *pNext;                      /**< Pointer to the next thread */
     91} RTSOLCORETHREADINFO;
     92typedef RTSOLCORETHREADINFO *PRTSOLCORETHREADINFO;
    9393#endif
    9494
    9595
    9696/**
    97  * VBOXPROCESS: Current (also the core target) process information.
     97 * Current (also the core target) process information.
    9898 */
    99 typedef struct VBOXPROCESS
     99typedef struct RTSOLCOREPROCESS
    100100{
    101     RTPROCESS                       Process;                    /* The pid of the process */
    102     char                            szExecPath[PATH_MAX];       /* Path of the executable */
    103     char                           *pszExecName;                /* Name of the executable file */
     101    RTPROCESS                       Process;                    /**< The pid of the process */
     102    char                            szExecPath[PATH_MAX];       /**< Path of the executable */
     103    char                           *pszExecName;                /**< Name of the executable file */
    104104#ifdef RT_OS_SOLARIS
    105     psinfo_t                        ProcInfo;                   /* Process info. */
    106     prpsinfo_t                      ProcInfoOld;                /* Process info. Older version (for GDB compat.) */
    107     pstatus_t                       ProcStatus;                 /* Process status info. */
    108     thread_t                        hCurThread;                 /* The current thread */
    109     ucontext_t                     *pCurThreadCtx;              /* Context info. of current thread before starting to dump */
    110     RTFILE                          hAs;                        /* proc/<pid/as file handle */
    111     auxv_t                         *pAuxVecs;                   /* Aux vector of process */
    112     int                             cAuxVecs;                   /* Number of aux vector entries */
    113     PVBOXSOLMAPINFO                 pMapInfoHead;               /* Pointer to the head of list of mappings */
    114     uint32_t                        cMappings;                  /* Number of mappings (count of pMapInfoHead list) */
    115     PVBOXSOLTHREADINFO              pThreadInfoHead;            /* Pointer to the head of list of threads */
    116     uint64_t                        cThreads;                   /* Number of threads (count of pThreadInfoHead list) */
    117     char                            szPlatform[SYS_NMLN];       /* Platform name  */
    118     char                            szZoneName[ZONENAME_MAX];   /* Zone name */
    119     struct utsname                  UtsName;                    /* UTS name */
    120     void                           *pvCred;                     /* Process credential info. */
    121     size_t                          cbCred;                     /* Size of process credential info. */
    122     void                           *pvLdt;                      /* Process LDT info. */
    123     size_t                          cbLdt;                      /* Size of the LDT info. */
    124     prpriv_t                       *pPriv;                      /* Process privilege info. */
    125     size_t                          cbPriv;                     /* Size of process privilege info. */
    126     const priv_impl_info_t         *pcPrivImpl;                 /* Process privilege implementation info. (opaque handle) */
    127     core_content_t                  CoreContent;                /* What information goes in the core */
     105    psinfo_t                        ProcInfo;                   /**< Process info. */
     106    prpsinfo_t                      ProcInfoOld;                /**< Process info. Older version (for GDB compat.) */
     107    pstatus_t                       ProcStatus;                 /**< Process status info. */
     108    thread_t                        hCurThread;                 /**< The current thread */
     109    ucontext_t                     *pCurThreadCtx;              /**< Context info. of current thread before starting to dump */
     110    int                             fdAs;                       /**< proc/pid/as file handle */
     111    auxv_t                         *pAuxVecs;                   /**< Aux vector of process */
     112    int                             cAuxVecs;                   /**< Number of aux vector entries */
     113    PRTSOLCOREMAPINFO               pMapInfoHead;               /**< Pointer to the head of list of mappings */
     114    uint32_t                        cMappings;                  /**< Number of mappings (count of pMapInfoHead list) */
     115    PRTSOLCORETHREADINFO            pThreadInfoHead;            /**< Pointer to the head of list of threads */
     116    uint64_t                        cThreads;                   /**< Number of threads (count of pThreadInfoHead list) */
     117    char                            szPlatform[SYS_NMLN];       /**< Platform name  */
     118    char                            szZoneName[ZONENAME_MAX];   /**< Zone name */
     119    struct utsname                  UtsName;                    /**< UTS name */
     120    void                           *pvCred;                     /**< Process credential info. */
     121    size_t                          cbCred;                     /**< Size of process credential info. */
     122    void                           *pvLdt;                      /**< Process LDT info. */
     123    size_t                          cbLdt;                      /**< Size of the LDT info. */
     124    prpriv_t                       *pPriv;                      /**< Process privilege info. */
     125    size_t                          cbPriv;                     /**< Size of process privilege info. */
     126    const priv_impl_info_t         *pcPrivImpl;                 /**< Process privilege implementation info. (opaque handle) */
     127    core_content_t                  CoreContent;                /**< What information goes in the core */
    128128#else
    129129# error Port Me!
    130130#endif
    131131
    132 } VBOXPROCESS;
    133 typedef VBOXPROCESS *PVBOXPROCESS;
     132} RTSOLCOREPROCESS;
     133typedef RTSOLCOREPROCESS *PRTSOLCOREPROCESS;
    134134
    135 typedef int (*PFNCOREREADER)(RTFILE hFile, void *pv, size_t cb);
    136 typedef int (*PFNCOREWRITER)(RTFILE hFile, const void *pcv, size_t cb);
     135typedef int (*PFNRTCOREREADER)(int fdFile, void *pv, size_t cb);
     136typedef int (*PFNRTCOREWRITER)(int fdhFile, const void *pcv, size_t cb);
    137137
    138138/**
    139  * VBOXCORE: Core file object.
     139 * The solaris core file object.
    140140 */
    141 typedef struct VBOXCORE
     141typedef struct RTSOLCORE
    142142{
    143     char                            szCorePath[PATH_MAX];       /* Path of the core file */
    144     VBOXPROCESS                     VBoxProc;                   /* Current process information */
    145     void                           *pvCore;                     /* Pointer to memory area during dumping */
    146     size_t                          cbCore;                     /* Size of memory area during dumping */
    147     void                           *pvFree;                     /* Pointer to base of free range in preallocated memory area */
    148     bool                            fIsValid;                   /* Whether core information has been fully collected */
    149     PFNCOREREADER                   pfnReader;                  /* Reader function */
    150     PFNCOREWRITER                   pfnWriter;                  /* Writer function */
    151     RTFILE                          hCoreFile;                  /* Core file (used only while writing the core) */
    152     RTFOFF                          offWrite;                   /* Segment/section offset (used only while writing the core) */
    153 } VBOXCORE;
    154 typedef VBOXCORE *PVBOXCORE;
     143    char                            szCorePath[PATH_MAX];       /**< Path of the core file */
     144    RTSOLCOREPROCESS                SolProc;                    /**< Current process information */
     145    void                           *pvCore;                     /**< Pointer to memory area during dumping */
     146    size_t                          cbCore;                     /**< Size of memory area during dumping */
     147    void                           *pvFree;                     /**< Pointer to base of free range in preallocated memory area */
     148    bool                            fIsValid;                   /**< Whether core information has been fully collected */
     149    PFNRTCOREREADER                 pfnReader;                  /**< Reader function */
     150    PFNRTCOREWRITER                 pfnWriter;                  /**< Writer function */
     151    int                             fdCoreFile;                 /**< Core file (used only while writing the core) */
     152    RTFOFF                          offWrite;                   /**< Segment/section offset (used only while writing the core) */
     153} RTSOLCORE;
     154typedef RTSOLCORE *PRTSOLCORE;
    155155
    156 typedef int (*PFNCOREACCUMULATOR)(PVBOXCORE pVBoxCore);
    157 typedef int (*PFNCORETHREADWORKER)(PVBOXCORE pVBoxCore, void *pvThreadInfo);
     156typedef int (*PFNRTSOLCOREACCUMULATOR)(PRTSOLCORE pSolCore);
     157typedef int (*PFNRTSOLCORETHREADWORKER)(PRTSOLCORE pSolCore, void *pvThreadInfo);
    158158
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