--- /dev/null
+// gcc -O2 -g -Wall -W mshare.c -o mshare
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+#define KB(x) ((x) * 1024UL)
+#define MB(x) KB(KB(x))
+#define GB(x) MB(KB(x))
+#define TB(x) GB(KB(x))
+
+int main(int argc, char **argv)
+{
+ int fd;
+ char *addr;
+ unsigned long args[2] = {};
+
+ addr = mmap((void *)TB(2), MB(4), PROT_READ | PROT_WRITE,
+ MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+ if (addr == MAP_FAILED)
+ perror("anon mem");
+ strcpy(addr, "Matthew");
+
+ fd = syscall(449, 1337, TB(2), 0);
+ printf("fd = %d\n", fd);
+ if (fd < 0)
+ perror(argv[0]);
+
+ fd = syscall(449, TB(2), TB(2), 0);
+ printf("fd = %d\n", fd);
+ if (fd < 0)
+ perror(argv[0]);
+
+ read(fd, &args, sizeof(args));
+ printf("addr %lx len %lx\n", args[0], args[1]);
+
+ addr = mmap((void *)TB(4), TB(2), PROT_READ | PROT_WRITE,
+ MAP_SHARED, fd, 0);
+ if (addr == MAP_FAILED)
+ perror("sharefd");
+ printf("%s\n", addr);
+}