Initial revision
[ssr] / StraySrc / Libraries / Sapphire / csapph / h / heap
CommitLineData
2ee739cc 1/*
2 * heap.h
3 *
4 * [Generated from heap, 25 September 1996]
5 */
6
7#if !defined(__CC_NORCROFT) || !defined(__arm)
8 #error You must use the Norcroft ARM Compiler for Sapphire programs
9#endif
10
11#pragma include_only_once
12#pragma force_top_level
13
14#ifndef __heap_h
15#define __heap_h
16
17#ifndef __sapphire_h
18 #include "sapphire.h"
19#endif
20
21/*----- Overview ----------------------------------------------------------*
22 *
23 * Functions provided:
24 *
25 * heap_init
26 * heap_useHeap
27 * heap_info
28 * heap_alloc
29 * heap_free
30 * heap_reAlloc
31 */
32
33/* --- heap_init --- *
34 *
35 * On entry: --
36 *
37 * On exit: --
38 *
39 * Use: Initialises the heap system for use.
40 */
41
42extern routine heap_init;
43
44/* --- heap_useHeap --- *
45 *
46 * On entry: --
47 *
48 * On exit: --
49 *
50 * Use: Registers the resizing heap as the current allocator.
51 */
52
53extern routine heap_useHeap;
54
55/* --- heap_info --- *
56 *
57 * On entry: --
58 *
59 * On exit: R0 == current heap size
60 * R1 == amount of memory free in the heap
61 * R2 == size of the largest block free
62 *
63 * Use: Describes the heap's current status.
64 */
65
66extern routine heap_info;
67
68/* --- heap_alloc --- *
69 *
70 * On entry: R0 == size of block wanted
71 *
72 * On exit: CC if enough memory was found and
73 * R0 == pointer to the block allocated
74 * else CS and
75 * R0 corrupted
76 *
77 * Use: Allocates a block of at least a given size from a heap. If
78 * the heap is not big enough, more is claimed from the
79 * operating system.
80 */
81
82extern routine heap_alloc;
83
84/* --- heap_free --- *
85 *
86 * On entry: R0 == pointer to a block created with heap_alloc
87 *
88 * On exit: --
89 *
90 * Use: Frees a block allocated using heap_alloc. It tries to
91 * shrink the heap as much as possible afterwards.
92 */
93
94extern routine heap_free;
95
96/* --- heap_reAlloc --- *
97 *
98 * On entry: R0 == pointer to block whose size we want to change
99 * R1 == the new size of the block
100 *
101 * On exit: CC if block was resized, and
102 * R0 == pointer to the block (which may have moved)
103 * else CS and
104 * R0 corrupted
105 *
106 * Use: Changes the size of a heap block. If possible, the block's
107 * position is unchanged, but this may not always be the case.
108 *
109 * Note that changing a block's size to 0 is permitted.
110 */
111
112extern routine heap_reAlloc;
113
114/*----- That's all, folks -------------------------------------------------*/
115
116#endif