diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2018-05-19 07:28:17 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-05-21 07:07:19 +0200 |
commit | a9f1f1f9f8b2873c43d6100717eb776ea288ed9e (patch) | |
tree | 5ac080e1e3e2cb322a01486f4045823f16e690b8 /commit-slab-decl.h | |
parent | The fifth batch for 2.18 (diff) | |
download | git-a9f1f1f9f8b2873c43d6100717eb776ea288ed9e.tar.xz git-a9f1f1f9f8b2873c43d6100717eb776ea288ed9e.zip |
commit-slab.h: code split
The struct declaration and implementation macros are moved to
commit-slab-hdr.h and commit-slab-impl.h respectively.
This right now is not needed for current users but if we make a public
commit-slab type, we may want to avoid including the slab
implementation in a header file which gets replicated in every c file
that includes it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'commit-slab-decl.h')
-rw-r--r-- | commit-slab-decl.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/commit-slab-decl.h b/commit-slab-decl.h new file mode 100644 index 0000000000..fb5220fb7d --- /dev/null +++ b/commit-slab-decl.h @@ -0,0 +1,30 @@ +#ifndef COMMIT_SLAB_HDR_H +#define COMMIT_SLAB_HDR_H + +/* allocate ~512kB at once, allowing for malloc overhead */ +#ifndef COMMIT_SLAB_SIZE +#define COMMIT_SLAB_SIZE (512*1024-32) +#endif + +#define declare_commit_slab(slabname, elemtype) \ + \ +struct slabname { \ + unsigned slab_size; \ + unsigned stride; \ + unsigned slab_count; \ + elemtype **slab; \ +} + +/* + * Statically initialize a commit slab named "var". Note that this + * evaluates "stride" multiple times! Example: + * + * struct indegree indegrees = COMMIT_SLAB_INIT(1, indegrees); + * + */ +#define COMMIT_SLAB_INIT(stride, var) { \ + COMMIT_SLAB_SIZE / sizeof(**((var).slab)) / (stride), \ + (stride), 0, NULL \ +} + +#endif /* COMMIT_SLAB_HDR_H */ |