8
8
#include < iostream>
9
9
10
10
static void *
11
- pta_alloc ();
11
+ pta_alloc (void *ctx );
12
12
static void
13
- pta_free (void *p);
13
+ pta_free (void *ctx, void * p);
14
14
15
15
#define PROV_BLOCK_SIZE 16
16
16
#define PROV_EXTENT_SIZE 64
@@ -41,8 +41,9 @@ unsigned int alloc_err_inj_countdown = 0;
41
41
#define MATRAS_VERSION_COUNT 8
42
42
43
43
static void *
44
- pta_alloc ()
44
+ pta_alloc (void *ctx )
45
45
{
46
+ static_cast <void >(ctx);
46
47
if (alloc_err_inj_enabled) {
47
48
if (alloc_err_inj_countdown == 0 )
48
49
return 0 ;
@@ -54,8 +55,9 @@ pta_alloc()
54
55
return p;
55
56
}
56
57
static void
57
- pta_free (void *p)
58
+ pta_free (void *ctx, void * p)
58
59
{
60
+ static_cast <void >(ctx);
59
61
check (AllocatedBlocks.find (p) != AllocatedBlocks.end (), " Bad free" );
60
62
AllocatedBlocks.erase (p);
61
63
delete [] static_cast <char *>(p);
@@ -73,7 +75,7 @@ void matras_alloc_test()
73
75
74
76
alloc_err_inj_enabled = false ;
75
77
for (unsigned int i = 0 ; i <= maxCapacity; i++) {
76
- matras_create (&mat, PROV_EXTENT_SIZE, PROV_BLOCK_SIZE, pta_alloc, pta_free);
78
+ matras_create (&mat, PROV_EXTENT_SIZE, PROV_BLOCK_SIZE, pta_alloc, pta_free, NULL );
77
79
check (1u << mat.log2_capacity == maxCapacity, " Wrong capacity!" );
78
80
AllocatedItems.clear ();
79
81
for (unsigned int j = 0 ; j < i; j++) {
@@ -116,7 +118,7 @@ void matras_alloc_test()
116
118
}
117
119
118
120
for (unsigned int i = 0 ; i <= maxCapacity; i++) {
119
- matras_create (&mat, PROV_EXTENT_SIZE, PROV_BLOCK_SIZE, pta_alloc, pta_free);
121
+ matras_create (&mat, PROV_EXTENT_SIZE, PROV_BLOCK_SIZE, pta_alloc, pta_free, NULL );
120
122
for (unsigned int j = 0 ; j < i; j++) {
121
123
unsigned int res = 0 ;
122
124
(void ) matras_alloc (&mat, &res);
@@ -132,7 +134,7 @@ void matras_alloc_test()
132
134
133
135
alloc_err_inj_enabled = true ;
134
136
for (unsigned int i = 0 ; i <= maxCapacity; i++) {
135
- matras_create (&mat, PROV_EXTENT_SIZE, PROV_BLOCK_SIZE, pta_alloc, pta_free);
137
+ matras_create (&mat, PROV_EXTENT_SIZE, PROV_BLOCK_SIZE, pta_alloc, pta_free, NULL );
136
138
137
139
alloc_err_inj_countdown = i;
138
140
@@ -154,17 +156,18 @@ void matras_alloc_test()
154
156
155
157
typedef uint64_t type_t ;
156
158
const size_t VER_EXTENT_SIZE = 512 ;
157
- int extents_in_use = 0 ;
158
159
159
- void *all ()
160
+ void *all (void *ctx )
160
161
{
161
- extents_in_use++;
162
+ long *extents_in_use = static_cast <long *>(ctx);
163
+ ++*extents_in_use;
162
164
return malloc (VER_EXTENT_SIZE);
163
165
}
164
166
165
- void dea (void *p)
167
+ void dea (void *ctx, void * p)
166
168
{
167
- extents_in_use--;
169
+ long *extents_in_use = static_cast <long *>(ctx);
170
+ --*extents_in_use;
168
171
free (p);
169
172
}
170
173
@@ -192,7 +195,8 @@ matras_vers_test()
192
195
int use_mask = 1 ;
193
196
int cur_num_or_ver = 1 ;
194
197
struct matras local;
195
- matras_create (&local, VER_EXTENT_SIZE, sizeof (type_t ), all, dea);
198
+ long extents_in_use = 0 ;
199
+ matras_create (&local, VER_EXTENT_SIZE, sizeof (type_t ), all, dea, &extents_in_use);
196
200
type_t val = 0 ;
197
201
for (int s = 10 ; s < 8000 ; s = int (s * 1.5 )) {
198
202
for (int k = 0 ; k < 800 ; k++) {
@@ -267,7 +271,8 @@ matras_gh_1145_test()
267
271
std::cout << " Testing matras gh-1145 test..." << std::endl;
268
272
269
273
struct matras local;
270
- matras_create (&local, VER_EXTENT_SIZE, sizeof (type_t ), all, dea);
274
+ long extents_in_use = 0 ;
275
+ matras_create (&local, VER_EXTENT_SIZE, sizeof (type_t ), all, dea, &extents_in_use);
271
276
struct matras_view view;
272
277
matras_create_read_view (&local, &view);
273
278
matras_id_t id;
0 commit comments