next up previous
Next: Directory reading Up: Unix & Linux Previous: pthread

mmap

        int fd = open(argv[1], O_RDONLY);
        assert(fd >= 0);

        // Get size.
        struct stat sb;
        ec = fstat(fd, &sb);
        assert(ec == 0);
        off_t sz = sb.st_size;

        // Map it in.
        char *doc = (char *) mmap(0, sz, PROT_READ, MAP_SHARED, fd, 0);
        assert(doc != 0);

        // Get it paged in.
        // to make sure all the data are in memeory 
        char *p = doc;
        int c = 0;
        for (int i = 0; i < sz; i++) {
            // This below is just so compiler won't optimize
            // anything away.
            if (p[i] == 0) {
                c++;
            }
        }


Wei Lu 2007-11-06