git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
blob 022b3097e92f2a400ff57f883e21ad3cadc9aebc 1596 bytes (raw)
name: mem-pool.h 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
#ifndef MEM_POOL_H
#define MEM_POOL_H

struct mp_block {
	struct mp_block *next_block;
	char *next_free;
	char *end;
	uintmax_t space[FLEX_ARRAY]; /* more */
};

struct mem_pool {
	struct mp_block *mp_block;

	/*
	 * The amount of available memory to grow the pool by.
	 * This size does not include the overhead for the mp_block.
	 */
	size_t block_alloc;

	/* The total amount of memory allocated by the pool. */
	size_t pool_alloc;
};

/*
 * Initialize mem_pool with specified initial size.
 */
void mem_pool_init(struct mem_pool *pool, size_t initial_size);

/*
 * Discard all the memory the memory pool is responsible for.
 */
void mem_pool_discard(struct mem_pool *pool, int invalidate_memory);

/*
 * Alloc memory from the mem_pool.
 */
void *mem_pool_alloc(struct mem_pool *pool, size_t len);

/*
 * Allocate and zero memory from the memory pool.
 */
void *mem_pool_calloc(struct mem_pool *pool, size_t count, size_t size);

/*
 * Allocate memory from the memory pool and copy str into it.
 */
char *mem_pool_xstrdup(struct mem_pool *pool, const char *str);
char *mem_pool_xstrndup(struct mem_pool *pool, const char *str, size_t len);

/*
 * Move the memory associated with the 'src' pool to the 'dst' pool. The 'src'
 * pool will be empty and not contain any memory. It still needs to be free'd
 * with a call to `mem_pool_discard`.
 */
void mem_pool_combine(struct mem_pool *dst, struct mem_pool *src);

/*
 * Check if a memory pointed at by 'mem' is part of the range of
 * memory managed by the specified mem_pool.
 */
int mem_pool_contains(struct mem_pool *pool, void *mem);

#endif

debug log:

solving 022b3097e9 ...
found 022b3097e9 in https://public-inbox.org/git/616402c64e1e01f88e962cf88f4ed1307d986a04.1597384820.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/62c2479fe6068f31c3cae1b1a13d67527121a15b.1597374135.git.gitgitgadget@gmail.com/
found a55ee4bc38 in https://public-inbox.org/git/e04ba96b227583875b2034325adfc7f5331d736f.1597384820.git.gitgitgadget@gmail.com/
found fcaa2d462b in https://public-inbox.org/git/eae8b2923f7834f3b1d030f6eb4dc093b94da91b.1597374135.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/6d679c5b46541208f5fa714174555ff0dc756b9a.1597384820.git.gitgitgadget@gmail.com/
found 999d3c3a52 in https://80x24.org/mirrors/git.git
preparing index
index prepared:
100644 999d3c3a52cc49b6dec896fc1e6b31ea8ac078d5	mem-pool.h

applying [1/3] https://public-inbox.org/git/eae8b2923f7834f3b1d030f6eb4dc093b94da91b.1597374135.git.gitgitgadget@gmail.com/
diff --git a/mem-pool.h b/mem-pool.h
index 999d3c3a52..fcaa2d462b 100644

Checking patch mem-pool.h...
Applied patch mem-pool.h cleanly.

skipping https://public-inbox.org/git/6d679c5b46541208f5fa714174555ff0dc756b9a.1597384820.git.gitgitgadget@gmail.com/ for fcaa2d462b
index at:
100644 fcaa2d462ba38d28205aba5fc834226d9eeb3f3d	mem-pool.h

applying [2/3] https://public-inbox.org/git/e04ba96b227583875b2034325adfc7f5331d736f.1597384820.git.gitgitgadget@gmail.com/
diff --git a/mem-pool.h b/mem-pool.h
index fcaa2d462b..a55ee4bc38 100644


applying [3/3] https://public-inbox.org/git/616402c64e1e01f88e962cf88f4ed1307d986a04.1597384820.git.gitgitgadget@gmail.com/
diff --git a/mem-pool.h b/mem-pool.h
index a55ee4bc38..022b3097e9 100644

Checking patch mem-pool.h...
Applied patch mem-pool.h cleanly.
Checking patch mem-pool.h...
Applied patch mem-pool.h cleanly.

skipping https://public-inbox.org/git/62c2479fe6068f31c3cae1b1a13d67527121a15b.1597374135.git.gitgitgadget@gmail.com/ for 022b3097e9
index at:
100644 022b3097e92f2a400ff57f883e21ad3cadc9aebc	mem-pool.h

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).