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>
This commit is contained in:

committed by
Junio C Hamano

parent
ccdcbd54c4
commit
a9f1f1f9f8
30
commit-slab-decl.h
Normal file
30
commit-slab-decl.h
Normal file
@ -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 */
|
Reference in New Issue
Block a user