source: trunk/src/win32k/include/OS2KVM.h@ 4164

Last change on this file since 4164 was 4164, checked in by bird, 25 years ago

Merged in the Grace branch. New Win32k!

File size: 4.2 KB
Line 
1/* $Id: OS2KVM.h,v 1.5 2000-09-02 21:08:00 bird Exp $
2 *
3 * OS/2 kernel VM functions.
4 *
5 * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
6 *
7 * Project Odin Software License can be found in LICENSE.TXT
8 *
9 */
10
11
12#ifndef _OS2KVM_h_
13#define _OS2KVM_h_
14
15/*******************************************************************************
16* Defined Constants And Macros *
17*******************************************************************************/
18/*
19 * VMAlloc flFlag1 guessings
20 */
21#define VMA_CONTIG 0x00000001 /* VMDHA_CONTIG */
22#define VMA_WRITE 0x00000002 /* PAG_WRITE and OB_WRITE */
23#define VMA_USER 0x00000004 /* OB_USER */
24#define VMA_EXECUTE 0x00000008 /* PAG_EXECUTE and OB_READ !! */
25#define VMA_READ 0x00000010 /* PAG_READ and OB_EXEC !! */
26#define VMA_LOWMEM 0x00000020 /* OB_LOWMEM < 1MB physical */
27#define VMA_GUARD 0x00000040 /* PAG_GUARD and VMDHA_16M and OB_GUARD */
28#if 0
29#define VMA_RESIDENT 0x00000080 /* OB_RESIDENT */
30#define VMA_ZEROINIT 0x00000100 /* OB_ZEROINIT */
31#define VMA_PHYS 0x00000200 /* VMDHA_PHYS */
32#define VMA_FIXED 0x00000400 /* VMDHA_FIXED and OB_SHARED */
33#else
34#define VMA_ZEROFILL 0x00000080
35#define VMA_SWAPONWRITE 0x00000100
36#define VMA_UVIRT 0x00000200 /* VMDHA_PHYS */
37#define VMA_RESIDENT 0x00000400 /* VMDHA_FIXED and OB_SHARED */
38#endif
39#define VMA_DISCARDABLE 0x00000800 /* discarable object */
40#define VMA_SHARE 0x00001000 /* OBJSHARE and OBJEXEC (which implies shared) */
41#define VMA_PROTECTED 0x00004000 /* PAG_PROTECTED */
42#define VMA_LOWMEM2 0x00010000 /* OB_LOWMEM */
43#define VMA_VDM 0x00040000 /* VDM */
44#define VMA_DECOMMIT 0x00080000 /* PAG_DECOMMIT */
45#define VMA_TILE 0x00400000 /* OBJ_TILE */
46#define VMA_SELALLOC 0x00400000 /* Allocates selector */
47#define VMA_SHRINKABLE 0x00800000 /* OB_SHRINKABLE */
48#define VMA_HUGH 0x01000000 /* OB_HUGH */
49
50#define VMA_ARENASHARED 0x04000000 /* Shared Arena */
51#define VMA_ARENASYSTEM 0x00000000 /* System Arena */
52#define VMA_ARENAPRIVATE 0x02000000 /* Private Arena */
53#define VMA_ARENAHEAP 0x06000000 /* Heap Arena */
54#define VMA_ARENAHIGHA 0x00008000 /* High shared arena (Warp >= fp13) */
55#define VMA_ARENAHIGH (options.ulBuild >= MERLINFP13 ? VMA_ARENAHIGHA : 0UL)
56#define VMA_ARENAMASKW 0x06000000 /* Warp < fp13 Arena Mask */
57#define VMA_ARENAMASKA 0x06008000 /* Aurora Arena Mask */
58#define VMA_ARENAMASK (options.ulBuild >= MERLINFP13 ? VMA_ARENAMASKA : VMA_ARENAMASKW)
59
60#define VMA_LOCMASK 0xC0000000 /* Location mask */
61#define VMA_LOCSPECIFIC 0x80000000 /* Specific location */
62#define VMA_LOCABOVE 0x40000000 /* Above or equal to specified location */
63#define VMA_LOCANY 0x00000000 /* Anywhere */
64
65
66
67/*
68 * VMAlloc flFlags2 guessings
69 */
70#define VMAF2_WRITE 0x00000002 /* PAG_WRITE */
71
72
73/*******************************************************************************
74* Structures and Typedefs *
75*******************************************************************************/
76typedef struct _vmac
77{
78 ULONG ac_va; /* off=0 cb=4 Virtual Address. */
79 USHORT ac_sel; /* off=4 cb=2 Selector. */
80 USHORT ac_hob; /* off=6 cb=2 Object handle. */
81} VMAC, *PVMAC;
82
83
84/*******************************************************************************
85* Exported Functions *
86*******************************************************************************/
87HMTE KRNLCALL VMGetOwner(
88 ULONG ulCS,
89 ULONG ulEIP);
90
91APIRET KRNLCALL VMAllocMem(
92 ULONG cbSize,
93 ULONG cbCommit,
94 ULONG flFlags1,
95 HPTDA hPTDA,
96 USHORT usVMOwnerId,
97 HMTE hMTE,
98 ULONG flFlags2,
99 ULONG SomeArg2,
100 PVMAC pvmac);
101
102APIRET KRNLCALL VMObjHandleInfo(
103 USHORT usHob,
104 PULONG pulAddr,
105 PUSHORT pushPTDA);
106
107PMTE KRNLCALL VMPseudoHandleMap(
108 HMTE hMTE);
109#endif
Note: See TracBrowser for help on using the repository browser.