w32heap.h 2.15 KB
Newer Older
Richard M. Stallman's avatar
Richard M. Stallman committed
1
/* Heap management routines (including unexec) for GNU Emacs on Windows NT.
2
   Copyright (C) 1994, 2001-2020 Free Software Foundation, Inc.
Richard M. Stallman's avatar
Richard M. Stallman committed
3

4 5
This file is part of GNU Emacs.

6
GNU Emacs is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8 9
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.
10 11 12 13 14 15 16

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
17
along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
Richard M. Stallman's avatar
Richard M. Stallman committed
18 19 20 21 22 23 24 25 26 27 28 29

   Geoff Voelker (voelker@cs.washington.edu)			     7-29-94
*/

#ifndef NTHEAP_H_
#define NTHEAP_H_

#include <windows.h>

/*
 * Heap related stuff.
 */
30

31 32
extern unsigned char *get_data_start (void);
extern unsigned char *get_data_end (void);
33
extern size_t         reserved_heap_size;
34 35 36 37 38

extern void *mmap_realloc (void **, size_t);
extern void  mmap_free (void **);
extern void *mmap_alloc (void **, size_t);

39
extern void report_temacs_memory_usage (void);
40

Richard M. Stallman's avatar
Richard M. Stallman committed
41
/* Emulation of Unix sbrk().  */
42
extern void *sbrk (ptrdiff_t size);
Richard M. Stallman's avatar
Richard M. Stallman committed
43

Andrew Innes's avatar
Andrew Innes committed
44
/* Initialize heap structures for sbrk on startup.  */
45
extern void init_heap (bool);
Richard M. Stallman's avatar
Richard M. Stallman committed
46

47
/* ----------------------------------------------------------------- */
48
/* Useful routines for manipulating memory-mapped files.  */
49 50 51 52 53 54 55 56 57 58 59 60 61

typedef struct file_data {
    char          *name;
    unsigned long  size;
    HANDLE         file;
    HANDLE         file_mapping;
    unsigned char *file_base;
} file_data;

int open_input_file (file_data *p_file, char *name);
int open_output_file (file_data *p_file, char *name, unsigned long size);
void close_file_data (file_data *p_file);

62
/* Return pointer to section header for named section.  */
63
IMAGE_SECTION_HEADER * find_section (const char *, IMAGE_NT_HEADERS *);
64 65

/* Return pointer to section header for section containing the given
66
   relative virtual address.  */
67
IMAGE_SECTION_HEADER * rva_to_section (DWORD_PTR, IMAGE_NT_HEADERS *);
68

Richard M. Stallman's avatar
Richard M. Stallman committed
69
#endif /* NTHEAP_H_ */