NOTE! git doesn't use mmap() because it _needs_ to use mmap(), but because
it was simple to do that way, and it's a total idiosyncracy of mine that I
often try to mmap the data. I often also tend to do my own allocators
instead of using malloc() (see my "sparse" project in case you're
interested in other idiosyncracies of mine - macros to do list traversal
etc).
The fact is, "mmap()" isn't really any better than "read()": it has some
advantages wrt memory management for the kernel, which is probably one big
reason why I do it, but quite frankly, if you were to change every single
mmap() to be a "map_file()" instead, and made it optional whether it used
mmap() or "malloc + read()", I personally don't think it would be
horrible.
And it might make things much simpler for portability. The "use mmap"
approach is very much a unixism, particularly the way unix people do it
(mmap followed by close, making the file descriptor "go away"). Sure,
other OS's have mmap too, but I think on them it tends to be less commonly
used.
Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html