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

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

Moved ldrCalls.h into the OS2Krnl.h tree as OS2KLDR.h.
Also moved the Ldr definitions from OS2Krnl.h and into OS2KLDR.h.

File size: 7.3 KB
Line 
1/* $Id: OS2KVM.h,v 1.9 2001-02-10 11:11:43 bird Exp $
2 *
3 * OS/2 kernel VM functions.
4 *
5 * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@mynd.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/*******************************************************************************
17* Defined Constants And Macros *
18*******************************************************************************/
19
20/*
21 * From SG24-4640-00
22 * Object flags. (ob_fs)
23 */
24#define OB_PSEUDO 0x8000 /* Pseudo-object */
25#define OB_API 0x4000 /* API allocated object */
26#define OB_LOCKWAIT 0x2000 /* Some thread to wake in VMUnlock */
27#define OB_LALIAS 0x1000 /* Object has aliases */
28#define OB_SHARED 0x0800 /* Object's contents are shared */
29#define OB_UVIRT 0x0400 /* UVirt object */
30#define OB_ZEROINIT 0x0200 /* Object is zero-initialized */
31#define OB_RESIDENT 0x0100 /* Initial allocation was resident */
32#define OB_LOWMEM 0x0040 /* Object is in low memory */
33#define OB_GUARD 0x0080 /* Page attribute/permission flags */
34#define OB_EXEC 0x0020 /* Executable */
35#define OB_READ 0x0010 /* Read permission */
36#define OB_USER 0x0008 /* User Storage */
37#define OB_WRITE 0x0004 /* Write permission */
38#define OB_HUGE 0x0002 /* Object is huge */
39#define OB_SHRINKABLE 0x0001 /* Object is Shrinkable */
40#define OB_DHSETMEM 0x0001 /* DevHlp_VMSetMems are allowed */
41
42
43/*
44 * From SG24-4640-00
45 * ob_xflags
46 */
47#define VMOB_SLOCK_WAIT 0x01 /* Waiting on short term locks to clear */
48#define VMOB_LLOCK_WAIT 0x02 /* Waiting on long term locks to clear */
49#define VMOB_DISC_SEG 0x04 /* Object is part of a discardable seg */
50#define VMOB_HIGHMEM 0x08 /* Object was allocated via dh_vmalloc */
51
52
53
54/* v8086.h */
55#define VM_PG_W 0x00000002 /* VPMPG_W - Page Writeable. */
56#define VM_PG_U 0x00000004 /* VPMPG_U - Page User Mode Accessible.*/
57#define VM_PG_X 0x00000008 /* VPMPG_X - Page Executable. */
58#define VM_PG_R 0x00000010 /* VPMPG_R - Page Readable. */
59#define VM_PG_RESERVED 0x00001000 /* VPMPG_RESERVED- Reservered */
60
61/* vpmx2.h */
62#define VM_PG_SWAPPABLE 0x00000000 /* Swappable */
63
64
65
66/*
67 * VMAlloc flFlag1 guessings
68 */
69#define VMA_CONTIG 0x00000001UL /* VMDHA_CONTIG */
70#define VMA_WRITE VM_PG_W /* PAG_WRITE and OB_WRITE */
71#define VMA_USER VM_PG_U /* OB_USER */
72#define VMA_EXECUTE VM_PG_X /* PAG_EXECUTE and OB_READ !! */
73#define VMA_READ VM_PG_R /* PAG_READ and OB_EXEC !! */
74#define VMA_LOWMEM 0x00000020UL /* OB_LOWMEM < 1MB physical */
75#define VMA_GUARD 0x00000040UL /* PAG_GUARD and VMDHA_16M and OB_GUARD */
76#if 0
77#define VMA_RESIDENT 0x00000080UL /* OB_RESIDENT */
78#define VMA_ZEROINIT 0x00000100UL /* OB_ZEROINIT */
79#define VMA_PHYS 0x00000200UL /* VMDHA_PHYS */
80#define VMA_FIXED 0x00000400UL /* VMDHA_FIXED and OB_SHARED */
81#else
82#define VMA_ZEROFILL 0x00000080UL
83#define VMA_SWAPONWRITE 0x00000100UL
84#define VMA_UVIRT 0x00000200UL /* VMDHA_PHYS */
85#define VMA_RESIDENT 0x00000400UL /* VMDHA_FIXED and OB_SHARED */
86#endif
87#define VMA_DISCARDABLE 0x00000800UL /* discarable object */
88#define VMA_SHARE 0x00001000UL /* OBJSHARE and OBJEXEC (which implies shared) */
89#define VMA_PROTECTED 0x00004000UL /* PAG_PROTECTED */
90#define VMA_LOWMEM2 0x00010000UL /* OB_LOWMEM */
91#define VMA_VDM 0x00040000UL /* (VPMVMAC_VDM) VDM allocation */
92#define VMA_DECOMMIT 0x00080000UL /* PAG_DECOMMIT */
93#define VMA_TILE 0x00400000UL /* OBJ_TILE */
94#define VMA_SELALLOC 0x00400000UL /* Allocates selector */
95#define VMA_SHRINKABLE 0x00800000UL /* OB_SHRINKABLE */
96#define VMA_HUGH 0x01000000UL /* OB_HUGH */
97
98#define VMA_ARENASHARED 0x04000000UL /* Shared Arena */
99#define VMA_ARENASYSTEM 0x00000000UL /* System Arena */
100#define VMA_ARENAPRIVATE 0x02000000UL /* (VPMVMAC_ARENAPRV) Private Arena */
101#define VMA_ARENAHEAP 0x06000000UL /* Heap Arena */
102#define VMA_ARENAHIGHA 0x00008000UL /* High shared arena (Warp >= fp13) */
103#define VMA_ARENAHIGH (options.ulBuild >= AURORAGA ? VMA_ARENAHIGHA : 0UL)
104#define VMA_ARENAMASKW 0x06000000UL /* Warp < fp13 Arena Mask */
105#define VMA_ARENAMASKA 0x06008000UL /* Aurora Arena Mask */
106#define VMA_ARENAMASK (options.ulBuild >= AURORAGA ? VMA_ARENAMASKA : VMA_ARENAMASKW)
107
108#define VMA_ALIGNSEL 0x10000000UL /* Selector aligment */
109#define VMA_ALIGNPAGE 0x18000000UL /* (VPMVMAC_ALIGNPAGE) Page alignment */
110
111#define VMA_LOCMASK 0xC0000000UL /* Location mask */
112#define VMA_LOCSPECIFIC 0x80000000UL /* (VPMVMAC_LOCSPECIFIC) Specific location */
113#define VMA_LOCABOVE 0x40000000UL /* (VPMVMAC_LOCABOVE) Above or equal to specified location */
114#define VMA_LOCANY 0x00000000UL /* Anywhere */
115
116
117
118/*
119 * VMAlloc flFlags2 guessings
120 */
121#if 0 /*???*/
122#define VDHAM_FIXED 0x0000UL
123#define VDHAM_SWAPPABLE 0x0001UL
124#define VPMVMFM_VDM 0x00000004UL /* Request on behalf of VDM */
125#endif
126
127#define VMAF2_WRITE 0x00000002UL /* PAG_WRITE */
128
129
130/*
131 * VMMapDebugAlias flags.
132 */
133#define VMMDA_ARENAPRIVATE 0 /* Create alias in private arena */
134#define VMMDA_ARENASYSTEM 4 /* Create alias in system arena */
135#define VMMDA_READONLY 1 /* Create readonly alias */
136
137
138
139/*******************************************************************************
140* Structures and Typedefs *
141*******************************************************************************/
142typedef struct _vmac
143{
144 ULONG ac_va; /* off=0 cb=4 Virtual Address. */
145 USHORT ac_sel; /* off=4 cb=2 Selector. */
146 USHORT ac_hob; /* off=6 cb=2 Object handle. */
147} VMAC, *PVMAC;
148
149
150/*******************************************************************************
151* Exported Functions *
152*******************************************************************************/
153HMTE KRNLCALL VMGetOwner(
154 ULONG ulCS,
155 ULONG ulEIP);
156
157APIRET KRNLCALL VMAllocMem(
158 ULONG cbSize,
159 ULONG cbCommit,
160 ULONG flFlags1,
161 HPTDA hPTDA,
162 USHORT usVMOwnerId,
163 HMTE hMTE,
164 ULONG flFlags2,
165 ULONG SomeArg2,
166 PVMAC pvmac);
167
168APIRET KRNLCALL VMFreeMem(
169 ULONG ulAddress,
170 HPTDA hPTDA,
171 ULONG flFlags);
172
173APIRET KRNLCALL VMMapDebugAlias(
174 ULONG flVMFlags,
175 ULONG ulAddress,
176 ULONG cbSize,
177 HPTDA hPTDA,
178 PVMAC pvmac);
179
180APIRET KRNLCALL VMObjHandleInfo(
181 USHORT usHob,
182 PULONG pulAddr,
183 PUSHORT pushPTDA);
184
185#ifdef _OS2KLDR_H_
186PMTE KRNLCALL VMPseudoHandleMap(
187 HMTE hMTE);
188#endif
189
190#endif
Note: See TracBrowser for help on using the repository browser.