VirtualBox

Changeset 58274 in vbox for trunk/include


Ignore:
Timestamp:
Oct 15, 2015 9:21:35 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
103465
Message:

iprt/mem.h: Allow ring-0 electric fencing on darwin.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/mem.h

    r57978 r58274  
    762762 * RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF is define.
    763763 */
     764/** @def RTR0MEMEF_NEW_AND_DELETE_OPERATORS_IOKIT
     765 * Defines the electric fence new and delete operators for an IOKit class when
     766 * RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF is define.
     767 *
     768 * This differs from RTMEMEF_NEW_AND_DELETE_OPERATORS in that the memory we
     769 * allocate is initialized to zero.  It is also assuming we don't have nothrow
     770 * variants and exceptions, so fewer variations.
     771 */
    764772#if defined(RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF) && !defined(RTMEM_NO_WRAP_SOME_NEW_AND_DELETE_TO_EF)
    765773# if defined(RT_EXCEPTIONS_ENABLED)
     
    852860        typedef int UsingElectricNewAndDeleteOperators
    853861# endif
     862# define RTR0MEMEF_NEW_AND_DELETE_OPERATORS_IOKIT() \
     863    void *operator new(size_t cb) \
     864    { \
     865        return RTMemEfAllocZ(cb, RTMEM_TAG, RT_SRC_POS); \
     866    } \
     867    void *operator new[](size_t cb) \
     868    { \
     869        return RTMemEfAllocZ(cb, RTMEM_TAG, RT_SRC_POS); \
     870    } \
     871    \
     872    void operator delete(void *pv) \
     873    { \
     874        RTMemEfFree(pv, RT_SRC_POS); \
     875    } \
     876    void operator delete[](void *pv) \
     877    { \
     878        RTMemEfFree(pv, RT_SRC_POS); \
     879    } \
     880    \
     881    typedef int UsingElectricNewAndDeleteOperators
    854882#else
    855883# define RTMEMEF_NEW_AND_DELETE_OPERATORS() \
     884        typedef int UsingDefaultNewAndDeleteOperators
     885# define RTR0MEMEF_NEW_AND_DELETE_OPERATORS_IOKIT() \
    856886        typedef int UsingDefaultNewAndDeleteOperators
    857887#endif
     
    863893 * Define RTMEM_WRAP_TO_EF_APIS to wrap RTMem APIs to RTMemEf APIs.
    864894 */
    865 #if defined(RTMEM_WRAP_TO_EF_APIS) && defined(IN_RING3) && !defined(RTMEM_NO_WRAP_TO_EF_APIS)
     895#if defined(RTMEM_WRAP_TO_EF_APIS) && !defined(RTMEM_NO_WRAP_TO_EF_APIS) \
     896 && ( defined(IN_RING3) || ( defined(IN_RING0) && !defined(IN_RING0_AGNOSTIC) && (defined(RT_OS_DARWIN) || 0) ) )
    866897# define RTMemTmpAllocTag(cb, pszTag)                   RTMemEfTmpAlloc((cb), (pszTag), RT_SRC_POS)
    867898# define RTMemTmpAllocZTag(cb, pszTag)                  RTMemEfTmpAllocZ((cb), (pszTag), RT_SRC_POS)
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