chiark / gitweb /
Initial revision
[ssr] / StraySrc / Libraries / Sapphire / csapph / h / heap
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
42 extern 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
53 extern 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
66 extern 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
82 extern 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
94 extern 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
112 extern routine heap_reAlloc;
113
114 /*----- That's all, folks -------------------------------------------------*/
115
116 #endif