memobj.h revision fa7c9928985ad8dc74ae6931809083c2af135250
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * innotek Portable Runtime - Ring-0 Memory Objects.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Copyright (C) 2006-2007 innotek GmbH
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * available from http://www.virtualbox.org. This file is free software;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * you can redistribute it and/or modify it under the terms of the GNU
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * General Public License as published by the Free Software Foundation,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/** @defgroup grp_rt_memobj_int Internals.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * @ingroup grp_rt_memobj
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * @internal
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Ring-0 memory object type.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /** The traditional invalid value. */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /** @name Primary types (parents)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /** RTR0MemObjAllocPage.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This memory is page aligned and fixed. */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /** RTR0MemObjAllocLow.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This memory is page aligned, fixed and is backed by physical memory below 4GB. */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /** RTR0MemObjAllocCont.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This memory is page aligned, fixed and is backed by contiguous physical memory below 4GB. */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /** RTR0MemObjLockKernel, RTR0MemObjLockUser.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This memory is page aligned and fixed. It was locked/pinned/wired down by the API call. */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /** RTR0MemObjAllocPhys, RTR0MemObjEnterPhys.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This memory is physical memory, page aligned, contiguous and doesn't need to have a mapping. */
typedef struct RTR0MEMOBJINTERNAL
void *pv;
} Parent;
} Child;
} uRel;
unsigned iDummy;
} Page;
unsigned iDummy;
} Low;
} Cont;
} Lock;
bool fAllocated;
} Phys;
unsigned iDummy;
} PhysNC;
} ResVirt;
} Mapping;
case RTR0MEMOBJTYPE_MAPPING:
case RTR0MEMOBJTYPE_RES_VIRT:
case RTR0MEMOBJTYPE_LOCK:
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, RTR3PTR R3Ptr, 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 R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This matches uAlignment if specified.
int rtR0MemObjNativeReserveUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3PtrFixed, 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 R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This matches uAlignment if specified.