map_unaligned.c revision cbdddcfb32883a37e873907602d34bac523e3ead
1#include <stdio.h>
2#include <stdlib.h>
3#include <sys/mman.h>
4
5int main(int argc, char **argv)
6{
7  void *p1;
8  void *p2;
9
10  if ( ( p1 = mmap( 0, 4096, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) == MAP_FAILED )
11    {
12      perror( "mmap" );
13      exit( 1 );
14    }
15
16  if ( munmap( p1, 4096 ) != 0 )
17    {
18      perror( "munmap" );
19      exit( 1 );
20    }
21
22  if ( ( p2 = mmap( p1 + 1, 4096, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) == MAP_FAILED )
23    {
24      perror( "mmap" );
25      exit( 1 );
26    }
27
28  if ( munmap( p2, 4096 ) != 0 )
29    {
30      perror( "munmap" );
31      exit( 1 );
32    }
33
34  if ( ( p2 = mmap( p1 + 1, 4096, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0 ) ) == MAP_FAILED )
35    {
36      perror( "mmap" );
37      exit( 1 );
38    }
39
40  if ( munmap( p2, 4096 ) != 0 )
41    {
42      perror( "munmap" );
43      exit( 1 );
44    }
45
46  exit( 0 );
47}
48