Adding upstream version 1:2.47.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
fd5a0bafa2
commit
54102a2c29
4535 changed files with 1510258 additions and 0 deletions
44
commit-slab-decl.h
Normal file
44
commit-slab-decl.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
#ifndef COMMIT_SLAB_DECL_H
|
||||
#define COMMIT_SLAB_DECL_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 \
|
||||
}
|
||||
|
||||
#define declare_commit_slab_prototypes(slabname, elemtype) \
|
||||
\
|
||||
void init_ ##slabname## _with_stride(struct slabname *s, unsigned stride); \
|
||||
void init_ ##slabname(struct slabname *s); \
|
||||
void clear_ ##slabname(struct slabname *s); \
|
||||
void deep_clear_ ##slabname(struct slabname *s, void (*free_fn)(elemtype *ptr)); \
|
||||
elemtype *slabname## _at_peek(struct slabname *s, const struct commit *c, int add_if_missing); \
|
||||
elemtype *slabname## _at(struct slabname *s, const struct commit *c); \
|
||||
elemtype *slabname## _peek(struct slabname *s, const struct commit *c)
|
||||
|
||||
#define define_shared_commit_slab(slabname, elemtype) \
|
||||
declare_commit_slab(slabname, elemtype); \
|
||||
declare_commit_slab_prototypes(slabname, elemtype)
|
||||
|
||||
#endif /* COMMIT_SLAB_DECL_H */
|
Loading…
Add table
Add a link
Reference in a new issue