@matheusbsbs / matheus-bagliano / commits / 58ecbd5ede
Fork 0

wrapper: move xmmap() to sha1_file.c

wrapper.o depends on sha1_file.o for a number of reasons. One is release_pack_memory(). xmmap function calls mmap, discarding unused pack windows when necessary to relieve memory pressure. Simple git programs using wrapper.o as a friendly libc do not need this functionality. So move xmmap to sha1_file.o, where release_pack_memory() is. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jonathan Nieder committed Nov 6, 2010 at 06:44 UTC 58ecbd5edeb2357c313db75bc49d45981a2061b7
2 files changed +15 -15
sha1_file.c
+15
@@ -576,6 +576,21 @@ void release_pack_memory(size_t need, int fd)
576 ; /* nothing */
577 }
578
579 +void *xmmap(void *start, size_t length,
580 + int prot, int flags, int fd, off_t offset)
581 +{
582 + void *ret = mmap(start, length, prot, flags, fd, offset);
583 + if (ret == MAP_FAILED) {
584 + if (!length)
585 + return NULL;
586 + release_pack_memory(length, fd);
587 + ret = mmap(start, length, prot, flags, fd, offset);
588 + if (ret == MAP_FAILED)
589 + die_errno("Out of memory? mmap failed");
590 + }
591 + return ret;
592 +}
593 +
594 void close_pack_windows(struct packed_git *p)
595 {
596 while (p->windows) {
wrapper.c
-15
@@ -108,21 +108,6 @@ void *xcalloc(size_t nmemb, size_t size)
108 return ret;
109 }
110
111 -void *xmmap(void *start, size_t length,
112 - int prot, int flags, int fd, off_t offset)
113 -{
114 - void *ret = mmap(start, length, prot, flags, fd, offset);
115 - if (ret == MAP_FAILED) {
116 - if (!length)
117 - return NULL;
118 - release_pack_memory(length, fd);
119 - ret = mmap(start, length, prot, flags, fd, offset);
120 - if (ret == MAP_FAILED)
121 - die_errno("Out of memory? mmap failed");
122 - }
123 - return ret;
124 -}
125 -
111 /*
112 * xread() is the same a read(), but it automatically restarts read()
113 * operations with a recoverable error (EAGAIN and EINTR). xread()