77#include <fcntl.h>
88#include <stdio.h>
99#include <stdlib.h>
10+ #include <sys/auxv.h>
1011#include <sys/mman.h>
1112#include <sys/stat.h>
1213#include <sys/types.h>
1718const unsigned char kTag = 42 ;
1819const size_t kNumShadowPages = 1024 ;
1920const size_t kNumPages = 16 * kNumShadowPages ;
20- const size_t kPageSize = 4096 ;
21- const size_t kMapSize = kNumPages * kPageSize ;
21+
22+ size_t page_size , map_size ;
2223
2324void sync_rss () {
24- char * page = (char * )mmap (0 , kPageSize , PROT_READ | PROT_WRITE , MAP_PRIVATE | MAP_ANONYMOUS , 0 , 0 );
25+ char * page = (char * )mmap (0 , page_size , PROT_READ | PROT_WRITE ,
26+ MAP_PRIVATE | MAP_ANONYMOUS , 0 , 0 );
2527 // Linux kernel updates RSS counters after a set number of page faults.
2628 for (int i = 0 ; i < 100 ; ++ i ) {
2729 page [0 ] = 42 ;
28- madvise (page , kPageSize , MADV_DONTNEED );
30+ madvise (page , page_size , MADV_DONTNEED );
2931 }
30- munmap (page , kPageSize );
32+ munmap (page , page_size );
3133}
3234
3335size_t current_rss () {
@@ -45,9 +47,9 @@ size_t current_rss() {
4547}
4648
4749int test_rss_difference (void * p ) {
48- __hwasan_tag_memory (p , kTag , kMapSize );
50+ __hwasan_tag_memory (p , kTag , map_size );
4951 size_t rss_before = current_rss ();
50- __hwasan_tag_memory (p , 0 , kMapSize );
52+ __hwasan_tag_memory (p , 0 , map_size );
5153 size_t rss_after = current_rss ();
5254 fprintf (stderr , "%zu -> %zu\n" , rss_before , rss_after );
5355 if (rss_before <= rss_after )
@@ -59,10 +61,14 @@ int test_rss_difference(void *p) {
5961}
6062
6163int main () {
64+ page_size = getauxval (AT_PAGESZ );
65+ map_size = kNumPages * page_size ;
66+
6267 fprintf (stderr , "starting rss %zu\n" , current_rss ());
6368 fprintf (stderr , "shadow pages: %zu\n" , kNumShadowPages );
6469
65- void * p = mmap (0 , kMapSize , PROT_READ | PROT_WRITE , MAP_PRIVATE | MAP_ANONYMOUS , 0 , 0 );
70+ void * p = mmap (0 , map_size , PROT_READ | PROT_WRITE ,
71+ MAP_PRIVATE | MAP_ANONYMOUS , 0 , 0 );
6672 fprintf (stderr , "p = %p\n" , p );
6773
6874 size_t total_count = 10 ;
0 commit comments