Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
BIND
Commits
4cafb28a
Commit
4cafb28a
authored
Dec 18, 1998
by
Bob Halley
Browse files
change memctx to mem; cleanups; fix debug trace problem
parent
b2df2daf
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/isc/include/isc/mem.h
View file @
4cafb28a
...
...
@@ -15,8 +15,8 @@
* SOFTWARE.
*/
#ifndef ISC_MEM
CLUSTER
_H
#define ISC_MEM
CLUSTER
_H 1
#ifndef ISC_MEM_H
#define ISC_MEM_H 1
#include
<stdio.h>
#include
<stddef.h>
...
...
@@ -24,31 +24,28 @@
#include
<isc/boolean.h>
#include
<isc/result.h>
typedef
struct
isc_mem
ctx
isc_mem
ctx
_t
;
typedef
struct
isc_mem
isc_mem_t
;
#ifdef ISC_MEMCLUSTER_DEBUG
#define isc_mem_get(c, s) isc_mem_getdebug(c, s, __FILE__, \
__LINE__)
#define isc_mem_put(c, p, s) isc_mem_putdebug(c, p, s, __FILE__, \
__LINE__)
#ifdef ISC_MEM_DEBUG
#define isc_mem_get(c, s) __isc_mem_getdebug(c, s, __FILE__, __LINE__)
#define isc_mem_put(c, p, s) __isc_mem_putdebug(c, p, s, __FILE__, __LINE__)
#else
#define isc_mem_get isc_mem_get
#define isc_mem_put isc_mem_put
#endif
/* ISC_MEM
CLUSTER
_DEBUG */
#define isc_mem_get
__
isc_mem_get
#define isc_mem_put
__
isc_mem_put
#endif
/* ISC_MEM_DEBUG */
isc_result_t
isc_memctx_create
(
size_t
,
size_t
,
isc_memctx_t
**
);
void
isc_memctx_destroy
(
isc_memctx_t
**
);
void
*
isc_mem_get
(
isc_memctx_t
*
,
size_t
);
void
isc_mem_put
(
isc_memctx_t
*
,
void
*
,
size_t
);
void
*
isc_mem_getdebug
(
isc_memctx_t
*
,
size_t
,
isc_result_t
isc_mem_create
(
size_t
,
size_t
,
isc_mem_t
**
);
void
isc_mem_destroy
(
isc_mem_t
**
);
void
*
__isc_mem_get
(
isc_mem_t
*
,
size_t
);
void
__isc_mem_put
(
isc_mem_t
*
,
void
*
,
size_t
);
void
*
__isc_mem_getdebug
(
isc_mem_t
*
,
size_t
,
const
char
*
,
int
);
void
isc_mem_putdebug
(
isc_mem
ctx
_t
*
,
void
*
,
size_t
,
const
char
*
,
int
);
isc_boolean_t
isc_mem_
valid
(
isc_mem
ctx
_t
*
,
void
*
);
void
isc_mem_
stats
(
isc_mem
ctx
_t
*
,
FILE
*
);
void
*
isc_mem_allocate
(
isc_mem
ctx
_t
*
,
size_t
);
void
isc_mem_free
(
isc_mem
ctx
_t
*
,
void
*
);
void
__
isc_mem_putdebug
(
isc_mem_t
*
,
void
*
,
size_t
,
const
char
*
,
int
);
void
isc_mem_
stats
(
isc_mem_t
*
,
FILE
*
);
isc_boolean_t
isc_mem_
valid
(
isc_mem_t
*
,
void
*
);
void
*
isc_mem_allocate
(
isc_mem_t
*
,
size_t
);
void
isc_mem_free
(
isc_mem_t
*
,
void
*
);
#ifdef ISC_MEMCLUSTER_LEGACY
...
...
@@ -69,7 +66,7 @@ void isc_mem_free(isc_memctx_t *, void *);
#define memstats __memstats
int
meminit
(
size_t
,
size_t
);
isc_mem
ctx
_t
*
mem_default_context
(
void
);
isc_mem_t
*
mem_default_context
(
void
);
void
*
__memget
(
size_t
);
void
__memput
(
void
*
,
size_t
);
void
*
__memget_debug
(
size_t
,
const
char
*
,
int
);
...
...
@@ -80,4 +77,4 @@ void memstats(FILE *);
#endif
/* ISC_MEMCLUSTER_LEGACY */
#endif
/* MEM
CLUSTER
_H */
#endif
/* MEM_H */
lib/isc/mem.c
View file @
4cafb28a
...
...
@@ -56,11 +56,10 @@ struct stats {
unsigned
long
freefrags
;
};
#define MEM_MAGIC 0x4D656d43U
/* MemC. */
#define VALID_CONTEXT(c) ((c) != NULL && \
(c)->magic == MEM_MAGIC)
#define MEM_MAGIC 0x4D656d43U
/* MemC. */
#define VALID_CONTEXT(c) ((c) != NULL && (c)->magic == MEM_MAGIC)
struct
isc_mem
ctx
{
struct
isc_mem
{
unsigned
int
magic
;
isc_mutex_t
lock
;
size_t
max_size
;
...
...
@@ -112,10 +111,10 @@ quantize(size_t size) {
/* Public. */
isc_result_t
isc_mem
ctx
_create
(
size_t
init_max_size
,
size_t
target_size
,
isc_mem
ctx
_t
**
ctxp
)
isc_mem_create
(
size_t
init_max_size
,
size_t
target_size
,
isc_mem_t
**
ctxp
)
{
isc_mem
ctx
_t
*
ctx
;
isc_mem_t
*
ctx
;
REQUIRE
(
ctxp
!=
NULL
&&
*
ctxp
==
NULL
);
...
...
@@ -162,9 +161,9 @@ isc_memctx_create(size_t init_max_size, size_t target_size,
}
void
isc_mem
ctx
_destroy
(
isc_mem
ctx
_t
**
ctxp
)
{
isc_mem_destroy
(
isc_mem_t
**
ctxp
)
{
unsigned
int
i
;
isc_mem
ctx
_t
*
ctx
;
isc_mem_t
*
ctx
;
REQUIRE
(
ctxp
!=
NULL
);
ctx
=
*
ctxp
;
...
...
@@ -186,8 +185,10 @@ isc_memctx_destroy(isc_memctx_t **ctxp) {
*
ctxp
=
NULL
;
}
static
void
more_basic_blocks
(
isc_mem
ctx
_t
*
ctx
)
{
more_basic_blocks
(
isc_mem_t
*
ctx
)
{
void
*
new
;
unsigned
char
*
curr
,
*
next
;
unsigned
char
*
first
,
*
last
;
...
...
@@ -240,7 +241,7 @@ more_basic_blocks(isc_memctx_t *ctx) {
}
void
*
isc_mem_get
(
isc_mem
ctx
_t
*
ctx
,
size_t
size
)
{
__
isc_mem_get
(
isc_mem_t
*
ctx
,
size_t
size
)
{
size_t
new_size
=
quantize
(
size
);
void
*
ret
;
...
...
@@ -315,12 +316,8 @@ isc_mem_get(isc_memctx_t *ctx, size_t size) {
return
(
ret
);
}
/*
* This is a call from an external caller,
* so we want to count this as a user "put".
*/
void
isc_mem_put
(
isc_mem
ctx
_t
*
ctx
,
void
*
mem
,
size_t
size
)
{
__
isc_mem_put
(
isc_mem_t
*
ctx
,
void
*
mem
,
size_t
size
)
{
size_t
new_size
=
quantize
(
size
);
REQUIRE
(
size
>
0
);
...
...
@@ -354,29 +351,29 @@ isc_mem_put(isc_memctx_t *ctx, void *mem, size_t size) {
}
void
*
isc_mem_getdebug
(
isc_mem
ctx
_t
*
ctx
,
size_t
size
,
const
char
*
file
,
int
line
)
{
__
isc_mem_getdebug
(
isc_mem_t
*
ctx
,
size_t
size
,
const
char
*
file
,
int
line
)
{
void
*
ptr
;
ptr
=
isc_mem_get
(
ctx
,
size
);
ptr
=
__
isc_mem_get
(
ctx
,
size
);
fprintf
(
stderr
,
"%s:%d: mem_get(%p, %lu) -> %p
\n
"
,
file
,
line
,
ctx
,
(
unsigned
long
)
size
,
ptr
);
return
(
ptr
);
}
void
isc_mem_putdebug
(
isc_mem
ctx
_t
*
ctx
,
void
*
ptr
,
size_t
size
,
const
char
*
file
,
__
isc_mem_putdebug
(
isc_mem_t
*
ctx
,
void
*
ptr
,
size_t
size
,
const
char
*
file
,
int
line
)
{
fprintf
(
stderr
,
"%s:%d: mem_put(%p, %p, %lu)
\n
"
,
file
,
line
,
ctx
,
ptr
,
(
unsigned
long
)
size
);
isc_mem_put
(
ctx
,
ptr
,
size
);
__
isc_mem_put
(
ctx
,
ptr
,
size
);
}
/*
* Print the stats[] on the stream "out" with suitable formatting.
*/
void
isc_mem_stats
(
isc_mem
ctx
_t
*
ctx
,
FILE
*
out
)
{
isc_mem_stats
(
isc_mem_t
*
ctx
,
FILE
*
out
)
{
size_t
i
;
REQUIRE
(
VALID_CONTEXT
(
ctx
));
...
...
@@ -402,7 +399,7 @@ isc_mem_stats(isc_memctx_t *ctx, FILE *out) {
}
isc_boolean_t
isc_mem_valid
(
isc_mem
ctx
_t
*
ctx
,
void
*
ptr
)
{
isc_mem_valid
(
isc_mem_t
*
ctx
,
void
*
ptr
)
{
unsigned
char
*
cp
=
ptr
;
isc_boolean_t
result
=
ISC_FALSE
;
...
...
@@ -422,7 +419,7 @@ isc_mem_valid(isc_memctx_t *ctx, void *ptr) {
*/
void
*
isc_mem_allocate
(
isc_mem
ctx
_t
*
ctx
,
size_t
size
)
{
isc_mem_allocate
(
isc_mem_t
*
ctx
,
size_t
size
)
{
size_info
*
si
;
size
+=
ALIGNMENT_SIZE
;
...
...
@@ -434,7 +431,7 @@ isc_mem_allocate(isc_memctx_t *ctx, size_t size) {
}
void
isc_mem_free
(
isc_mem
ctx
_t
*
ctx
,
void
*
ptr
)
{
isc_mem_free
(
isc_mem_t
*
ctx
,
void
*
ptr
)
{
size_info
*
si
;
si
=
&
(((
size_info
*
)
ptr
)[
-
1
]);
...
...
@@ -447,7 +444,7 @@ isc_mem_free(isc_memctx_t *ctx, void *ptr) {
* Public Legacy.
*/
static
isc_mem
ctx
_t
*
default_context
=
NULL
;
static
isc_mem_t
*
default_context
=
NULL
;
int
meminit
(
size_t
init_max_size
,
size_t
target_size
)
{
...
...
@@ -457,7 +454,7 @@ meminit(size_t init_max_size, size_t target_size) {
return
(
isc_mem_create
(
init_max_size
,
target_size
,
&
default_context
));
}
isc_mem
ctx
_t
isc_mem_t
*
mem_default_context
(
void
)
{
/* need default_context lock here */
if
(
default_context
==
NULL
&&
meminit
(
0
,
0
)
==
-
1
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment