Apache Portable Runtime
Toggle main menu visibility
Loading...
Searching...
No Matches
apr_rmm.h
Go to the documentation of this file.
1
/* Licensed to the Apache Software Foundation (ASF) under one or more
2
* contributor license agreements. See the NOTICE file distributed with
3
* this work for additional information regarding copyright ownership.
4
* The ASF licenses this file to You under the Apache License, Version 2.0
5
* (the "License"); you may not use this file except in compliance with
6
* the License. You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
#ifndef APR_RMM_H
18
#define APR_RMM_H
19
/**
20
* @file apr_rmm.h
21
* @brief APR-UTIL Relocatable Memory Management Routines
22
*/
23
/**
24
* @defgroup APR_Util_RMM Relocatable Memory Management Routines
25
* @ingroup APR_Util
26
* @{
27
*/
28
29
#include "
apr.h
"
30
#include "
apr_pools.h
"
31
#include "
apr_errno.h
"
32
#include "apu.h"
33
#include "
apr_anylock.h
"
34
35
#ifdef __cplusplus
36
extern
"C"
{
37
#endif
/* __cplusplus */
38
39
/** Structure to access Relocatable, Managed Memory */
40
typedef
struct
apr_rmm_t
apr_rmm_t
;
41
42
/** Fundamental allocation unit, within a specific apr_rmm_t */
43
typedef
apr_size_t
apr_rmm_off_t
;
44
45
/**
46
* Initialize a relocatable memory block to be managed by the apr_rmm API.
47
* @param rmm The relocatable memory block
48
* @param lock An apr_anylock_t of the appropriate type of lock, or NULL
49
* if no locking is required.
50
* @param membuf The block of relocatable memory to be managed
51
* @param memsize The size of relocatable memory block to be managed
52
* @param cont The pool to use for local storage and management
53
* @remark Both @param membuf and @param memsize must be aligned
54
* (for instance using APR_ALIGN_DEFAULT).
55
*/
56
APU_DECLARE(
apr_status_t
)
apr_rmm_init
(
apr_rmm_t
**rmm,
apr_anylock_t
*lock,
57
void
*membuf, apr_size_t memsize,
58
apr_pool_t
*cont);
59
60
/**
61
* Destroy a managed memory block.
62
* @param rmm The relocatable memory block to destroy
63
*/
64
APU_DECLARE(
apr_status_t
)
apr_rmm_destroy
(
apr_rmm_t
*rmm);
65
66
/**
67
* Attach to a relocatable memory block already managed by the apr_rmm API.
68
* @param rmm The relocatable memory block
69
* @param lock An apr_anylock_t of the appropriate type of lock
70
* @param membuf The block of relocatable memory already under management
71
* @param cont The pool to use for local storage and management
72
*/
73
APU_DECLARE(
apr_status_t
)
apr_rmm_attach
(
apr_rmm_t
**rmm,
apr_anylock_t
*lock,
74
void
*membuf,
apr_pool_t
*cont);
75
76
/**
77
* Detach from the managed block of memory.
78
* @param rmm The relocatable memory block to detach from
79
*/
80
APU_DECLARE(
apr_status_t
)
apr_rmm_detach
(
apr_rmm_t
*rmm);
81
82
/**
83
* Allocate memory from the block of relocatable memory.
84
* @param rmm The relocatable memory block
85
* @param reqsize How much memory to allocate
86
*/
87
APU_DECLARE(
apr_rmm_off_t
)
apr_rmm_malloc
(
apr_rmm_t
*rmm, apr_size_t reqsize);
88
89
/**
90
* Realloc memory from the block of relocatable memory.
91
* @param rmm The relocatable memory block
92
* @param entity The memory allocation to realloc
93
* @param reqsize The new size
94
*/
95
APU_DECLARE(
apr_rmm_off_t
)
apr_rmm_realloc
(
apr_rmm_t
*rmm,
void
*entity, apr_size_t reqsize);
96
97
/**
98
* Allocate memory from the block of relocatable memory and initialize it to zero.
99
* @param rmm The relocatable memory block
100
* @param reqsize How much memory to allocate
101
*/
102
APU_DECLARE(
apr_rmm_off_t
)
apr_rmm_calloc
(
apr_rmm_t
*rmm, apr_size_t reqsize);
103
104
/**
105
* Free allocation returned by apr_rmm_malloc or apr_rmm_calloc.
106
* @param rmm The relocatable memory block
107
* @param entity The memory allocation to free
108
*/
109
APU_DECLARE(
apr_status_t
)
apr_rmm_free
(
apr_rmm_t
*rmm,
apr_rmm_off_t
entity);
110
111
/**
112
* Retrieve the physical address of a relocatable allocation of memory
113
* @param rmm The relocatable memory block
114
* @param entity The memory allocation to free
115
* @return address The address, aligned with APR_ALIGN_DEFAULT.
116
*/
117
APU_DECLARE(
void
*)
apr_rmm_addr_get
(
apr_rmm_t
*rmm,
apr_rmm_off_t
entity);
118
119
/**
120
* Compute the offset of a relocatable allocation of memory
121
* @param rmm The relocatable memory block
122
* @param entity The physical address to convert to an offset
123
*/
124
APU_DECLARE(
apr_rmm_off_t
)
apr_rmm_offset_get
(
apr_rmm_t
*rmm,
void
*entity);
125
126
/**
127
* Compute the required overallocation of memory needed to fit n allocs
128
* @param n The number of alloc/calloc regions desired
129
*/
130
APU_DECLARE(apr_size_t)
apr_rmm_overhead_get
(
int
n);
131
132
#ifdef __cplusplus
133
}
134
#endif
135
/** @} */
136
#endif
/* ! APR_RMM_H */
137
apr.h
APR Platform Definitions.
apr_anylock.h
APR-Util transparent any lock flavor wrapper.
apr_errno.h
APR Error Codes.
apr_pools.h
APR memory allocation.
apr_rmm_calloc
apr_rmm_off_t apr_rmm_calloc(apr_rmm_t *rmm, apr_size_t reqsize)
apr_rmm_detach
apr_status_t apr_rmm_detach(apr_rmm_t *rmm)
apr_rmm_addr_get
void * apr_rmm_addr_get(apr_rmm_t *rmm, apr_rmm_off_t entity)
apr_rmm_malloc
apr_rmm_off_t apr_rmm_malloc(apr_rmm_t *rmm, apr_size_t reqsize)
apr_rmm_offset_get
apr_rmm_off_t apr_rmm_offset_get(apr_rmm_t *rmm, void *entity)
apr_rmm_init
apr_status_t apr_rmm_init(apr_rmm_t **rmm, apr_anylock_t *lock, void *membuf, apr_size_t memsize, apr_pool_t *cont)
apr_rmm_off_t
apr_size_t apr_rmm_off_t
Definition
apr_rmm.h:43
apr_rmm_realloc
apr_rmm_off_t apr_rmm_realloc(apr_rmm_t *rmm, void *entity, apr_size_t reqsize)
apr_rmm_destroy
apr_status_t apr_rmm_destroy(apr_rmm_t *rmm)
apr_rmm_free
apr_status_t apr_rmm_free(apr_rmm_t *rmm, apr_rmm_off_t entity)
apr_rmm_t
struct apr_rmm_t apr_rmm_t
Definition
apr_rmm.h:40
apr_rmm_attach
apr_status_t apr_rmm_attach(apr_rmm_t **rmm, apr_anylock_t *lock, void *membuf, apr_pool_t *cont)
apr_rmm_overhead_get
apr_size_t apr_rmm_overhead_get(int n)
apr_status_t
int apr_status_t
Definition
apr_errno.h:44
apr_pool_t
struct apr_pool_t apr_pool_t
Definition
apr_pools.h:60
apr_anylock_t
Definition
apr_anylock.h:29
usr
include
apr-1
apr_rmm.h
Generated by
1.17.0