| #define _GNU_SOURCE |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <assert.h> |
| #include <sys/ipc.h> |
| #include <sys/shm.h> |
| #include <sys/stat.h> |
| #include <sys/mman.h> |
| |
| static void *mkmap(unsigned sz) |
| { |
| int shmid = shmget(IPC_PRIVATE, sz, |
| IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR); |
| assert(shmid != -1); |
| |
| void *addr = shmat(shmid, NULL, 0); |
| assert(addr != (void *)-1); |
| |
| return addr; |
| } |
| |
| int main() |
| { |
| void *np, *p; |
| |
| p = mkmap(1024*1024); |
| np = mremap(p, 1024*1024, 2048*1024, MREMAP_MAYMOVE); /* grow, maymove */ |
| assert(np != (void *)-1); |
| |
| return 0; |
| } |