Mercurial > emacs
annotate src/w32heap.h @ 105813:df4934f25eef
* textmodes/two-column.el (2C-split):
* textmodes/texnfo-upd.el (texinfo-multi-file-included-list):
* textmodes/tex-mode.el (tex-set-buffer-directory):
* textmodes/spell.el (spell-region, spell-string):
* textmodes/reftex.el (reftex-erase-buffer):
(reftex-get-file-buffer-force, reftex-kill-temporary-buffers):
* textmodes/reftex-toc.el (reftex-toc-promote-action):
* textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct)
(reftex-select-item):
* textmodes/reftex-ref.el (reftex-label-info-update)
(reftex-offer-label-menu):
* textmodes/reftex-index.el (reftex-index-change-entry)
(reftex-index-phrases-info):
* textmodes/reftex-global.el (reftex-create-tags-file)
(reftex-save-all-document-buffers, reftex-ensure-write-access):
* textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite)
(reftex-view-crossref-from-bibtex):
* textmodes/reftex-cite.el (reftex-bibtex-selection-callback)
(reftex-extract-bib-entries-from-thebibliography)
(reftex-all-used-citation-keys, reftex-create-bibtex-file):
* textmodes/refbib.el (r2b-capitalize-title):
(r2b-convert-buffer, r2b-help):
* textmodes/page-ext.el (pages-directory)
(pages-directory-goto-with-mouse):
* textmodes/bibtex.el (bibtex-validate-globally):
* textmodes/bib-mode.el (bib-capitalize-title):
* textmodes/artist.el (artist-clear-buffer, artist-system):
* progmodes/xscheme.el (global-set-scheme-interaction-buffer):
(local-set-scheme-interaction-buffer, xscheme-process-filter)
(verify-xscheme-buffer, xscheme-enter-interaction-mode)
(xscheme-enter-debugger-mode, xscheme-debugger-mode-p)
(xscheme-send-control-g-interrupt, xscheme-start-process)
(xscheme-process-sentinel, xscheme-cd):
* progmodes/verilog-mode.el (verilog-read-always-signals)
(verilog-set-define, verilog-getopt-file)
(verilog-module-inside-filename-p):
* progmodes/sh-script.el:
* progmodes/python.el (python-pdbtrack-get-source-buffer)
(python-pdbtrack-grub-for-buffer, python-execute-file):
* progmodes/octave-inf.el (inferior-octave):
* progmodes/idlwave.el (idlwave-scan-user-lib-files)
(idlwave-shell-compile-helper-routines, idlwave-set-local)
(idlwave-display-completion-list-xemacs, idlwave-list-abbrevs)
(idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows)
(idlwave-completion-fontify-classes, idlwave-display-calling-sequence):
* progmodes/idlw-shell.el (idlwave-shell-examine-display-clear)
(idlwave-shell-filter, idlwave-shell-examine-highlight)
(idlwave-shell-sentinel, idlwave-shell-filter-directory)
(idlwave-shell-display-line, idlwave-shell-set-bp-in-module)
(idlwave-shell-examine-display, idlwave-shell-run-region)
(idlwave-shell-filter-bp, idlwave-shell-save-and-action)
(idlwave-shell-sources-filter, idlwave-shell-goto-next-error):
* progmodes/idlw-help.el (idlwave-help-get-special-help)
(idlwave-help-get-help-buffer):
* progmodes/gud.el (gud-basic-call, gud-find-class)
(gud-tooltip-activate-mouse-motions-if-enabled):
* progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe):
* progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as)
(ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file)
(ebrowse-tags-next-file):
* progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps)
(ebnf-eps-production-list, ebnf-begin-file, ebnf-log)
(ebnf-eps-finish-and-write):
* progmodes/cpp.el (cpp-edit-save):
* progmodes/cperl-mode.el (cperl-pod-to-manpage):
* progmodes/cc-defs.el (c-emacs-features):
* progmodes/antlr-mode.el (antlr-invalidate-context-cache)
(antlr-directory-dependencies):
* progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name)
(ada-run-application, ada-find-in-src-path, ada-goto-parent)
(ada-find-any-references, ada-make-filename-from-adaname)
(ada-make-body-gnatstub):
* obsolete/rnews.el (news-list-news-groups):
* obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file):
* obsolete/iso-acc.el (iso-acc-minibuf-setup):
* net/rcirc.el (rcirc-debug):
* net/newst-treeview.el (newsticker--treeview-list-add-item)
(newsticker--treeview-list-clear, newsticker-treeview-browse-url)
(newsticker--treeview-list-update-faces, newsticker-treeview-save)
(newsticker--treeview-item-show-text, newsticker--treeview-item-show)
(newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init)
(newsticker-treeview-show-item, newsticker--treeview-unfold-node)
(newsticker--treeview-list-clear-highlight)
(newsticker--treeview-list-update-highlight)
(newsticker--treeview-list-highlight-start)
(newsticker--treeview-tree-update-highlight)
(newsticker--treeview-get-selected-item)
(newsticker-treeview-mark-list-items-old)
(newsticker--treeview-set-current-node):
* net/newst-plainview.el (newsticker--buffer-set-uptodate):
* net/newst-backend.el (newsticker--get-news-by-funcall)
(newsticker--get-news-by-wget, newsticker--image-get)
(newsticker--image-sentinel):
* net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field):
* net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session):
(eudc-ph-close-session):
* net/eudc.el (eudc-save-options):
* language/thai-word.el (thai-update-word-table):
* language/japan-util.el (japanese-string-conversion):
* international/titdic-cnv.el (tsang-quick-converter)
(ziranma-converter, ctlau-converter):
* international/mule-cmds.el (describe-language-environment):
* international/ja-dic-cnv.el (skkdic-convert-okuri-ari)
(skkdic-convert-postfix, skkdic-convert-prefix):
(skkdic-convert-okuri-nasi, skkdic-convert):
* emacs-lisp/re-builder.el (reb-update-overlays):
* emacs-lisp/pp.el (pp-to-string, pp-display-expression):
* emacs-lisp/gulp.el (gulp-send-requests):
* emacs-lisp/find-gc.el (trace-call-tree):
* emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class)
(eieio-describe-generic):
* emacs-lisp/eieio-base.el (eieio-persistent-read):
* emacs-lisp/edebug.el (edebug-outside-excursion):
* emacs-lisp/debug.el (debugger-make-xrefs):
* emacs-lisp/cust-print.el (custom-prin1-to-string):
* emacs-lisp/chart.el (chart-new-buffer):
* emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log):
Use with-current-buffer.
* textmodes/artist.el (artist-system): Don't call
copy-sequence on a fresh string.
* progmodes/idlw-shell.el (easymenu setup): Use dolist.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 31 Oct 2009 02:38:34 +0000 |
parents | e038c1a8307c |
children | 1d1d5d9bd884 |
rev | line source |
---|---|
9803 | 1 /* Heap management routines (including unexec) for GNU Emacs on Windows NT. |
75227
e90d04cd455a
Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents:
68651
diff
changeset
|
2 Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, |
100951 | 3 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
9803 | 4 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11944
diff
changeset
|
5 This file is part of GNU Emacs. |
9803 | 6 |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79759
diff
changeset
|
7 GNU Emacs is free software: you can redistribute it and/or modify |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11944
diff
changeset
|
8 it under the terms of the GNU General Public License as published by |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79759
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79759
diff
changeset
|
10 (at your option) any later version. |
9803 | 11 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11944
diff
changeset
|
12 GNU Emacs is distributed in the hope that it will be useful, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11944
diff
changeset
|
13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11944
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11944
diff
changeset
|
15 GNU General Public License for more details. |
9803 | 16 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11944
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
95011
a1e7d73546c4
Fix typo in previous change.
Juanma Barranquero <lekktu@gmail.com>
parents:
94994
diff
changeset
|
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
9803 | 19 |
20 Geoff Voelker (voelker@cs.washington.edu) 7-29-94 | |
21 */ | |
22 | |
23 #ifndef NTHEAP_H_ | |
24 #define NTHEAP_H_ | |
25 | |
26 #include <windows.h> | |
27 | |
24104 | 28 #define ROUND_UP(p, align) (((DWORD)(p) + (align)-1) & ~((align)-1)) |
29 #define ROUND_DOWN(p, align) ((DWORD)(p) & ~((align)-1)) | |
30 | |
9803 | 31 /* |
32 * Heap related stuff. | |
33 */ | |
11944
89ccf3b3208d
(get_data_region_base): Undefined.
Geoff Voelker <voelker@cs.washington.edu>
parents:
9803
diff
changeset
|
34 #define get_reserved_heap_size() reserved_heap_size |
9803 | 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 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
41 #define get_w32_major_version() w32_major_version |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
42 #define get_w32_minor_version() w32_minor_version |
9803 | 43 |
44 extern unsigned char *get_data_start(); | |
45 extern unsigned char *get_data_end(); | |
11944
89ccf3b3208d
(get_data_region_base): Undefined.
Geoff Voelker <voelker@cs.washington.edu>
parents:
9803
diff
changeset
|
46 extern unsigned long reserved_heap_size; |
9803 | 47 extern SYSTEM_INFO sysinfo_cache; |
24887
c440aa9c1485
w32heap.h (osinfo_cache): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24104
diff
changeset
|
48 extern OSVERSIONINFO osinfo_cache; |
24104 | 49 extern BOOL using_dynamic_heap; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
50 extern int w32_major_version; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
51 extern int w32_minor_version; |
33214
3ee9bf6f1dd2
(w32_build_number): Add extern.
Andrew Innes <andrewi@gnu.org>
parents:
31112
diff
changeset
|
52 extern int w32_build_number; |
9803 | 53 |
19709
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
54 enum { |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
55 OS_WIN95 = 1, |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
56 OS_NT |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
57 }; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
58 |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
59 extern int os_subtype; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
60 |
9803 | 61 /* Emulation of Unix sbrk(). */ |
62 extern void *sbrk (unsigned long size); | |
63 | |
24104 | 64 /* Initialize heap structures for sbrk on startup. */ |
65 extern void init_heap (); | |
9803 | 66 |
67 /* Round the heap to this size. */ | |
68 extern void round_heap (unsigned long size); | |
69 | |
70 /* Cache system info, e.g., the NT page size. */ | |
71 extern void cache_system_info (void); | |
72 | |
19709
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
73 /* ----------------------------------------------------------------- */ |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
74 /* Useful routines for manipulating memory-mapped files. */ |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
75 |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
76 typedef struct file_data { |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
77 char *name; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
78 unsigned long size; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
79 HANDLE file; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
80 HANDLE file_mapping; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
81 unsigned char *file_base; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
82 } file_data; |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
83 |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
84 int open_input_file (file_data *p_file, char *name); |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
85 int open_output_file (file_data *p_file, char *name, unsigned long size); |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
86 void close_file_data (file_data *p_file); |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
87 |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
88 /* Return pointer to section header for named section. */ |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
89 IMAGE_SECTION_HEADER * find_section (char * name, IMAGE_NT_HEADERS * nt_header); |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
90 |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
91 /* Return pointer to section header for section containing the given |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
92 relative virtual address. */ |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
93 IMAGE_SECTION_HEADER * rva_to_section (DWORD rva, IMAGE_NT_HEADERS * nt_header); |
6b326be52f18
Enumerate operating system types.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
94 |
9803 | 95 #endif /* NTHEAP_H_ */ |
52401 | 96 |
97 /* arch-tag: 3ba4cbe1-8a09-4a41-8f37-fd31f7426b3c | |
98 (do not change this comment) */ |