@@ -229,16 +229,16 @@ mod tests {
229
229
#[ test]
230
230
fn ensure_mapped_1page ( ) {
231
231
serial_test ( || {
232
+ let pages = 1 ;
233
+ let start_chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
234
+ let end_chunk =
235
+ ByteMapMmapper :: address_to_mmap_chunks_up ( FIXED_ADDRESS + pages_to_bytes ( pages) ) ;
236
+ let test_memory_bytes = ( end_chunk - start_chunk) * MMAP_CHUNK_BYTES ;
232
237
with_cleanup (
233
238
|| {
234
239
let mmapper = ByteMapMmapper :: new ( ) ;
235
- let pages = 1 ;
236
240
mmapper. ensure_mapped ( FIXED_ADDRESS , pages) . unwrap ( ) ;
237
241
238
- let start_chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
239
- let end_chunk = ByteMapMmapper :: address_to_mmap_chunks_up (
240
- FIXED_ADDRESS + pages_to_bytes ( pages) ,
241
- ) ;
242
242
for chunk in start_chunk..end_chunk {
243
243
assert_eq ! (
244
244
mmapper. mapped[ chunk] . load( Ordering :: Relaxed ) ,
@@ -247,7 +247,7 @@ mod tests {
247
247
}
248
248
} ,
249
249
|| {
250
- memory:: munmap ( FIXED_ADDRESS , MAX_SIZE ) . unwrap ( ) ;
250
+ memory:: munmap ( FIXED_ADDRESS , test_memory_bytes ) . unwrap ( ) ;
251
251
} ,
252
252
)
253
253
} )
@@ -256,16 +256,16 @@ mod tests {
256
256
#[ test]
257
257
fn ensure_mapped_1chunk ( ) {
258
258
serial_test ( || {
259
+ let pages = MMAP_CHUNK_BYTES >> LOG_BYTES_IN_PAGE as usize ;
260
+ let start_chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
261
+ let end_chunk =
262
+ ByteMapMmapper :: address_to_mmap_chunks_up ( FIXED_ADDRESS + pages_to_bytes ( pages) ) ;
263
+ let test_memory_bytes = ( end_chunk - start_chunk) * MMAP_CHUNK_BYTES ;
259
264
with_cleanup (
260
265
|| {
261
266
let mmapper = ByteMapMmapper :: new ( ) ;
262
- let pages = MMAP_CHUNK_BYTES >> LOG_BYTES_IN_PAGE as usize ;
263
267
mmapper. ensure_mapped ( FIXED_ADDRESS , pages) . unwrap ( ) ;
264
268
265
- let start_chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
266
- let end_chunk = ByteMapMmapper :: address_to_mmap_chunks_up (
267
- FIXED_ADDRESS + pages_to_bytes ( pages) ,
268
- ) ;
269
269
for chunk in start_chunk..end_chunk {
270
270
assert_eq ! (
271
271
mmapper. mapped[ chunk] . load( Ordering :: Relaxed ) ,
@@ -274,7 +274,7 @@ mod tests {
274
274
}
275
275
} ,
276
276
|| {
277
- memory:: munmap ( FIXED_ADDRESS , MAX_SIZE ) . unwrap ( ) ;
277
+ memory:: munmap ( FIXED_ADDRESS , test_memory_bytes ) . unwrap ( ) ;
278
278
} ,
279
279
)
280
280
} )
@@ -283,11 +283,14 @@ mod tests {
283
283
#[ test]
284
284
fn ensure_mapped_more_than_1chunk ( ) {
285
285
serial_test ( || {
286
+ let pages = ( MMAP_CHUNK_BYTES + MMAP_CHUNK_BYTES / 2 ) >> LOG_BYTES_IN_PAGE as usize ;
287
+ let start_chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
288
+ let end_chunk =
289
+ ByteMapMmapper :: address_to_mmap_chunks_up ( FIXED_ADDRESS + pages_to_bytes ( pages) ) ;
290
+ let test_memory_bytes = ( end_chunk - start_chunk) * MMAP_CHUNK_BYTES ;
286
291
with_cleanup (
287
292
|| {
288
293
let mmapper = ByteMapMmapper :: new ( ) ;
289
- let pages =
290
- ( MMAP_CHUNK_BYTES + MMAP_CHUNK_BYTES / 2 ) >> LOG_BYTES_IN_PAGE as usize ;
291
294
mmapper. ensure_mapped ( FIXED_ADDRESS , pages) . unwrap ( ) ;
292
295
293
296
let start_chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
@@ -303,7 +306,7 @@ mod tests {
303
306
}
304
307
} ,
305
308
|| {
306
- memory:: munmap ( FIXED_ADDRESS , MAX_SIZE ) . unwrap ( ) ;
309
+ memory:: munmap ( FIXED_ADDRESS , test_memory_bytes ) . unwrap ( ) ;
307
310
} ,
308
311
)
309
312
} )
@@ -312,17 +315,20 @@ mod tests {
312
315
#[ test]
313
316
fn protect ( ) {
314
317
serial_test ( || {
318
+ let test_memory_bytes = MMAP_CHUNK_BYTES * 2 ;
319
+ let test_memory_pages = test_memory_bytes >> LOG_BYTES_IN_PAGE ;
320
+ let protect_memory_bytes = MMAP_CHUNK_BYTES ;
321
+ let protect_memory_pages = protect_memory_bytes >> LOG_BYTES_IN_PAGE ;
315
322
with_cleanup (
316
323
|| {
317
324
// map 2 chunks
318
325
let mmapper = ByteMapMmapper :: new ( ) ;
319
- let pages_per_chunk = MMAP_CHUNK_BYTES >> LOG_BYTES_IN_PAGE as usize ;
320
326
mmapper
321
- . ensure_mapped ( FIXED_ADDRESS , pages_per_chunk * 2 )
327
+ . ensure_mapped ( FIXED_ADDRESS , test_memory_pages )
322
328
. unwrap ( ) ;
323
329
324
330
// protect 1 chunk
325
- mmapper. protect ( FIXED_ADDRESS , pages_per_chunk ) ;
331
+ mmapper. protect ( FIXED_ADDRESS , protect_memory_pages ) ;
326
332
327
333
let chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
328
334
assert_eq ! (
@@ -335,7 +341,7 @@ mod tests {
335
341
) ;
336
342
} ,
337
343
|| {
338
- memory:: munmap ( FIXED_ADDRESS , MAX_SIZE ) . unwrap ( ) ;
344
+ memory:: munmap ( FIXED_ADDRESS , test_memory_bytes ) . unwrap ( ) ;
339
345
} ,
340
346
)
341
347
} )
@@ -344,17 +350,20 @@ mod tests {
344
350
#[ test]
345
351
fn ensure_mapped_on_protected_chunks ( ) {
346
352
serial_test ( || {
353
+ let test_memory_bytes = MMAP_CHUNK_BYTES * 2 ;
354
+ let test_memory_pages = test_memory_bytes >> LOG_BYTES_IN_PAGE ;
355
+ let protect_memory_pages_1 = MMAP_CHUNK_BYTES >> LOG_BYTES_IN_PAGE ; // protect one chunk in the first protect
356
+ let protect_memory_pages_2 = test_memory_pages; // protect both chunks in the second protect
347
357
with_cleanup (
348
358
|| {
349
359
// map 2 chunks
350
360
let mmapper = ByteMapMmapper :: new ( ) ;
351
- let pages_per_chunk = MMAP_CHUNK_BYTES >> LOG_BYTES_IN_PAGE as usize ;
352
361
mmapper
353
- . ensure_mapped ( FIXED_ADDRESS , pages_per_chunk * 2 )
362
+ . ensure_mapped ( FIXED_ADDRESS , test_memory_pages )
354
363
. unwrap ( ) ;
355
364
356
365
// protect 1 chunk
357
- mmapper. protect ( FIXED_ADDRESS , pages_per_chunk ) ;
366
+ mmapper. protect ( FIXED_ADDRESS , protect_memory_pages_1 ) ;
358
367
359
368
let chunk = ByteMapMmapper :: address_to_mmap_chunks_down ( FIXED_ADDRESS ) ;
360
369
assert_eq ! (
@@ -368,7 +377,7 @@ mod tests {
368
377
369
378
// ensure mapped - this will unprotect the previously protected chunk
370
379
mmapper
371
- . ensure_mapped ( FIXED_ADDRESS , pages_per_chunk * 2 )
380
+ . ensure_mapped ( FIXED_ADDRESS , protect_memory_pages_2 )
372
381
. unwrap ( ) ;
373
382
assert_eq ! (
374
383
mmapper. mapped[ chunk] . load( Ordering :: Relaxed ) ,
@@ -380,7 +389,7 @@ mod tests {
380
389
) ;
381
390
} ,
382
391
|| {
383
- memory:: munmap ( FIXED_ADDRESS , MAX_SIZE ) . unwrap ( ) ;
392
+ memory:: munmap ( FIXED_ADDRESS , test_memory_bytes ) . unwrap ( ) ;
384
393
} ,
385
394
)
386
395
} )
0 commit comments