Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: source/libvpx/vpx_mem/memory_manager/include/heapmm.h

Issue 1124333011: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: only update to last nights LKGR Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef VPX_MEM_MEMORY_MANAGER_INCLUDE_HEAPMM_H_
12 #define VPX_MEM_MEMORY_MANAGER_INCLUDE_HEAPMM_H_
13
14 /* This code is in the public domain.
15 ** Version: 1.1 Author: Walt Karas
16 */
17
18 /* External header file for Heap Memory Manager. See documentation in
19 ** heapmm.html.
20 */
21
22 #undef HMM_PROCESS
23
24 /* Include once per configuration in a particular translation unit. */
25
26 #ifndef HMM_CNFG_NUM
27
28 /* Default configuration. */
29
30 #ifndef HMM_INC_CNFG_DFLT
31 #define HMM_INC_CNFG_DFLT
32 #define HMM_PROCESS
33 #endif
34
35 #elif HMM_CNFG_NUM == 0
36
37 /* Test configuration. */
38
39 #ifndef HMM_INC_CNFG_0
40 #define HMM_INC_CNFG_0
41 #define HMM_PROCESS
42 #endif
43
44 #elif HMM_CNFG_NUM == 1
45
46 #ifndef HMM_INC_CNFG_1
47 #define HMM_INC_CNFG_1
48 #define HMM_PROCESS
49 #endif
50
51 #elif HMM_CNFG_NUM == 2
52
53 #ifndef HMM_INC_CNFG_2
54 #define HMM_INC_CNFG_2
55 #define HMM_PROCESS
56 #endif
57
58 #elif HMM_CNFG_NUM == 3
59
60 #ifndef HMM_INC_CNFG_3
61 #define HMM_INC_CNFG_3
62 #define HMM_PROCESS
63 #endif
64
65 #elif HMM_CNFG_NUM == 4
66
67 #ifndef HMM_INC_CNFG_4
68 #define HMM_INC_CNFG_4
69 #define HMM_PROCESS
70 #endif
71
72 #elif HMM_CNFG_NUM == 5
73
74 #ifndef HMM_INC_CNFG_5
75 #define HMM_INC_CNFG_5
76 #define HMM_PROCESS
77 #endif
78
79 #endif
80
81 #ifdef HMM_PROCESS
82
83 #include "hmm_cnfg.h"
84
85 /* Heap descriptor. */
86 typedef struct HMM_UNIQUE(structure) {
87 /* private: */
88
89 /* Pointer to (payload of) root node in AVL tree. This field should
90 ** really be the AVL tree descriptor (type avl_avl). But (in the
91 ** instantiation of the AVL tree generic package used in package) the
92 ** AVL tree descriptor simply contains a pointer to the root. So,
93 ** whenever a pointer to the AVL tree descriptor is needed, I use the
94 ** cast:
95 **
96 ** (avl_avl *) &(heap_desc->avl_tree_root)
97 **
98 ** (where heap_desc is a pointer to a heap descriptor). This trick
99 ** allows me to avoid including cavl_if.h in this external header. */
100 void *avl_tree_root;
101
102 /* Pointer to first byte of last block freed, after any coalescing. */
103 void *last_freed;
104
105 /* public: */
106
107 HMM_UNIQUE(size_bau) num_baus_can_shrink;
108 void *end_of_shrinkable_chunk;
109 }
110 HMM_UNIQUE(descriptor);
111
112 /* Prototypes for externally-callable functions. */
113
114 void HMM_UNIQUE(init)(HMM_UNIQUE(descriptor) *desc);
115
116 void *HMM_UNIQUE(alloc)(
117 HMM_UNIQUE(descriptor) *desc, HMM_UNIQUE(size_aau) num_addr_align_units);
118
119 /* NOT YET IMPLEMENTED */
120 void *HMM_UNIQUE(greedy_alloc)(
121 HMM_UNIQUE(descriptor) *desc, HMM_UNIQUE(size_aau) needed_addr_align_units,
122 HMM_UNIQUE(size_aau) coveted_addr_align_units);
123
124 int HMM_UNIQUE(resize)(
125 HMM_UNIQUE(descriptor) *desc, void *mem,
126 HMM_UNIQUE(size_aau) num_addr_align_units);
127
128 /* NOT YET IMPLEMENTED */
129 int HMM_UNIQUE(greedy_resize)(
130 HMM_UNIQUE(descriptor) *desc, void *mem,
131 HMM_UNIQUE(size_aau) needed_addr_align_units,
132 HMM_UNIQUE(size_aau) coveted_addr_align_units);
133
134 void HMM_UNIQUE(free)(HMM_UNIQUE(descriptor) *desc, void *mem);
135
136 HMM_UNIQUE(size_aau) HMM_UNIQUE(true_size)(void *mem);
137
138 HMM_UNIQUE(size_aau) HMM_UNIQUE(largest_available)(
139 HMM_UNIQUE(descriptor) *desc);
140
141 void HMM_UNIQUE(new_chunk)(
142 HMM_UNIQUE(descriptor) *desc, void *start_of_chunk,
143 HMM_UNIQUE(size_bau) num_block_align_units);
144
145 void HMM_UNIQUE(grow_chunk)(
146 HMM_UNIQUE(descriptor) *desc, void *end_of_chunk,
147 HMM_UNIQUE(size_bau) num_block_align_units);
148
149 /* NOT YET IMPLEMENTED */
150 void HMM_UNIQUE(shrink_chunk)(
151 HMM_UNIQUE(descriptor) *desc,
152 HMM_UNIQUE(size_bau) num_block_align_units);
153
154 #endif /* defined HMM_PROCESS */
155 #endif // VPX_MEM_MEMORY_MANAGER_INCLUDE_HEAPMM_H_
OLDNEW
« no previous file with comments | « source/libvpx/vpx_mem/memory_manager/include/cavl_impl.h ('k') | source/libvpx/vpx_mem/memory_manager/include/hmm_cnfg.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698