summaryrefslogtreecommitdiff
path: root/compat/bswap.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-11-21 05:07:50 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-11-21 05:07:50 (GMT)
commite05336bddacb90cf243aacc0f7b7f34f900453d7 (patch)
treecb4a694c7de056ac7c4ec98e30b3b1c5b4cc3764 /compat/bswap.h
parentf5da077b1f9e28a473f8219d8b8391450b794abf (diff)
parent614a718a797e04fb037b25371896f910e464b671 (diff)
downloadgit-e05336bddacb90cf243aacc0f7b7f34f900453d7.zip
git-e05336bddacb90cf243aacc0f7b7f34f900453d7.tar.gz
git-e05336bddacb90cf243aacc0f7b7f34f900453d7.tar.bz2
Merge branch 'bp/fsmonitor'
We learned to talk to watchman to speed up "git status" and other operations that need to see which paths have been modified. * bp/fsmonitor: fsmonitor: preserve utf8 filenames in fsmonitor-watchman log fsmonitor: read entirety of watchman output fsmonitor: MINGW support for watchman integration fsmonitor: add a performance test fsmonitor: add a sample integration script for Watchman fsmonitor: add test cases for fsmonitor extension split-index: disable the fsmonitor extension when running the split index test fsmonitor: add a test tool to dump the index extension update-index: add fsmonitor support to update-index ls-files: Add support in ls-files to display the fsmonitor valid bit fsmonitor: add documentation for the fsmonitor extension. fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files. update-index: add a new --force-write-index option preload-index: add override to enable testing preload-index bswap: add 64 bit endianness helper get_be64
Diffstat (limited to 'compat/bswap.h')
-rw-r--r--compat/bswap.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/compat/bswap.h b/compat/bswap.h
index 7d063e9..5078ce5 100644
--- a/compat/bswap.h
+++ b/compat/bswap.h
@@ -158,7 +158,9 @@ static inline uint64_t git_bswap64(uint64_t x)
#define get_be16(p) ntohs(*(unsigned short *)(p))
#define get_be32(p) ntohl(*(unsigned int *)(p))
+#define get_be64(p) ntohll(*(uint64_t *)(p))
#define put_be32(p, v) do { *(unsigned int *)(p) = htonl(v); } while (0)
+#define put_be64(p, v) do { *(uint64_t *)(p) = htonll(v); } while (0)
#else
@@ -178,6 +180,13 @@ static inline uint32_t get_be32(const void *ptr)
(uint32_t)p[3] << 0;
}
+static inline uint64_t get_be64(const void *ptr)
+{
+ const unsigned char *p = ptr;
+ return (uint64_t)get_be32(&p[0]) << 32 |
+ (uint64_t)get_be32(&p[4]) << 0;
+}
+
static inline void put_be32(void *ptr, uint32_t value)
{
unsigned char *p = ptr;
@@ -187,4 +196,17 @@ static inline void put_be32(void *ptr, uint32_t value)
p[3] = value >> 0;
}
+static inline void put_be64(void *ptr, uint64_t value)
+{
+ unsigned char *p = ptr;
+ p[0] = value >> 56;
+ p[1] = value >> 48;
+ p[2] = value >> 40;
+ p[3] = value >> 32;
+ p[4] = value >> 24;
+ p[5] = value >> 16;
+ p[6] = value >> 8;
+ p[7] = value >> 0;
+}
+
#endif