comparison nspr/lib/ds/plarenas.h @ 0:1e5118fa0cb1

This is NSS with a Cmake Buildsyste To compile a static NSS library for Windows we've used the Chromium-NSS fork and added a Cmake buildsystem to compile it statically for Windows. See README.chromium for chromium changes and README.trustbridge for our modifications.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 28 Jul 2014 10:47:06 +0200
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1e5118fa0cb1
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 #ifndef PLARENAS_H
7 #define PLARENAS_H
8
9 PR_BEGIN_EXTERN_C
10
11 typedef struct PLArenaPool PLArenaPool;
12
13 /*
14 ** Initialize an arena pool with the given name for debugging and metering,
15 ** with a minimum gross size per arena of size bytes. The net size per arena
16 ** is smaller than the gross size by a header of four pointers plus any
17 ** necessary padding for alignment.
18 **
19 ** Note: choose a gross size that's a power of two to avoid the heap allocator
20 ** rounding the size up.
21 **/
22 PR_EXTERN(void) PL_InitArenaPool(
23 PLArenaPool *pool, const char *name, PRUint32 size, PRUint32 align);
24
25 /*
26 ** Finish using arenas, freeing all memory associated with them.
27 **/
28 PR_EXTERN(void) PL_ArenaFinish(void);
29
30 /*
31 ** Free the arenas in pool. The user may continue to allocate from pool
32 ** after calling this function. There is no need to call PL_InitArenaPool()
33 ** again unless PL_FinishArenaPool(pool) has been called.
34 **/
35 PR_EXTERN(void) PL_FreeArenaPool(PLArenaPool *pool);
36
37 /*
38 ** Free the arenas in pool and finish using it altogether.
39 **/
40 PR_EXTERN(void) PL_FinishArenaPool(PLArenaPool *pool);
41
42 /*
43 ** Compact all of the arenas in a pool so that no space is wasted.
44 ** NOT IMPLEMENTED. Do not use.
45 **/
46 PR_EXTERN(void) PL_CompactArenaPool(PLArenaPool *pool);
47
48 /*
49 ** Friend functions used by the PL_ARENA_*() macros.
50 **
51 ** WARNING: do not call these functions directly. Always use the
52 ** PL_ARENA_*() macros.
53 **/
54 PR_EXTERN(void *) PL_ArenaAllocate(PLArenaPool *pool, PRUint32 nb);
55
56 PR_EXTERN(void *) PL_ArenaGrow(
57 PLArenaPool *pool, void *p, PRUint32 size, PRUint32 incr);
58
59 PR_EXTERN(void) PL_ArenaRelease(PLArenaPool *pool, char *mark);
60
61 /*
62 ** memset contents of all arenas in pool to pattern
63 */
64 PR_EXTERN(void) PL_ClearArenaPool(PLArenaPool *pool, PRInt32 pattern);
65
66 /*
67 ** A function like malloc_size() or malloc_usable_size() that measures the
68 ** size of a heap block.
69 */
70 typedef size_t (*PLMallocSizeFn)(const void *ptr);
71
72 /*
73 ** Measure all memory used by a PLArenaPool, excluding the PLArenaPool
74 ** structure.
75 */
76 PR_EXTERN(size_t) PL_SizeOfArenaPoolExcludingPool(
77 const PLArenaPool *pool, PLMallocSizeFn mallocSizeOf);
78
79 PR_END_EXTERN_C
80
81 #endif /* PLARENAS_H */
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)