memobj.h revision 588f763595b21d28ce311148a618cc4ead630558
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * InnoTek Portable Runtime - Ring-0 Memory Objects.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * available from http://www.virtualbox.org. This file is free software;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * General Public License as published by the Free Software Foundation,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * If you received this file as part of a commercial VirtualBox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * distribution, then only the terms of your commercial VirtualBox
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * license agreement apply instead of the previous paragraph.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/** @defgroup grp_rt_memobj_int Internals.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * @ingroup grp_rt_memobj
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * @internal
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Ring-0 memory object type.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /** The traditional invalid value. */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /** @name Primary types (parents)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /** RTR0MemObjAllocPage.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This memory is page aligned and fixed. */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /** RTR0MemObjAllocLow.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This memory is page aligned, fixed and is backed by physical memory below 4GB. */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /** RTR0MemObjAllocCont.
typedef struct RTR0MEMOBJINTERNAL
void *pv;
} Parent;
} Child;
} uRel;
unsigned iDummy;
} Page;
unsigned iDummy;
} Low;
} Cont;
} Lock;
bool fAllocated;
} Phys;
} ResVirt;
} Mapping;
case RTR0MEMOBJTYPE_MAPPING:
* @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object.
* @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object.
* @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object.
int rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, void *pv, size_t cb, RTR0PROCESS R0Process);
* @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified.
int rtR0MemObjNativeReserveKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment);
* @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified.
int rtR0MemObjNativeReserveUser(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment, RTR0PROCESS R0Process);
* @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified.
int rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, PRTR0MEMOBJINTERNAL pMemToMap, void *pvFixed, size_t uAlignment, unsigned fProt);
* @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified.
int rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, PRTR0MEMOBJINTERNAL pMemToMap, void *pvFixed, size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process);