diff options
| author | Junio C Hamano <gitster@pobox.com> | 2026-04-08 10:19:17 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2026-04-08 10:19:17 -0700 |
| commit | 4fee6ff3b23321b55073ca2d13c4e2aa6adaea65 (patch) | |
| tree | 097114e50b0fea8c224986e29d070b99a7904370 /reftable/system.c | |
| parent | 0c0cbd8ab7c8e1884d6f0bdf1f36f5f9d4732553 (diff) | |
| parent | 87e4eee3f94ec261a92a76d06261b227b00de461 (diff) | |
| download | git-4fee6ff3b23321b55073ca2d13c4e2aa6adaea65.tar.xz | |
Merge branch 'ps/reftable-portability'
Update reftable library part with what is used in libgit2 to improve
portability to different target codebases and platforms.
* ps/reftable-portability:
reftable/system: add abstraction to mmap files
reftable/system: add abstraction to retrieve time in milliseconds
reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
reftable/stack: provide fsync(3p) via system header
reftable: introduce "reftable-system.h" header
Diffstat (limited to 'reftable/system.c')
| -rw-r--r-- | reftable/system.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/reftable/system.c b/reftable/system.c index 725a25844e..9063641f30 100644 --- a/reftable/system.c +++ b/reftable/system.c @@ -4,7 +4,9 @@ #include "basics.h" #include "reftable-error.h" #include "../lockfile.h" +#include "../trace.h" #include "../tempfile.h" +#include "../write-or-die.h" uint32_t reftable_rand(void) { @@ -131,3 +133,33 @@ int flock_commit(struct reftable_flock *l) return 0; } + +int reftable_fsync(int fd) +{ + return fsync_component(FSYNC_COMPONENT_REFERENCE, fd); +} + +uint64_t reftable_time_ms(void) +{ + return getnanotime() / 1000000; +} + +int reftable_mmap(struct reftable_mmap *out, int fd, size_t len) +{ + void *data = xmmap_gently(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); + if (data == MAP_FAILED) + return REFTABLE_IO_ERROR; + + out->data = data; + out->size = len; + + return 0; +} + +int reftable_munmap(struct reftable_mmap *mmap) +{ + if (munmap(mmap->data, mmap->size) < 0) + return REFTABLE_IO_ERROR; + memset(mmap, 0, sizeof(*mmap)); + return 0; +} |
