Began seperation of machine-dependant/independant sections of memory
[reactos.git] / reactos / ntoskrnl / mm / aspace.c
1 /* $Id: aspace.c,v 1.2 2000/04/07 02:24:00 dwelch Exp $
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/mm/aspace.c
6 * PURPOSE: Manages address spaces
7 * PROGRAMMER: David Welch (welch@cwcom.net)
8 * UPDATE HISTORY:
9 * Created 22/05/98
10 */
11
12 /* INCLUDES *****************************************************************/
13
14 #include <ddk/ntddk.h>
15 #include <internal/mm.h>
16
17 #include <internal/debug.h>
18
19 /* GLOBALS ******************************************************************/
20
21 static MADDRESS_SPACE KernelAddressSpace;
22
23 /* FUNCTIONS *****************************************************************/
24
25 VOID MmLockAddressSpace(PMADDRESS_SPACE AddressSpace)
26 {
27 (VOID)KeWaitForMutexObject(&AddressSpace->Lock,
28 0,
29 KernelMode,
30 FALSE,
31 NULL);
32 }
33
34 VOID MmUnlockAddressSpace(PMADDRESS_SPACE AddressSpace)
35 {
36 KeReleaseMutex(&AddressSpace->Lock, FALSE);
37 }
38
39 VOID MmInitializeKernelAddressSpace(VOID)
40 {
41 MmInitializeAddressSpace(NULL, &KernelAddressSpace);
42 KernelAddressSpace.LowestAddress = KERNEL_BASE;
43 }
44
45 PMADDRESS_SPACE MmGetCurrentAddressSpace(VOID)
46 {
47 return(&PsGetCurrentProcess()->Pcb.AddressSpace);
48 }
49
50 PMADDRESS_SPACE MmGetKernelAddressSpace(VOID)
51 {
52 return(&KernelAddressSpace);
53 }
54
55 NTSTATUS MmInitializeAddressSpace(PEPROCESS Process,
56 PMADDRESS_SPACE AddressSpace)
57 {
58 InitializeListHead(&AddressSpace->MAreaListHead);
59 KeInitializeMutex(&AddressSpace->Lock, 1);
60 AddressSpace->LowestAddress = MM_LOWEST_USER_ADDRESS;
61 AddressSpace->Process = Process;
62 return(STATUS_SUCCESS);
63 }
64
65 NTSTATUS MmDestroyAddressSpace(PMADDRESS_SPACE AddressSpace)
66 {
67 return(STATUS_SUCCESS);
68 }