1#define _GNU_SOURCE
2#include <stdio.h>
3#include <stdlib.h>
4#include <assert.h>
5#include <sys/ipc.h>
6#include <sys/shm.h>
7#include <sys/stat.h>
8#include <sys/mman.h>
9
10static void *mkmap(unsigned sz)
11{
12  int shmid = shmget(IPC_PRIVATE, sz,
13                     IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR);
14  assert(shmid != -1);
15
16  void *addr = shmat(shmid, NULL, 0);
17  assert(addr != (void *)-1);
18
19  return addr;
20}
21
22int main()
23{
24  void *np, *p;
25
26  p  = mkmap(1024*1024);
27  np = mremap(p, 1024*1024, 2048*1024, MREMAP_MAYMOVE); /* grow, maymove */
28  assert(np != (void *)-1);
29
30  return 0;
31}
32