#include <inttypes.h>
#include <sys/resource.h>
#include <sys/mman.h>

int
main(void)
{
       void*addr=(void*)0x20000000;

       mmap(addr,0x1000000,PROT_READ|PROT_WRITE,MAP_ANONYMOUS,-1,0);

       struct rlimit rlim;
       rlim.rlim_cur=rlim.rlim_max=1;
       setrlimit(RLIMIT_MEMLOCK,&rlim);

       mlockall(MCL_FUTURE);
       mprotect((void*)((intptr_t)addr+0x00ffb000),0x4000,PROT_NONE);
       mprotect((void*)((intptr_t)addr+0x00ffb000),0x2000,PROT_READ);
       mprotect((void*)((intptr_t)addr+0x00ffa000),0x4000,PROT_WRITE);

       *((char *)((intptr_t)addr+0x0ffa000)) = 0x42;

       return 0;
}