/* test to see how mmap works on kernel level */ #include #include #include #include #include #include #include #include #ifndef O_LARGEFILE /* don't use it if the kernel can't use it */ #define O_LARGEFILE 0 #endif int main(int argc, char **argv) { void *start = 0; size_t length = 1024; int flags = MAP_SHARED; int fd = 0; off_t offset = 0; struct stat statbuffer; fd = open("mmaptest.c", O_RDONLY | O_LARGEFILE, 0); fprintf(stderr, "File descriptor obtained: 0x%x\n", fd); if (fstat(fd, &statbuffer) < 0) { fprintf(stderr, "cannot stat: %s\n", strerror(errno)); _exit(1); } length = (size_t)(statbuffer.st_size); fprintf(stderr, "Before calling mmap, start = 0x%x\n", (int)start); start = mmap(start, length, statbuffer.st_mode & 7, flags, fd, offset); fprintf(stderr, "After calling mmap, start = 0x%x\n", (int)start); return 0; }