Mercurial > hg > xemacs-beta
comparison src/ntheap.h @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | 8de8e3f6228a |
comparison
equal
deleted
inserted
replaced
427:0a0253eac470 | 428:3ecd8885ac67 |
---|---|
1 /* Heap management routines (including unexec) for XEmacs on Windows NT. | |
2 Copyright (C) 1994 Free Software Foundation, Inc. | |
3 | |
4 This file is part of XEmacs. | |
5 | |
6 XEmacs is free software; you can redistribute it and/or modify it | |
7 under the terms of the GNU General Public License as published by the | |
8 Free Software Foundation; either version 2, or (at your option) any | |
9 later version. | |
10 | |
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with XEmacs; see the file COPYING. If not, write to the Free | |
18 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
19 02111-1307, USA. | |
20 | |
21 Geoff Voelker (voelker@cs.washington.edu) 7-29-94 */ | |
22 | |
23 /* Adapted for XEmacs by David Hobley <david@spook-le0.cia.com.au> */ | |
24 /* Synced with FSF Emacs 19.34.6 by Marc Paquette <marcpa@cam.org> */ | |
25 | |
26 #ifndef NTHEAP_H_ | |
27 #define NTHEAP_H_ | |
28 | |
29 #include <windows.h> | |
30 | |
31 /* | |
32 * Heap related stuff. | |
33 */ | |
34 #define get_reserved_heap_size() reserved_heap_size | |
35 #define get_committed_heap_size() (get_data_end () - get_data_start ()) | |
36 #define get_heap_start() get_data_start () | |
37 #define get_heap_end() get_data_end () | |
38 #define get_page_size() sysinfo_cache.dwPageSize | |
39 #define get_allocation_unit() sysinfo_cache.dwAllocationGranularity | |
40 #define get_processor_type() sysinfo_cache.dwProcessorType | |
41 #define get_nt_major_version() nt_major_version | |
42 #define get_nt_minor_version() nt_minor_version | |
43 | |
44 extern unsigned char *get_data_start(); | |
45 extern unsigned char *get_data_end(); | |
46 extern unsigned long data_region_size; | |
47 extern unsigned long reserved_heap_size; | |
48 extern SYSTEM_INFO sysinfo_cache; | |
49 extern int nt_major_version; | |
50 extern int nt_minor_version; | |
51 | |
52 /* To prevent zero-initialized variables from being placed into the bss | |
53 section, use non-zero values to represent an uninitialized state. */ | |
54 #define UNINIT_PTR ((void *) 0xF0A0F0A0) | |
55 #define UNINIT_LONG (0xF0A0F0A0L) | |
56 | |
57 enum { | |
58 OS_WIN95 = 1, | |
59 OS_NT | |
60 }; | |
61 | |
62 extern int os_subtype; | |
63 | |
64 /* Emulation of Unix sbrk(). */ | |
65 extern void *sbrk (unsigned long size); | |
66 | |
67 /* Recreate the heap created during dumping. */ | |
68 extern void recreate_heap (char *executable_path); | |
69 | |
70 /* Round the heap to this size. */ | |
71 extern void round_heap (unsigned long size); | |
72 | |
73 /* Load in the dumped .bss section. */ | |
74 extern void read_in_bss (char *name); | |
75 | |
76 /* Map in the dumped heap. */ | |
77 extern void map_in_heap (char *name); | |
78 | |
79 /* Cache system info, e.g., the NT page size. */ | |
80 extern void cache_system_info (void); | |
81 | |
82 /* Round ADDRESS up to be aligned with ALIGN. */ | |
83 extern unsigned char *round_to_next (unsigned char *address, | |
84 unsigned long align); | |
85 | |
86 /* ----------------------------------------------------------------- */ | |
87 /* Useful routines for manipulating memory-mapped files. */ | |
88 | |
89 typedef struct file_data { | |
90 CONST char *name; | |
91 unsigned long size; | |
92 HANDLE file; | |
93 HANDLE file_mapping; | |
94 unsigned char *file_base; | |
95 } file_data; | |
96 | |
97 #define OFFSET_TO_RVA(var,section) \ | |
98 (section->VirtualAddress + ((DWORD)(var) - section->PointerToRawData)) | |
99 | |
100 #define RVA_TO_OFFSET(var,section) \ | |
101 (section->PointerToRawData + ((DWORD)(var) - section->VirtualAddress)) | |
102 | |
103 #define RVA_TO_PTR(var,section,filedata) \ | |
104 ((void *)(RVA_TO_OFFSET(var,section) + (filedata).file_base)) | |
105 | |
106 int open_input_file (file_data *p_file, CONST char *name); | |
107 int open_output_file (file_data *p_file, CONST char *name, unsigned long size); | |
108 void close_file_data (file_data *p_file); | |
109 | |
110 #endif /* NTHEAP_H_ */ |