Message ID | 20250408-pks-split-object-file-v1-3-f1fd50191143@pks.im (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Split up "object-file.c" | expand |
On Tue, Apr 8, 2025 at 3:33 AM Patrick Steinhardt <ps@pks.im> wrote: > > The `xmmap()` function is provided by "object-file.c" even though its > functionality got nothing to do with the object file subsystem. Move it s/got/has/ ? > into "wrapper.c", whose header already declares those functions. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > object-file.c | 48 ------------------------------------------------ > wrapper.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 48 insertions(+), 48 deletions(-) > > diff --git a/object-file.c b/object-file.c > index 1a20c7fa072..ea2ed7628e6 100644 > --- a/object-file.c > +++ b/object-file.c > @@ -719,54 +719,6 @@ int has_loose_object(const struct object_id *oid) > return check_and_freshen(oid, 0); > } > > -static void mmap_limit_check(size_t length) > -{ > - static size_t limit = 0; > - if (!limit) { > - limit = git_env_ulong("GIT_MMAP_LIMIT", 0); > - if (!limit) > - limit = SIZE_MAX; > - } > - if (length > limit) > - die(_("attempting to mmap %"PRIuMAX" over limit %"PRIuMAX), > - (uintmax_t)length, (uintmax_t)limit); > -} > - > -void *xmmap_gently(void *start, size_t length, > - int prot, int flags, int fd, off_t offset) > -{ > - void *ret; > - > - mmap_limit_check(length); > - ret = mmap(start, length, prot, flags, fd, offset); > - if (ret == MAP_FAILED && !length) > - ret = NULL; > - return ret; > -} > - > -const char *mmap_os_err(void) > -{ > - static const char blank[] = ""; > -#if defined(__linux__) > - if (errno == ENOMEM) { > - /* this continues an existing error message: */ > - static const char enomem[] = > -", check sys.vm.max_map_count and/or RLIMIT_DATA"; > - return enomem; > - } > -#endif /* OS-specific bits */ > - return blank; > -} > - > -void *xmmap(void *start, size_t length, > - int prot, int flags, int fd, off_t offset) > -{ > - void *ret = xmmap_gently(start, length, prot, flags, fd, offset); > - if (ret == MAP_FAILED) > - die_errno(_("mmap failed%s"), mmap_os_err()); > - return ret; > -} > - > static int format_object_header_literally(char *str, size_t size, > const char *type, size_t objsize) > { > diff --git a/wrapper.c b/wrapper.c > index 8b985931490..3c79778055e 100644 > --- a/wrapper.c > +++ b/wrapper.c > @@ -829,3 +829,51 @@ uint32_t git_rand(unsigned flags) > > return result; > } > + > +static void mmap_limit_check(size_t length) > +{ > + static size_t limit = 0; > + if (!limit) { > + limit = git_env_ulong("GIT_MMAP_LIMIT", 0); > + if (!limit) > + limit = SIZE_MAX; > + } > + if (length > limit) > + die(_("attempting to mmap %"PRIuMAX" over limit %"PRIuMAX), > + (uintmax_t)length, (uintmax_t)limit); > +} > + > +void *xmmap_gently(void *start, size_t length, > + int prot, int flags, int fd, off_t offset) > +{ > + void *ret; > + > + mmap_limit_check(length); > + ret = mmap(start, length, prot, flags, fd, offset); > + if (ret == MAP_FAILED && !length) > + ret = NULL; > + return ret; > +} > + > +const char *mmap_os_err(void) > +{ > + static const char blank[] = ""; > +#if defined(__linux__) > + if (errno == ENOMEM) { > + /* this continues an existing error message: */ > + static const char enomem[] = > +", check sys.vm.max_map_count and/or RLIMIT_DATA"; > + return enomem; > + } > +#endif /* OS-specific bits */ > + return blank; > +} > + > +void *xmmap(void *start, size_t length, > + int prot, int flags, int fd, off_t offset) > +{ > + void *ret = xmmap_gently(start, length, prot, flags, fd, offset); > + if (ret == MAP_FAILED) > + die_errno(_("mmap failed%s"), mmap_os_err()); > + return ret; > +} > > -- > 2.49.0.682.gc9b6a7b2b0.dirty > >
diff --git a/object-file.c b/object-file.c index 1a20c7fa072..ea2ed7628e6 100644 --- a/object-file.c +++ b/object-file.c @@ -719,54 +719,6 @@ int has_loose_object(const struct object_id *oid) return check_and_freshen(oid, 0); } -static void mmap_limit_check(size_t length) -{ - static size_t limit = 0; - if (!limit) { - limit = git_env_ulong("GIT_MMAP_LIMIT", 0); - if (!limit) - limit = SIZE_MAX; - } - if (length > limit) - die(_("attempting to mmap %"PRIuMAX" over limit %"PRIuMAX), - (uintmax_t)length, (uintmax_t)limit); -} - -void *xmmap_gently(void *start, size_t length, - int prot, int flags, int fd, off_t offset) -{ - void *ret; - - mmap_limit_check(length); - ret = mmap(start, length, prot, flags, fd, offset); - if (ret == MAP_FAILED && !length) - ret = NULL; - return ret; -} - -const char *mmap_os_err(void) -{ - static const char blank[] = ""; -#if defined(__linux__) - if (errno == ENOMEM) { - /* this continues an existing error message: */ - static const char enomem[] = -", check sys.vm.max_map_count and/or RLIMIT_DATA"; - return enomem; - } -#endif /* OS-specific bits */ - return blank; -} - -void *xmmap(void *start, size_t length, - int prot, int flags, int fd, off_t offset) -{ - void *ret = xmmap_gently(start, length, prot, flags, fd, offset); - if (ret == MAP_FAILED) - die_errno(_("mmap failed%s"), mmap_os_err()); - return ret; -} - static int format_object_header_literally(char *str, size_t size, const char *type, size_t objsize) { diff --git a/wrapper.c b/wrapper.c index 8b985931490..3c79778055e 100644 --- a/wrapper.c +++ b/wrapper.c @@ -829,3 +829,51 @@ uint32_t git_rand(unsigned flags) return result; } + +static void mmap_limit_check(size_t length) +{ + static size_t limit = 0; + if (!limit) { + limit = git_env_ulong("GIT_MMAP_LIMIT", 0); + if (!limit) + limit = SIZE_MAX; + } + if (length > limit) + die(_("attempting to mmap %"PRIuMAX" over limit %"PRIuMAX), + (uintmax_t)length, (uintmax_t)limit); +} + +void *xmmap_gently(void *start, size_t length, + int prot, int flags, int fd, off_t offset) +{ + void *ret; + + mmap_limit_check(length); + ret = mmap(start, length, prot, flags, fd, offset); + if (ret == MAP_FAILED && !length) + ret = NULL; + return ret; +} + +const char *mmap_os_err(void) +{ + static const char blank[] = ""; +#if defined(__linux__) + if (errno == ENOMEM) { + /* this continues an existing error message: */ + static const char enomem[] = +", check sys.vm.max_map_count and/or RLIMIT_DATA"; + return enomem; + } +#endif /* OS-specific bits */ + return blank; +} + +void *xmmap(void *start, size_t length, + int prot, int flags, int fd, off_t offset) +{ + void *ret = xmmap_gently(start, length, prot, flags, fd, offset); + if (ret == MAP_FAILED) + die_errno(_("mmap failed%s"), mmap_os_err()); + return ret; +}
The `xmmap()` function is provided by "object-file.c" even though its functionality got nothing to do with the object file subsystem. Move it into "wrapper.c", whose header already declares those functions. Signed-off-by: Patrick Steinhardt <ps@pks.im> --- object-file.c | 48 ------------------------------------------------ wrapper.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 48 deletions(-)